[mb-commits] r13727 - in search_server/trunk: 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/test/java/org/musicbrainz/search/servlet
[email protected] Fri, 04 Oct 2013 10:23:59 +0000
| Newsgroups | gmane.comp.audio.musicbrainz.cvs |
|---|---|
| Message-ID | <E1VS2YB-0007gc-4W@wiley> |
Author: ijabz
Date: 2013-10-04 10:23:58 +0000 (Fri, 04 Oct 2013)
New Revision: 13727
Modified:
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/PlaceSearch.java
search_server/trunk/servlet/src/test/java/org/musicbrainz/search/servlet/FindPlaceTest.java
Log:
SEARCH-325:Add area to output returned from place search
Modified: search_server/trunk/index/src/main/java/org/musicbrainz/search/index/PlaceIndex.java
===================================================================
--- search_server/trunk/index/src/main/java/org/musicbrainz/search/index/PlaceIndex.java 2013-10-04 06:44:23 UTC (rev 13726)
+++ search_server/trunk/index/src/main/java/org/musicbrainz/search/index/PlaceIndex.java 2013-10-04 10:23:58 UTC (rev 13727)
@@ -89,10 +89,12 @@
addPreparedStatement("PLACE",
"SELECT p.coordinates, p.id, p.gid, p.name, p.address, pt.name as type, " +
- " begin_date_year, begin_date_month, begin_date_day, " +
- " end_date_year, end_date_month, end_date_day, ended" +
+ " p.begin_date_year, p.begin_date_month, p.begin_date_day, " +
+ " p.end_date_year, p.end_date_month, p.end_date_day, p.ended, p.comment, " +
+ " a1.gid as area_gid, a1.name as area_name, a1.sort_name as area_sortname " +
" FROM place p" +
" LEFT JOIN place_type pt ON p.type = pt.id " +
+ " LEFT JOIN area a1 on p.area = a1.id" +
" WHERE p.id BETWEEN ? AND ? " +
" ORDER BY p.id");
@@ -186,6 +188,12 @@
doc.addField(PlaceIndexField.PLACE, name);
place.setName(name);
+ String comment = rs.getString("comment");
+ if (!Strings.isNullOrEmpty(comment)) {
+ doc.addField(PlaceIndexField.COMMENT, comment);
+ place.setDisambiguation(comment);
+ }
+
String type = rs.getString("type");
doc.addFieldOrUnknown(PlaceIndexField.TYPE, type);
if (!Strings.isNullOrEmpty(type)) {
@@ -232,7 +240,22 @@
doc.addField(PlaceIndexField.ADDRESS, address);
place.setAddress(address);
}
+ String areaId = rs.getString("area_gid");
+ if(areaId!=null) {
+ DefAreaElementInner area = of.createDefAreaElementInner();
+ area.setId(areaId);
+ String areaName = rs.getString("area_name");
+ area.setName(areaName);
+ doc.addFieldOrNoValue(ArtistIndexField.AREA, areaName);
+ String areaSortName = rs.getString("area_sortname");
+ area.setSortName(areaSortName);
+ place.setArea(area);
+ }
+ else {
+ doc.addField(ArtistIndexField.AREA, Index.NO_VALUE);
+ }
+
boolean ended = rs.getBoolean("ended");
doc.addFieldOrUnknown(ArtistIndexField.ENDED, Boolean.toString(ended));
Modified: search_server/trunk/index/src/main/java/org/musicbrainz/search/index/PlaceIndexField.java
===================================================================
--- search_server/trunk/index/src/main/java/org/musicbrainz/search/index/PlaceIndexField.java 2013-10-04 06:44:23 UTC (rev 13726)
+++ search_server/trunk/index/src/main/java/org/musicbrainz/search/index/PlaceIndexField.java 2013-10-04 10:23:58 UTC (rev 13727)
@@ -43,6 +43,8 @@
ID ("_id", MusicBrainzFieldTypes.TEXT_STORED_ANALYZED_NO_NORMS, new KeywordAnalyzer()),
PLACE_ID ("pid", MusicBrainzFieldTypes.TEXT_STORED_NOT_ANALYZED_NO_NORMS, new KeywordAnalyzer()),
ALIAS ("alias", MusicBrainzFieldTypes.TEXT_NOT_STORED_ANALYZED, new MusicbrainzWithPosGapAnalyzer()),
+ AREA ("area", MusicBrainzFieldTypes.TEXT_NOT_STORED_ANALYZED, new MusicbrainzAnalyzer()),
+ COMMENT ("comment", MusicBrainzFieldTypes.TEXT_NOT_STORED_ANALYZED),
PLACE ("place", MusicBrainzFieldTypes.TEXT_STORED_ANALYZED, new MusicbrainzAnalyzer()),
ADDRESS ("address", MusicBrainzFieldTypes.TEXT_STORED_ANALYZED, new MusicbrainzAnalyzer()),
BEGIN ("begin", MusicBrainzFieldTypes.TEXT_NOT_STORED_NOT_ANALYZED_NO_NORMS, new KeywordAnalyzer()),
Modified: search_server/trunk/index/src/test/java/org/musicbrainz/search/index/PlaceIndexTest.java
===================================================================
--- search_server/trunk/index/src/test/java/org/musicbrainz/search/index/PlaceIndexTest.java 2013-10-04 06:44:23 UTC (rev 13726)
+++ search_server/trunk/index/src/test/java/org/musicbrainz/search/index/PlaceIndexTest.java 2013-10-04 10:23:58 UTC (rev 13727)
@@ -6,11 +6,13 @@
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.store.RAMDirectory;
import org.junit.Test;
+import org.musicbrainz.mmd2.DefAreaElementInner;
import org.musicbrainz.mmd2.Label;
import org.musicbrainz.mmd2.Place;
import java.sql.Statement;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
public class PlaceIndexTest extends AbstractIndexTest {
@@ -33,24 +35,16 @@
private void addPlaceOne() throws Exception {
Statement stmt = conn.createStatement();
- stmt.addBatch("INSERT INTO place (coordinates, id, gid,name,address,type, begin_date_year, end_date_year) VALUES ((180.56,120),1, 'aa95182f-df0a-3ad6-8bfb-4b63482cd276', 'Manor Studios','1 New Street',1,1830,2020)");
+ stmt.addBatch("INSERT INTO area (id, gid, name, sort_name) VALUES (38, 'b8caa692-704d-412b-a410-4fbcf5b9c796','County of OxfordShire','Oxfordshire County')");
+ stmt.addBatch("INSERT INTO place (comment,coordinates, id, gid,name,address,type, begin_date_year, end_date_year,area) VALUES ('comment',(180.56,120),1, 'aa95182f-df0a-3ad6-8bfb-4b63482cd276', 'Manor Studios','1 New Street',1,1830,2020,38)");
stmt.addBatch("INSERT INTO place_type(id, name) VALUES (1, 'Studio')");
stmt.addBatch("INSERT INTO place_alias (id, place, name, sort_name, primary_for_locale, locale, type ) VALUES (3, 1, 'Manox','Manoy', true, 'en',1)");
stmt.executeBatch();
stmt.close();
}
- private void addPlaceTwo() throws Exception {
- Statement stmt = conn.createStatement();
- stmt.addBatch("INSERT INTO place (id, gid,name,address,type, begin_date_year, end_date_year) VALUES (1, 'aa95182f-df0a-3ad6-8bfb-4b63482cd276', 'Manor Studios','1 New Street',1,1830,2020)");
- stmt.addBatch("INSERT INTO place_type(id, name) VALUES (1, 'Studio')");
- stmt.addBatch("INSERT INTO place_alias (id, place, name, sort_name, primary_for_locale, locale, type ) VALUES (3, 1, 'Manox','Manoy', true, 'en',1)");
- stmt.executeBatch();
- stmt.close();
- }
-
@Test
public void testIndexPlaceName() throws Exception {
@@ -181,10 +175,41 @@
ir.close();
}
+ @Test
+ public void testIndexPlaceAreaName() throws Exception {
+ addPlaceOne();
+ RAMDirectory ramDir = new RAMDirectory();
+ createIndex(ramDir);
+ IndexReader ir = DirectoryReader.open(ramDir);
+ assertEquals(2, ir.numDocs());
+ {
+ checkTerm(ir, PlaceIndexField.AREA, "county");
+ checkTermX(ir, PlaceIndexField.AREA, "of", 1);
+ checkTermX(ir, PlaceIndexField.AREA, "oxfordshire", 2);
+ }
+ ir.close();
+ }
+
+
@Test
+ public void testIndexPlaceComment() throws Exception {
+
+ addPlaceOne();
+ RAMDirectory ramDir = new RAMDirectory();
+ createIndex(ramDir);
+
+ IndexReader ir = DirectoryReader.open(ramDir);
+ assertEquals(2, ir.numDocs());
+ {
+ checkTerm(ir, PlaceIndexField.COMMENT, "comment");
+ }
+ ir.close();
+ }
+
+ @Test
public void testStoredIndexPlace() throws Exception {
addPlaceOne();
@@ -203,13 +228,20 @@
assertEquals("180.56", place.getCoordinates().getLatitude());
assertEquals("120.0", place.getCoordinates().getLongitude());
- assertNull(place.getDisambiguation());
+ assertEquals("comment",place.getDisambiguation());
assertEquals("Studio", place.getType());
assertEquals("Manox",place.getAliasList().getAlias().get(0).getContent());
assertEquals("Manoy",place.getAliasList().getAlias().get(0).getSortName());
assertEquals("en",place.getAliasList().getAlias().get(0).getLocale());
+ DefAreaElementInner area = place.getArea();
+ assertNotNull(area);
+ assertEquals("b8caa692-704d-412b-a410-4fbcf5b9c796", area.getId());
+ assertEquals("County of OxfordShire", area.getName());
+ assertEquals("Oxfordshire County", area.getSortName());
+
+
}
ir.close();
}
Modified: search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/PlaceDismaxSearch.java
===================================================================
--- search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/PlaceDismaxSearch.java 2013-10-04 06:44:23 UTC (rev 13726)
+++ search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/PlaceDismaxSearch.java 2013-10-04 10:23:58 UTC (rev 13727)
@@ -40,6 +40,7 @@
protected DismaxSearcher initDismaxSearcher() {
Map<String, DismaxAlias.AliasField> fieldBoosts = new HashMap<String, DismaxAlias.AliasField>(3);
fieldBoosts.put(PlaceIndexField.PLACE.getName(), new DismaxAlias.AliasField(true, 1.3f));
+ fieldBoosts.put(PlaceIndexField.AREA.getName(), new DismaxAlias.AliasField(true, 1.1f));
fieldBoosts.put(PlaceIndexField.ALIAS.getName(), new DismaxAlias.AliasField(true, 0.9f));
fieldBoosts.put(PlaceIndexField.ADDRESS.getName(), new DismaxAlias.AliasField(true, 0.8f));
Modified: search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/PlaceSearch.java
===================================================================
--- search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/PlaceSearch.java 2013-10-04 06:44:23 UTC (rev 13726)
+++ search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/PlaceSearch.java 2013-10-04 10:23:58 UTC (rev 13727)
@@ -19,6 +19,7 @@
defaultFields = new ArrayList<String>();
defaultFields.add(PlaceIndexField.PLACE.getName());
defaultFields.add(PlaceIndexField.ALIAS.getName());
+ defaultFields.add(PlaceIndexField.AREA.getName());
defaultFields.add(PlaceIndexField.ADDRESS.getName());
}
Modified: search_server/trunk/servlet/src/test/java/org/musicbrainz/search/servlet/FindPlaceTest.java
===================================================================
--- search_server/trunk/servlet/src/test/java/org/musicbrainz/search/servlet/FindPlaceTest.java 2013-10-04 06:44:23 UTC (rev 13726)
+++ search_server/trunk/servlet/src/test/java/org/musicbrainz/search/servlet/FindPlaceTest.java 2013-10-04 10:23:58 UTC (rev 13727)
@@ -80,7 +80,17 @@
doc.addField(PlaceIndexField.TYPE,"Country");
place.setType("Country");
+ doc.addField(PlaceIndexField.COMMENT,"A comment");
+ place.setDisambiguation("A comment");
+ doc.addField(PlaceIndexField.AREA,"Afghanistan");
+ DefAreaElementInner area = of.createDefAreaElementInner();
+ area.setId("ff571ff4-04cb-4b9c-8a1c-354c330f863c");
+ area.setName("Afghanistan");
+ area.setSortName("Afghanistan");
+ place.setArea(area);
+
+
doc.addField(PlaceIndexField.PLACE_STORE, MMDSerializer.serialize(place));
writer.addDocument(doc.getLuceneDocument());
}
@@ -175,6 +185,27 @@
}
@Test
+ public void testFindPlaceByArea() throws Exception {
+ Results res = ss.search("area:afghanistan", 0, 10);
+ assertEquals(1, res.getTotalHits());
+ Result result = res.results.get(0);
+ MbDocument doc = result.getDoc();
+ assertEquals("ff571ff4-04cb-4b9c-8a1c-354c330f863c", doc.get(PlaceIndexField.PLACE_ID));
+ assertEquals("Afghanistan", doc.get(PlaceIndexField.PLACE));
+ }
+
+ @Test
+ public void testFindPlaceByComment() throws Exception {
+ Results res = ss.search("comment:comment", 0, 10);
+ assertEquals(1, res.getTotalHits());
+ Result result = res.results.get(0);
+ MbDocument doc = result.getDoc();
+ assertEquals("ff571ff4-04cb-4b9c-8a1c-354c330f863c", doc.get(PlaceIndexField.PLACE_ID));
+ assertEquals("Afghanistan", doc.get(PlaceIndexField.PLACE));
+ }
+
+
+ @Test
public void testFindPlaceByBegin() throws Exception {
Results res = ss.search("begin:1993", 0, 10);
assertEquals(1, res.getTotalHits());
@@ -296,11 +327,12 @@
assertTrue(output.contains("type=\"Country\""));
assertTrue(output.contains("<name>Afghanistan</name>"));
assertTrue(output.contains("<alias sort-name=\"Afghan\">Afghany</alias></alias-list>"));
-
- assertTrue(output.contains("<begin>1993</begin"));
+ assertTrue(output.contains("<begin>1993</begin>"));
assertTrue(output.contains("<end>2004</end>"));
assertTrue(output.contains("<ended>true</ended>"));
assertTrue(output.contains("<coordinates><latitude>-180.45</latitude><longitude>120</longitude></coordinates>"));
+ assertTrue(output.contains("<disambiguation>A comment</disambiguation>"));
+ assertTrue(output.contains("<area id=\"ff571ff4-04cb-4b9c-8a1c-354c330f863c\">"));
}
@@ -342,6 +374,8 @@
assertTrue(output.contains("life-span\":{\"begin\":\"1993\""));
assertTrue(output.contains("\"ended\":\"true\""));
assertTrue(output.contains("\"coordinates\":{\"latitude\":\"-180.45\",\"longitude\":\"120\"},"));
+ assertTrue(output.contains("\"disambiguation\":\"A comment\","));
+ assertTrue(output.contains("\"area\":{\"id\":\"ff571ff4-04cb-4b9c-8a1c-354c330f863c\","));
}
@@ -369,6 +403,8 @@
assertTrue(output.contains("\"ended\":true"));
assertTrue(output.contains("\"end\":\"2004\""));
assertTrue(output.contains("coordinates\":{\"latitude\":\"-180.45\",\"longitude\":\"120\"}"));
+ assertTrue(output.contains("\"disambiguation\":\"A comment\","));
+ assertTrue(output.contains("\"area\":{\"id\":\"ff571ff4-04cb-4b9c-8a1c-354c330f863c\","));
}
/**