[mb-commits] r13695 - in search_server/trunk: index/src/main/java/org/musicbrainz/search/index index/src/test/java/org/musicbrainz/search/index servlet/src/test/java/org/musicbrainz/search/servlet
[email protected] Tue, 04 Jun 2013 20:54:22 +0000
| Newsgroups | gmane.comp.audio.musicbrainz.cvs |
|---|---|
| Message-ID | <E1UjyFK-00089Z-8R@wiley> |
Author: ijabz
Date: 2013-06-04 20:54:22 +0000 (Tue, 04 Jun 2013)
New Revision: 13695
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/AreaIndexField.java
search_server/trunk/index/src/test/java/org/musicbrainz/search/index/AreaIndexTest.java
search_server/trunk/servlet/src/test/java/org/musicbrainz/search/servlet/FindAreaTest.java
Log:
SEARCH-286:Add support for searching/displaying area begin/end/ended fields
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-06-04 20:32:24 UTC (rev 13694)
+++ search_server/trunk/index/src/main/java/org/musicbrainz/search/index/AreaIndex.java 2013-06-04 20:54:22 UTC (rev 13695)
@@ -85,7 +85,9 @@
addPreparedStatement("AREA",
- "SELECT a.id, a.gid, a.name, a.sort_name, at.name as type " +
+ "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" +
" FROM area a" +
" LEFT JOIN area_type at ON a.type = at.id " +
" WHERE a.id BETWEEN ? AND ? " +
@@ -192,6 +194,26 @@
area.setType(type);
}
+ boolean ended = rs.getBoolean("ended");
+ doc.addFieldOrUnknown(ArtistIndexField.ENDED, Boolean.toString(ended));
+
+ String begin = Utils.formatDate(rs.getInt("begin_date_year"), rs.getInt("begin_date_month"), rs.getInt("begin_date_day"));
+ doc.addNonEmptyField(ArtistIndexField.BEGIN, begin);
+
+ String end = Utils.formatDate(rs.getInt("end_date_year"), rs.getInt("end_date_month"), rs.getInt("end_date_day"));
+ doc.addNonEmptyField(ArtistIndexField.END, end);
+
+ LifeSpan lifespan = of.createLifeSpan();
+ area.setLifeSpan(lifespan);
+ if(!Strings.isNullOrEmpty(begin)) {
+ lifespan.setBegin(begin);
+ }
+ if(!Strings.isNullOrEmpty(end)) {
+ lifespan.setEnd(end);
+ }
+ lifespan.setEnded(Boolean.toString(ended));
+
+
if (aliases.containsKey(areaId)) {
AliasList aliasList = of.createAliasList();
for (Alias nextAlias : aliases.get(areaId)) {
Modified: search_server/trunk/index/src/main/java/org/musicbrainz/search/index/AreaIndexField.java
===================================================================
--- search_server/trunk/index/src/main/java/org/musicbrainz/search/index/AreaIndexField.java 2013-06-04 20:32:24 UTC (rev 13694)
+++ search_server/trunk/index/src/main/java/org/musicbrainz/search/index/AreaIndexField.java 2013-06-04 20:54:22 UTC (rev 13695)
@@ -41,12 +41,15 @@
public enum AreaIndexField implements IndexField {
ID ("_id", MusicBrainzFieldTypes.TEXT_STORED_ANALYZED_NO_NORMS, new KeywordAnalyzer()),
+ AREA_ID ("aid", MusicBrainzFieldTypes.TEXT_STORED_NOT_ANALYZED_NO_NORMS, new KeywordAnalyzer()),
ALIAS ("alias", MusicBrainzFieldTypes.TEXT_NOT_STORED_ANALYZED, new MusicbrainzWithPosGapAnalyzer()),
AREA ("area", MusicBrainzFieldTypes.TEXT_STORED_ANALYZED, new MusicbrainzAnalyzer()),
- AREA_ID ("aid", MusicBrainzFieldTypes.TEXT_STORED_NOT_ANALYZED_NO_NORMS, new KeywordAnalyzer()),
- AREA_STORE ("areastore", MusicBrainzFieldTypes.TEXT_STORED_NOT_INDEXED),
+ BEGIN ("begin", MusicBrainzFieldTypes.TEXT_NOT_STORED_NOT_ANALYZED_NO_NORMS, new KeywordAnalyzer()),
+ END ("end", MusicBrainzFieldTypes.TEXT_NOT_STORED_NOT_ANALYZED_NO_NORMS, new KeywordAnalyzer()),
+ ENDED ("ended", MusicBrainzFieldTypes.TEXT_NOT_STORED_ANALYZED_NO_NORMS, new CaseInsensitiveKeywordAnalyzer()),
SORTNAME ("sortname", MusicBrainzFieldTypes.TEXT_STORED_ANALYZED, new MusicbrainzAnalyzer()),
TYPE ("type", MusicBrainzFieldTypes.TEXT_NOT_STORED_ANALYZED_NO_NORMS, new CaseInsensitiveKeywordAnalyzer()),
+ AREA_STORE ("areastore", MusicBrainzFieldTypes.TEXT_STORED_NOT_INDEXED),
;
private String name;
Modified: search_server/trunk/index/src/test/java/org/musicbrainz/search/index/AreaIndexTest.java
===================================================================
--- search_server/trunk/index/src/test/java/org/musicbrainz/search/index/AreaIndexTest.java 2013-06-04 20:32:24 UTC (rev 13694)
+++ search_server/trunk/index/src/test/java/org/musicbrainz/search/index/AreaIndexTest.java 2013-06-04 20:54:22 UTC (rev 13695)
@@ -9,6 +9,7 @@
import org.musicbrainz.mmd2.Alias;
import org.musicbrainz.mmd2.AreaList;
import org.musicbrainz.mmd2.DefAreaElementInner;
+import org.musicbrainz.mmd2.LifeSpan;
import java.sql.Statement;
@@ -36,7 +37,7 @@
private void addAreaOne() throws Exception {
Statement stmt = conn.createStatement();
- stmt.addBatch("INSERT INTO area (id, gid,name,sort_name, type) VALUES (1, 'aa95182f-df0a-3ad6-8bfb-4b63482cd276', 'Afghanistan','Afghanistan', 1)");
+ stmt.addBatch("INSERT INTO area (id, gid,name,sort_name, type, begin_date_year, end_date_year) VALUES (1, 'aa95182f-df0a-3ad6-8bfb-4b63482cd276', 'Afghanistan','Afghanistan',1,1830,2020)");
stmt.addBatch("INSERT INTO area_type(id, name) VALUES (1, 'Country')");
stmt.addBatch("INSERT INTO area_alias (id, area, sort_name, name, primary_for_locale, locale, type ) VALUES (3, 1, 'Afghan', 'Afghany', true, 'en',1)");
@@ -109,6 +110,38 @@
}
@Test
+ public void testIndexAreaBegin() throws Exception {
+
+ addAreaOne();
+ RAMDirectory ramDir = new RAMDirectory();
+ createIndex(ramDir);
+
+ IndexReader ir = DirectoryReader.open(ramDir);
+ assertEquals(2, ir.numDocs());
+ {
+ checkTerm(ir, AreaIndexField.BEGIN, "1830");
+
+ }
+ ir.close();
+ }
+
+ @Test
+ public void testIndexAreaEnd() throws Exception {
+
+ addAreaOne();
+ RAMDirectory ramDir = new RAMDirectory();
+ createIndex(ramDir);
+
+ IndexReader ir = DirectoryReader.open(ramDir);
+ assertEquals(2, ir.numDocs());
+ {
+ checkTerm(ir, AreaIndexField.END, "2020");
+
+ }
+ ir.close();
+ }
+
+ @Test
public void testStoredIndexArea() throws Exception {
addAreaOne();
@@ -131,9 +164,16 @@
Alias alias = area.getAliasList().getAlias().get(0);
assertEquals("Afghany",alias.getContent());
- assertEquals("Afghan",alias.getSortName());
+ assertEquals("Afghan", alias.getSortName());
assertEquals("en",alias.getLocale());
assertEquals("AliasType",alias.getType());
+
+ assertNotNull(area.getLifeSpan());
+ LifeSpan lifeSpan = area.getLifeSpan();
+ assertEquals("1830",lifeSpan.getBegin());
+ assertEquals("2020",lifeSpan.getEnd());
+ assertEquals("false",lifeSpan.getEnded());
+
}
ir.close();
}
Modified: search_server/trunk/servlet/src/test/java/org/musicbrainz/search/servlet/FindAreaTest.java
===================================================================
--- search_server/trunk/servlet/src/test/java/org/musicbrainz/search/servlet/FindAreaTest.java 2013-06-04 20:32:24 UTC (rev 13694)
+++ search_server/trunk/servlet/src/test/java/org/musicbrainz/search/servlet/FindAreaTest.java 2013-06-04 20:54:22 UTC (rev 13695)
@@ -62,10 +62,6 @@
alias.setSortName("Afghan");
area.setAliasList(aliasList);
- /*
- doc.addField(AreaIndexField.CODE, 1234);
- area.setAreaCode(BigInteger.valueOf(1234));
-
doc.addField(AreaIndexField.BEGIN, "1993");
doc.addField(AreaIndexField.END, "2004");
doc.addField(AreaIndexField.ENDED, "true");
@@ -74,6 +70,12 @@
lifespan.setBegin("1993");
lifespan.setEnd("2004");
lifespan.setEnded("true");
+
+ /*
+ doc.addField(AreaIndexField.CODE, 1234);
+ area.setAreaCode(BigInteger.valueOf(1234));
+
+
*/
area.setType("Country");
@@ -141,8 +143,37 @@
assertEquals("Afghanistan", doc.get(AreaIndexField.AREA));
}
+ @Test
+ public void testFindAreaByBegin() throws Exception {
+ Results res = ss.search("begin:1993", 0, 10);
+ assertEquals(1, res.getTotalHits());
+ Result result = res.results.get(0);
+ MbDocument doc = result.getDoc();
+ assertEquals("ff571ff4-04cb-4b9c-8a1c-354c330f863c", doc.get(AreaIndexField.AREA_ID));
+ assertEquals("Afghanistan", doc.get(AreaIndexField.AREA));
+ }
@Test
+ public void testFindAreaByEnd() throws Exception {
+ Results res = ss.search("end:2004", 0, 10);
+ assertEquals(1, res.getTotalHits());
+ Result result = res.results.get(0);
+ MbDocument doc = result.getDoc();
+ assertEquals("ff571ff4-04cb-4b9c-8a1c-354c330f863c", doc.get(AreaIndexField.AREA_ID));
+ assertEquals("Afghanistan", doc.get(AreaIndexField.AREA));
+ }
+
+ @Test
+ public void testFindAreaByEnded() throws Exception {
+ Results res = ss.search("ended:true", 0, 10);
+ assertEquals(1, res.getTotalHits());
+ Result result = res.results.get(0);
+ MbDocument doc = result.getDoc();
+ assertEquals("ff571ff4-04cb-4b9c-8a1c-354c330f863c", doc.get(AreaIndexField.AREA_ID));
+ assertEquals("Afghanistan", doc.get(AreaIndexField.AREA));
+ }
+
+ @Test
public void testFindAreaByDismax1() throws Exception {
Results res = sd.search("Afghanistan", 0, 10);
assertEquals(1, res.getTotalHits());
@@ -178,15 +209,10 @@
assertTrue(output.contains("<name>Afghanistan</name>"));
assertTrue(output.contains("<sort-name>Afghanistan</sort-name>"));
assertTrue(output.contains("<alias sort-name=\"Afghan\">Afghany</alias></alias-list>"));
- /*
+
assertTrue(output.contains("<begin>1993</begin"));
assertTrue(output.contains("<end>2004</end>"));
- assertTrue(output.contains("<area-code>1234</area-code>"));
- assertTrue(output.contains("<country>GB</country>"));
assertTrue(output.contains("<ended>true</ended>"));
- assertTrue(output.contains("dance</name>"));
- assertTrue(output.contains("<ipi-list><ipi>1001</ipi></ipi-list>"));
- */
}
@@ -212,13 +238,10 @@
assertTrue(output.contains("\"type\":\"Country\""));
assertTrue(output.contains("name\":\"Afghanistan\""));
assertTrue(output.contains("\"sort-name\":\"Afghanistan\""));
- /*
+
assertTrue(output.contains("life-span\":{\"begin\":\"1993\""));
- assertTrue(output.contains("\"area-code\":1234"));
- assertTrue(output.contains("\"country\":\"GB\""));
- assertTrue(output.contains("tag-list\":{\"tag\":[{\"count\":22,\"name\":\"dance\"}"));
assertTrue(output.contains("\"ended\":\"true\""));
- */
+
}
/**
@@ -242,17 +265,9 @@
assertTrue(output.contains("name\":\"Afghanistan\""));
assertTrue(output.contains("\"sort-name\":\"Afghanistan\""));
assertTrue(output.contains("\"aliases\":[{\"locale\":\"\",\"sort-name\":\"Afghan\",\"type\":\"\",\"primary\":\"false\",\"begin-date\":\"\",\"end-date\":\"\",\"value\":\"Afghany\""));
-
- /*
assertTrue(output.contains("life-span\":{\"begin\":\"1993\""));
- assertTrue(output.contains("\"country\":\"GB\""));
- assertTrue(output.contains("\"tags\":[{\"count\":22,\"name\":\"dance\"}]"));
assertTrue(output.contains("\"ended\":true"));
- assertTrue(output.contains("\"ipis\":[\"1001\""));
assertTrue(output.contains("\"end\":\"2004\""));
- assertTrue(output.contains("\"area-code\":1234"));
- assertTrue(output.contains("\"count\":1"));
- assertTrue(output.contains("\"offset\":0,")); */
}