[mb-commits] r13709 - in search_server/trunk: index/src/main/java/org/musicbrainz/search index/src/main/java/org/musicbrainz/search/index index/src/test/java/org/musicbrainz/search/index servlet/src/main/java/org/musicbrainz/search/servlet servlet/src/main/java/org/musicbrainz/search/servlet/mmd2 servlet/src/main/resources servlet/src/test/java/org/musicbrainz/search/servlet
[email protected] Mon, 30 Sep 2013 13:43:51 +0000
| Newsgroups | gmane.comp.audio.musicbrainz.cvs |
|---|---|
| Message-ID | <E1VQdlP-00067X-HI@wiley> |
Author: ijabz
Date: 2013-09-30 13:43:50 +0000 (Mon, 30 Sep 2013)
New Revision: 13709
Added:
search_server/trunk/index/src/main/java/org/musicbrainz/search/index/PlaceIndex.java
search_server/trunk/index/src/main/java/org/musicbrainz/search/index/PlaceIndexField.java
search_server/trunk/index/src/test/java/org/musicbrainz/search/index/PlaceIndexTest.java
search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/PlaceDismaxSearch.java
search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/PlaceQueryParser.java
search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/PlaceSearch.java
search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd2/PlaceWriter.java
search_server/trunk/servlet/src/test/java/org/musicbrainz/search/servlet/FindPlaceTest.java
Modified:
search_server/trunk/index/src/main/java/org/musicbrainz/search/MbDocument.java
search_server/trunk/index/src/main/java/org/musicbrainz/search/index/AreaIndex.java
search_server/trunk/index/src/main/java/org/musicbrainz/search/index/IndexBuilder.java
search_server/trunk/index/src/main/java/org/musicbrainz/search/index/IndexOptions.java
search_server/trunk/index/src/test/java/org/musicbrainz/search/index/AbstractIndexTest.java
search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/ResourceType.java
search_server/trunk/servlet/src/main/resources/oxml.xml
Log:
SEARCH-321:Places Support
Modified: search_server/trunk/index/src/main/java/org/musicbrainz/search/MbDocument.java
===================================================================
--- search_server/trunk/index/src/main/java/org/musicbrainz/search/MbDocument.java 2013-09-26 15:27:04 UTC (rev 13708)
+++ search_server/trunk/index/src/main/java/org/musicbrainz/search/MbDocument.java 2013-09-30 13:43:50 UTC (rev 13709)
@@ -94,6 +94,20 @@
}
/**
+ * Add float numeric field, handled specially so that ranges searches work properly
+ *
+ * @param field
+ * @param value
+ */
+ public void addNumericField(IndexField field,Float value) {
+
+ BytesRef bytes = new BytesRef(NumericUtils.BUF_SIZE_INT);
+ NumericUtils.intToPrefixCoded(NumericUtils.floatToSortableInt(value), 0, bytes);
+ doc.add(new Field(field.getName(),bytes.utf8ToString(), field.getFieldType()));
+ }
+
+
+ /**
* Add long numeric field, handled specially so that ranges searches work properly
*
* @param field
Modified: search_server/trunk/index/src/main/java/org/musicbrainz/search/index/AreaIndex.java
===================================================================
--- search_server/trunk/index/src/main/java/org/musicbrainz/search/index/AreaIndex.java 2013-09-26 15:27:04 UTC (rev 13708)
+++ search_server/trunk/index/src/main/java/org/musicbrainz/search/index/AreaIndex.java 2013-09-30 13:43:50 UTC (rev 13709)
@@ -63,7 +63,7 @@
}
public Analyzer getAnalyzer() {
- return DatabaseIndex.getAnalyzer(TagIndexField.class);
+ return DatabaseIndex.getAnalyzer(AreaIndexField.class);
}
public int getMaxId() throws SQLException {
@@ -84,7 +84,7 @@
public void init(IndexWriter indexWriter, boolean isUpdater) throws SQLException {
- addPreparedStatement("AREA",
+ addPreparedStatement("PLACE",
"SELECT a.id, a.gid, a.name, a.sort_name, at.name as type, " +
" begin_date_year, begin_date_month, begin_date_day, " +
" end_date_year, end_date_month, end_date_day, ended" +
@@ -217,7 +217,7 @@
iso3List.getIso31663Code().add(rs.getString("code"));
}
- st = getPreparedStatement("AREA");
+ st = getPreparedStatement("PLACE");
st.setInt(1, min);
st.setInt(2, max);
rs = st.executeQuery();
Modified: search_server/trunk/index/src/main/java/org/musicbrainz/search/index/IndexBuilder.java
===================================================================
--- search_server/trunk/index/src/main/java/org/musicbrainz/search/index/IndexBuilder.java 2013-09-26 15:27:04 UTC (rev 13708)
+++ search_server/trunk/index/src/main/java/org/musicbrainz/search/index/IndexBuilder.java 2013-09-30 13:43:50 UTC (rev 13709)
@@ -121,6 +121,7 @@
new ReleaseGroupIndex(mainDbConn),
new LabelIndex(mainDbConn),
new AreaIndex(mainDbConn),
+ new PlaceIndex(mainDbConn),
new AnnotationIndex(mainDbConn),
new TagIndex(mainDbConn),
new CDStubIndex(mainDbConn), //Note different db
Modified: search_server/trunk/index/src/main/java/org/musicbrainz/search/index/IndexOptions.java
===================================================================
--- search_server/trunk/index/src/main/java/org/musicbrainz/search/index/IndexOptions.java 2013-09-26 15:27:04 UTC (rev 13708)
+++ search_server/trunk/index/src/main/java/org/musicbrainz/search/index/IndexOptions.java 2013-09-30 13:43:50 UTC (rev 13709)
@@ -69,8 +69,8 @@
public String getFreeDBDump() { return freeDBDump; }
// Selection of indexes to build
- @Option(name="--indexes", usage="A comma-separated list of indexes to build (area,artist,releasegroup,release,recording,label,work,tag,annotation,cdstub,freedb)")
- private String indexes = "area,artist,label,release,recording,releasegroup,work,tag,annotation,cdstub,freedb";
+ @Option(name="--indexes", usage="A comma-separated list of indexes to build (area,artist,place,releasegroup,release,recording,label,work,tag,annotation,cdstub,freedb)")
+ private String indexes = "area,artist,label,place,release,recording,releasegroup,work,tag,annotation,cdstub,freedb";
public ArrayList<String> selectedIndexes() { return new ArrayList<String>(Arrays.asList(indexes.split(","))); }
public boolean buildIndex(String indexName) { return selectedIndexes().contains(indexName); }
Modified: search_server/trunk/index/src/test/java/org/musicbrainz/search/index/AbstractIndexTest.java
===================================================================
--- search_server/trunk/index/src/test/java/org/musicbrainz/search/index/AbstractIndexTest.java 2013-09-26 15:27:04 UTC (rev 13708)
+++ search_server/trunk/index/src/test/java/org/musicbrainz/search/index/AbstractIndexTest.java 2013-09-30 13:43:50 UTC (rev 13709)
@@ -71,6 +71,15 @@
assertEquals(value, NumericUtils.prefixCodedToInt(termsEnum.term()));
}
+ protected void checkTerm(IndexReader ir, IndexField field, float value) throws IOException {
+
+ Fields fields = MultiFields.getFields(ir);
+ Terms terms = fields.terms(field.getName());
+ TermsEnum termsEnum = terms.iterator(null);
+ termsEnum.next();
+ assertEquals(value, NumericUtils.sortableIntToFloat(NumericUtils.prefixCodedToInt(termsEnum.term())),0);
+ }
+
/** Check nth term of given field, terms are listed lexigraphically
* Use when field is indexed. but not stored
*
@@ -183,7 +192,24 @@
stmt.addBatch("DROP TABLE link_type");
stmt.addBatch("DROP TABLE link_attribute");
stmt.addBatch("DROP TABLE link_attribute_type");
-
+
+ stmt.addBatch("DROP TABLE place");
+ stmt.addBatch("DROP TABLE place_gid_redirect");
+ stmt.addBatch("DROP TABLE place_type");
+ stmt.addBatch("DROP TABLE place_alias");
+ stmt.addBatch("DROP TABLE place_alias_type");
+ stmt.addBatch("DROP TABLE place_annotation");
+ stmt.addBatch("DROP TABLE l_area_place");
+ stmt.addBatch("DROP TABLE l_artist_place");
+ stmt.addBatch("DROP TABLE l_label_place");
+ stmt.addBatch("DROP TABLE l_place_place");
+ stmt.addBatch("DROP TABLE l_place_recording");
+ stmt.addBatch("DROP TABLE l_place_release");
+ stmt.addBatch("DROP TABLE l_place_release_group");
+ stmt.addBatch("DROP TABLE l_place_url");
+ stmt.addBatch("DROP TABLE l_place_work");
+ stmt.addBatch("DROP TABLE l_place_tag");
+
stmt.addBatch("DROP TABLE replication_control");
stmt.addBatch("DROP TABLE dbmirror_pending");
stmt.addBatch("DROP TABLE dbmirror_pendingdata");
@@ -211,6 +237,7 @@
setupAnnotationTables(stmt);
setupCDStubTables(stmt);
setupWorkTables(stmt);
+ setupPlaceTables(stmt);
setupReplicationTables(stmt);
insertReferenceData(stmt);
@@ -860,6 +887,178 @@
")");
}
+ protected void setupPlaceTables(Statement stmt) throws Exception {
+
+ PlaceIndex.isUsingH2Db=true;
+
+ stmt.addBatch("create domain point as array check (array_length(value) = 2)");
+ stmt.addBatch("CREATE TABLE place (" +
+ " id SERIAL," +
+ " gid uuid," +
+ " name VARCHAR," +
+ " type INTEGER," +
+ " address VARCHAR ," +
+ " area INTEGER," +
+ " coordinates POINT," +
+ " comment VARCHAR(255)," +
+ " edits_pending INTEGER ," +
+ " last_updated TIMESTAMP," +
+ " begin_date_year SMALLINT," +
+ " begin_date_month SMALLINT," +
+ " begin_date_day SMALLINT," +
+ " end_date_year SMALLINT," +
+ " end_date_month SMALLINT," +
+ " end_date_day SMALLINT," +
+ " ended BOOLEAN " +
+ ")");
+
+ stmt.addBatch("CREATE TABLE place_gid_redirect" +
+ "(" +
+ " gid UUID NOT NULL," +
+ " new_id INTEGER NOT NULL," +
+ " created TIMESTAMP" +
+ ")");
+
+
+
+ stmt.addBatch("CREATE TABLE place_type (" +
+ " id SERIAL," +
+ " name VARCHAR(255) NOT NULL" +
+ ")");
+
+
+ stmt.addBatch("CREATE TABLE place_alias" +
+ "(" +
+ " id SERIAL," +
+ " place INTEGER NOT NULL," +
+ " name VARCHAR NOT NULL," +
+ " locale VARCHAR," +
+ " edits_pending INTEGER ," +
+ " last_updated TIMESTAMP," +
+ " type INTEGER," +
+ " sort_name VARCHAR ," +
+ " begin_date_year SMALLINT," +
+ " begin_date_month SMALLINT," +
+ " begin_date_day SMALLINT," +
+ " end_date_year SMALLINT," +
+ " end_date_month SMALLINT," +
+ " end_date_day SMALLINT," +
+ " primary_for_locale BOOLEAN ," +
+ " ended BOOLEAN " +
+ ")");
+
+ stmt.addBatch("CREATE TABLE place_alias_type (" +
+ " id SERIAL," +
+ " name TEXT NOT NULL" +
+ ")");
+
+ stmt.addBatch("CREATE TABLE place_annotation" +
+ "(" +
+ " place INTEGER NOT NULL," +
+ " annotation INTEGER NOT NULL," +
+ ")");
+
+ stmt.addBatch("CREATE TABLE l_area_place" +
+ "(" +
+ " id SERIAL," +
+ " link INTEGER NOT NULL," +
+ " entity0 INTEGER NOT NULL," +
+ " entity1 INTEGER NOT NULL," +
+ " edits_pending INTEGER NOT NULL," +
+ " last_updated TIMESTAMP" +
+ ")");
+
+ stmt.addBatch("CREATE TABLE l_artist_place" +
+ "(" +
+ " id SERIAL," +
+ " link INTEGER NOT NULL," +
+ " entity0 INTEGER NOT NULL," +
+ " entity1 INTEGER NOT NULL," +
+ " edits_pending INTEGER NOT NULL," +
+ " last_updated TIMESTAMP" +
+ ")");
+
+ stmt.addBatch("CREATE TABLE l_label_place" +
+ "(" +
+ " id SERIAL," +
+ " link INTEGER NOT NULL," +
+ " entity0 INTEGER NOT NULL," +
+ " entity1 INTEGER NOT NULL," +
+ " edits_pending INTEGER NOT NULL," +
+ " last_updated TIMESTAMP" +
+ ")");
+
+ stmt.addBatch("CREATE TABLE l_place_place" +
+ "(" +
+ " id SERIAL," +
+ " link INTEGER NOT NULL," +
+ " entity0 INTEGER NOT NULL," +
+ " entity1 INTEGER NOT NULL," +
+ " edits_pending INTEGER NOT NULL," +
+ " last_updated TIMESTAMP" +
+ ")");
+
+ stmt.addBatch("CREATE TABLE l_place_recording" +
+ "(" +
+ " id SERIAL," +
+ " link INTEGER NOT NULL," +
+ " entity0 INTEGER NOT NULL," +
+ " entity1 INTEGER NOT NULL," +
+ " edits_pending INTEGER NOT NULL," +
+ " last_updated TIMESTAMP" +
+ ")");
+
+ stmt.addBatch("CREATE TABLE l_place_release" +
+ "(" +
+ " id SERIAL," +
+ " link INTEGER NOT NULL," +
+ " entity0 INTEGER NOT NULL," +
+ " entity1 INTEGER NOT NULL," +
+ " edits_pending INTEGER NOT NULL," +
+ " last_updated TIMESTAMP" +
+ ")");
+
+ stmt.addBatch("CREATE TABLE l_place_release_group" +
+ "(" +
+ " id SERIAL," +
+ " link INTEGER NOT NULL," +
+ " entity0 INTEGER NOT NULL," +
+ " entity1 INTEGER NOT NULL," +
+ " edits_pending INTEGER NOT NULL," +
+ " last_updated TIMESTAMP" +
+ ")");
+
+ stmt.addBatch("CREATE TABLE l_place_url" +
+ "(" +
+ " id SERIAL," +
+ " link INTEGER NOT NULL," +
+ " entity0 INTEGER NOT NULL," +
+ " entity1 INTEGER NOT NULL," +
+ " edits_pending INTEGER NOT NULL ," +
+ " last_updated TIMESTAMP" +
+ ")");
+
+ stmt.addBatch("CREATE TABLE l_place_work" +
+ "(" +
+ " id SERIAL," +
+ " link INTEGER NOT NULL," +
+ " entity0 INTEGER NOT NULL," +
+ " entity1 INTEGER NOT NULL," +
+ " edits_pending INTEGER NOT NULL," +
+ " last_updated TIMESTAMP" +
+ ")");
+
+ stmt.addBatch("CREATE TABLE place_tag" +
+ "(" +
+ " place INTEGER NOT NULL," +
+ " tag INTEGER NOT NULL," +
+ " count INTEGER NOT NULL," +
+ " last_updated TIMESTAMP" +
+ ")");
+
+ }
+
+
protected void setupReplicationTables(Statement stmt) throws Exception {
stmt.addBatch("CREATE TABLE replication_control (" +
Modified: search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/ResourceType.java
===================================================================
--- search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/ResourceType.java 2013-09-26 15:27:04 UTC (rev 13708)
+++ search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/ResourceType.java 2013-09-30 13:43:50 UTC (rev 13709)
@@ -13,6 +13,7 @@
AREA("area", AreaIndex.class, AreaSearch.class, AreaDismaxSearch.class, MusicbrainzSimilarity.class, false),
ARTIST("artist", ArtistIndex.class, ArtistSearch.class, ArtistDismaxSearch.class, MusicbrainzSimilarity.class, true),
LABEL("label", LabelIndex.class, LabelSearch.class, LabelDismaxSearch.class, MusicbrainzSimilarity.class, true),
+ PLACE("place", PlaceIndex.class, PlaceSearch.class, PlaceDismaxSearch.class, MusicbrainzSimilarity.class, false),
RELEASE("release", ReleaseIndex.class, ReleaseSearch.class, ReleaseDismaxSearch.class, true),
RELEASE_GROUP("release-group", ReleaseGroupIndex.class, ReleaseGroupSearch.class, ReleaseGroupDismaxSearch.class, ReleaseGroupSimilarity.class, true),
RECORDING("recording", RecordingIndex.class, RecordingSearch.class, RecordingDismaxSearch.class, RecordingSimilarity.class, true),
Modified: search_server/trunk/servlet/src/main/resources/oxml.xml
===================================================================
--- search_server/trunk/servlet/src/main/resources/oxml.xml 2013-09-26 15:27:04 UTC (rev 13708)
+++ search_server/trunk/servlet/src/main/resources/oxml.xml 2013-09-30 13:43:50 UTC (rev 13709)
@@ -5,6 +5,11 @@
<java-types>
<java-type name="Metadata">
<java-attributes>
+ <xml-element java-attribute="placeList" xml-path="."/>
+ </java-attributes>
+ </java-type>
+ <java-type name="Metadata">
+ <java-attributes>
<xml-element java-attribute="areaList" xml-path="."/>
</java-attributes>
</java-type>
@@ -195,6 +200,11 @@
<xml-element java-attribute="area" name="areas"/>
</java-attributes>
</java-type>
+ <java-type name="PlaceList">
+ <java-attributes>
+ <xml-element java-attribute="place" name="places"/>
+ </java-attributes>
+ </java-type>
<java-type name="ReleaseList">
<java-attributes>
<xml-element java-attribute="release" name="releases"/>
@@ -285,6 +295,11 @@
<xml-element java-attribute="aliasList" xml-path="."/>
</java-attributes>
</java-type>
+ <java-type name="Place">
+ <java-attributes>
+ <xml-element java-attribute="aliasList" xml-path="."/>
+ </java-attributes>
+ </java-type>
<java-type name="Artist">
<java-attributes>
<xml-element java-attribute="aliasList" xml-path="."/>