[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,"));      */
 
     }