[mb-commits] r13633 - in search_server/trunk: index/src/main/java/org/musicbrainz/search/analysis 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/mmd1 servlet/src/main/java/org/musicbrainz/search/servlet/mmd2 servlet/src/test/java/org/musicbrainz/search/servlet

[email protected] Wed, 27 Feb 2013 09:15:08 +0000
Newsgroups gmane.comp.audio.musicbrainz.cvs
Message-ID <E1UAd6S-0007va-2i@wiley>
Author: ijabz
Date: 2013-02-27 09:14:47 +0000 (Wed, 27 Feb 2013)
New Revision: 13633

Added:
   search_server/trunk/index/src/main/java/org/musicbrainz/search/analysis/StripLeadingZeroesAnalyzer.java
   search_server/trunk/index/src/main/java/org/musicbrainz/search/analysis/StripLeadingZeroesFilter.java
Removed:
   search_server/trunk/index/src/main/java/org/musicbrainz/search/analysis/StripLeadingZeroAnalyzer.java
   search_server/trunk/index/src/main/java/org/musicbrainz/search/analysis/StripLeadingZeroFilter.java
Modified:
   search_server/trunk/index/src/main/java/org/musicbrainz/search/index/CDStubIndexField.java
   search_server/trunk/index/src/main/java/org/musicbrainz/search/index/LabelIndex.java
   search_server/trunk/index/src/main/java/org/musicbrainz/search/index/LabelIndexField.java
   search_server/trunk/index/src/main/java/org/musicbrainz/search/index/ReleaseIndexField.java
   search_server/trunk/index/src/test/java/org/musicbrainz/search/index/LabelIndexTest.java
   search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/ArtistDismaxSearch.java
   search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/LabelDismaxSearch.java
   search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/LabelQueryParser.java
   search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/ReleaseDismaxQueryParser.java
   search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd1/LabelMmd1XmlWriter.java
   search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd2/LabelWriter.java
   search_server/trunk/servlet/src/test/java/org/musicbrainz/search/servlet/FindLabelTest.java
Log:
#SEARCH-228:Let Dismax Search for Labels search Label Code

Modified: search_server/trunk/index/src/main/java/org/musicbrainz/search/index/CDStubIndexField.java
===================================================================
--- search_server/trunk/index/src/main/java/org/musicbrainz/search/index/CDStubIndexField.java	2013-02-27 08:32:52 UTC (rev 13632)
+++ search_server/trunk/index/src/main/java/org/musicbrainz/search/index/CDStubIndexField.java	2013-02-27 09:14:47 UTC (rev 13633)
@@ -21,9 +21,8 @@
 
 import org.apache.lucene.analysis.Analyzer;
 import org.apache.lucene.analysis.core.KeywordAnalyzer;
-import org.apache.lucene.document.Field;
 import org.apache.lucene.document.FieldType;
-import org.musicbrainz.search.analysis.StripLeadingZeroAnalyzer;
+import org.musicbrainz.search.analysis.StripLeadingZeroesAnalyzer;
 import org.musicbrainz.search.analysis.TitleAnalyzer;
 
 /**
@@ -34,7 +33,7 @@
 	ID              ("_id",         MusicBrainzFieldTypes.TEXT_STORED_NOT_ANALYZED_NO_NORMS, new KeywordAnalyzer()),
     ARTIST          ("artist",      MusicBrainzFieldTypes.TEXT_STORED_ANALYZED),
     TITLE           ("title",       MusicBrainzFieldTypes.TEXT_STORED_ANALYZED, new TitleAnalyzer()),
-    BARCODE         ("barcode",     MusicBrainzFieldTypes.TEXT_STORED_ANALYZED_NO_NORMS, new StripLeadingZeroAnalyzer()),
+    BARCODE         ("barcode",     MusicBrainzFieldTypes.TEXT_STORED_ANALYZED_NO_NORMS, new StripLeadingZeroesAnalyzer()),
     COMMENT         ("comment",     MusicBrainzFieldTypes.TEXT_STORED_ANALYZED),
     NUM_TRACKS      ("tracks",      MusicBrainzFieldTypes.TEXT_STORED_NOT_ANALYZED_NO_NORMS, new KeywordAnalyzer()),
     DISCID          ("discid",      MusicBrainzFieldTypes.TEXT_STORED_NOT_ANALYZED_NO_NORMS, new KeywordAnalyzer()),

Modified: search_server/trunk/index/src/main/java/org/musicbrainz/search/index/LabelIndex.java
===================================================================
--- search_server/trunk/index/src/main/java/org/musicbrainz/search/index/LabelIndex.java	2013-02-27 08:32:52 UTC (rev 13632)
+++ search_server/trunk/index/src/main/java/org/musicbrainz/search/index/LabelIndex.java	2013-02-27 09:14:47 UTC (rev 13633)
@@ -230,7 +230,7 @@
 
         int labelcode = rs.getInt("label_code");
         if (labelcode > 0) {
-            doc.addNumericField(LabelIndexField.CODE, labelcode);
+            doc.addField(LabelIndexField.CODE, labelcode);
         }
         else {
             doc.addField(LabelIndexField.CODE,Index.NO_VALUE);

Modified: search_server/trunk/index/src/main/java/org/musicbrainz/search/index/LabelIndexField.java
===================================================================
--- search_server/trunk/index/src/main/java/org/musicbrainz/search/index/LabelIndexField.java	2013-02-27 08:32:52 UTC (rev 13632)
+++ search_server/trunk/index/src/main/java/org/musicbrainz/search/index/LabelIndexField.java	2013-02-27 09:14:47 UTC (rev 13633)
@@ -30,12 +30,8 @@
 
 import org.apache.lucene.analysis.Analyzer;
 import org.apache.lucene.analysis.core.KeywordAnalyzer;
-import org.apache.lucene.document.Field;
 import org.apache.lucene.document.FieldType;
-import org.musicbrainz.search.analysis.CaseInsensitiveKeywordAnalyzer;
-import org.musicbrainz.search.analysis.MusicbrainzAnalyzer;
-import org.musicbrainz.search.analysis.MusicbrainzKeepAccentsAnalyzer;
-import org.musicbrainz.search.analysis.MusicbrainzWithPosGapAnalyzer;
+import org.musicbrainz.search.analysis.*;
 
 /**
  * Fields created in Lucene Search Index
@@ -46,7 +42,7 @@
     ALIAS		("alias",		MusicBrainzFieldTypes.TEXT_STORED_ANALYZED, new MusicbrainzWithPosGapAnalyzer()),
     BEGIN		("begin",		MusicBrainzFieldTypes.TEXT_STORED_NOT_ANALYZED_NO_NORMS, new KeywordAnalyzer()),
     COMMENT		("comment",		MusicBrainzFieldTypes.TEXT_STORED_ANALYZED),
-    CODE		("code",		MusicBrainzFieldTypes.TEXT_STORED_ANALYZED, new KeywordAnalyzer()),
+    CODE		("code",		MusicBrainzFieldTypes.TEXT_STORED_ANALYZED, new StripLeadingZeroesAnalyzer()),
     COUNTRY		("country",		MusicBrainzFieldTypes.TEXT_STORED_ANALYZED),
     END			("end",			MusicBrainzFieldTypes.TEXT_STORED_NOT_ANALYZED_NO_NORMS, new KeywordAnalyzer()),
     ENDED       ("ended",       MusicBrainzFieldTypes.TEXT_STORED_ANALYZED_NO_NORMS, new CaseInsensitiveKeywordAnalyzer()),

Modified: search_server/trunk/index/src/main/java/org/musicbrainz/search/index/ReleaseIndexField.java
===================================================================
--- search_server/trunk/index/src/main/java/org/musicbrainz/search/index/ReleaseIndexField.java	2013-02-27 08:32:52 UTC (rev 13632)
+++ search_server/trunk/index/src/main/java/org/musicbrainz/search/index/ReleaseIndexField.java	2013-02-27 09:14:47 UTC (rev 13633)
@@ -2,7 +2,6 @@
 
 import org.apache.lucene.analysis.Analyzer;
 import org.apache.lucene.analysis.core.KeywordAnalyzer;
-import org.apache.lucene.document.Field;
 import org.apache.lucene.document.FieldType;
 import org.musicbrainz.search.analysis.*;
 
@@ -18,7 +17,7 @@
     ARTIST_CREDIT       ("artistcredit",    MusicBrainzFieldTypes.TEXT_STORED_NOT_INDEXED),
     ARTIST_NAME         ("artistname",		MusicBrainzFieldTypes.TEXT_NOT_STORED_ANALYZED, new MusicbrainzWithPosGapAnalyzer()),
     ARTIST_NAMECREDIT   ("creditname",	    MusicBrainzFieldTypes.TEXT_NOT_STORED_ANALYZED, new MusicbrainzWithPosGapAnalyzer()),
-    BARCODE			    ("barcode",		    MusicBrainzFieldTypes.TEXT_STORED_ANALYZED_NO_NORMS, new StripLeadingZeroAnalyzer()),
+    BARCODE			    ("barcode",		    MusicBrainzFieldTypes.TEXT_STORED_ANALYZED_NO_NORMS, new StripLeadingZeroesAnalyzer()),
     CATALOG_NO		    ("catno",		    MusicBrainzFieldTypes.TEXT_STORED_ANALYZED_NO_NORMS, new StripSpacesAnalyzer()),
     COMMENT		        ("comment",		    MusicBrainzFieldTypes.TEXT_STORED_ANALYZED),
     COUNTRY			    ("country",		    MusicBrainzFieldTypes.TEXT_STORED_ANALYZED_NO_NORMS, new CaseInsensitiveKeywordAnalyzer()),

Modified: search_server/trunk/index/src/test/java/org/musicbrainz/search/index/LabelIndexTest.java
===================================================================
--- search_server/trunk/index/src/test/java/org/musicbrainz/search/index/LabelIndexTest.java	2013-02-27 08:32:52 UTC (rev 13632)
+++ search_server/trunk/index/src/test/java/org/musicbrainz/search/index/LabelIndexTest.java	2013-02-27 09:14:47 UTC (rev 13633)
@@ -237,7 +237,7 @@
         {
             Document doc = ir.document(1);
             assertEquals(1, doc.getFields(LabelIndexField.CODE.getName()).length);
-            assertEquals(5807, NumericUtils.prefixCodedToInt(new BytesRef(doc.get(LabelIndexField.CODE.getName()))));
+            assertEquals("5807", doc.get(LabelIndexField.CODE.getName()));
         }
         ir.close();
     }
@@ -254,7 +254,7 @@
         {
             Document doc = ir.document(1);
             assertEquals(1, doc.getFields(LabelIndexField.CODE.getName()).length);
-            assertEquals(99998, NumericUtils.prefixCodedToInt(new BytesRef(doc.get(LabelIndexField.CODE.getName()))));
+            assertEquals("99998", doc.get(LabelIndexField.CODE.getName()));
         }
         ir.close();
     }

Modified: search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/ArtistDismaxSearch.java
===================================================================
--- search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/ArtistDismaxSearch.java	2013-02-27 08:32:52 UTC (rev 13632)
+++ search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/ArtistDismaxSearch.java	2013-02-27 09:14:47 UTC (rev 13633)
@@ -23,7 +23,7 @@
   /**
    * Standard Search
    *
-   * @param searcher
+   * @param searchServer
    * @throws Exception
    */
   public ArtistDismaxSearch(AbstractSearchServer searchServer) throws Exception {

Modified: search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/LabelDismaxSearch.java
===================================================================
--- search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/LabelDismaxSearch.java	2013-02-27 08:32:52 UTC (rev 13632)
+++ search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/LabelDismaxSearch.java	2013-02-27 09:14:47 UTC (rev 13633)
@@ -41,6 +41,7 @@
     Map<String, DismaxAlias.AliasField> fieldBoosts = new HashMap<String, DismaxAlias.AliasField>(3);
     fieldBoosts.put(LabelIndexField.LABEL_ACCENT.getName(), new DismaxAlias.AliasField(false, 1.4f));
     fieldBoosts.put(LabelIndexField.LABEL.getName(), new DismaxAlias.AliasField(true, 1.3f));
+    fieldBoosts.put(LabelIndexField.CODE.getName(), new DismaxAlias.AliasField(true, 1.3f));
     fieldBoosts.put(LabelIndexField.SORTNAME.getName(), new DismaxAlias.AliasField(true, 1.1f));
     fieldBoosts.put(LabelIndexField.ALIAS.getName(), new DismaxAlias.AliasField(true, 0.9f));
     DismaxAlias dismaxAlias = new DismaxAlias();
@@ -52,7 +53,7 @@
   /**
    * Standard Search
    * 
-   * @param searcher
+   * @param searchServer
    * @throws Exception
    */
   public LabelDismaxSearch(AbstractSearchServer searchServer) throws Exception {

Modified: search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/LabelQueryParser.java
===================================================================
--- search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/LabelQueryParser.java	2013-02-27 08:32:52 UTC (rev 13632)
+++ search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/LabelQueryParser.java	2013-02-27 09:14:47 UTC (rev 13633)
@@ -43,53 +43,10 @@
 
             }
         }
-        else if (term.field().equals(LabelIndexField.CODE.getName()))
-        {
-            try
-            {
-
-                int number = Integer.parseInt(term.text());
-                BytesRef bytes = new BytesRef(NumericUtils.BUF_SIZE_INT);
-                NumericUtils.intToPrefixCoded(number, 0, bytes);
-                TermQuery tq = new TermQuery(new Term(term.field(), bytes.utf8ToString()));
-                return tq;
-            }
-            catch (NumberFormatException nfe)
-            {
-                //If not provided numeric argument just leave as is, won't give matches
-                return super.newTermQuery(term);
-            }
-        }
         else
         {
             return super.newTermQuery(term);
 
         }
     }
-
-
-    @Override
-    public Query newRangeQuery(String field,
-                               String part1,
-                               String part2,
-                               boolean startInclusive,
-                               boolean endInclusive)
-    {
-        if (
-                (field.equals(LabelIndexField.CODE.getName()))
-                )
-        {
-            BytesRef bytes1 = new BytesRef(NumericUtils.BUF_SIZE_INT);
-            BytesRef bytes2 = new BytesRef(NumericUtils.BUF_SIZE_INT);
-            NumericUtils.intToPrefixCoded(Integer.parseInt(part1), 0, bytes1);
-            NumericUtils.intToPrefixCoded(Integer.parseInt(part2), 0, bytes2);
-            part1 = bytes1.utf8ToString();
-            part2 = bytes2.utf8ToString();
-        }
-        TermRangeQuery query = (TermRangeQuery)
-                super.newRangeQuery(field, part1, part2, startInclusive, endInclusive);
-        return query;
-
-    }
-
 }

Modified: search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/ReleaseDismaxQueryParser.java
===================================================================
--- search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/ReleaseDismaxQueryParser.java	2013-02-27 08:32:52 UTC (rev 13632)
+++ search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/ReleaseDismaxQueryParser.java	2013-02-27 09:14:47 UTC (rev 13633)
@@ -40,7 +40,7 @@
 
     /**
      * A catalogno may have been entered with spaces, this will incorrectly be treated as two separate tokens
-     * by the term query wheresas the phrase query will correctly analyse it into one term. So in this case
+     * by the term query whereas the phrase query will correctly analyse it into one term. So in this case
      * the term query could return no matches whereas the phrase query could get a match.
      *
      * @param term

Modified: search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd1/LabelMmd1XmlWriter.java
===================================================================
--- search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd1/LabelMmd1XmlWriter.java	2013-02-27 08:32:52 UTC (rev 13632)
+++ search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd1/LabelMmd1XmlWriter.java	2013-02-27 09:14:47 UTC (rev 13633)
@@ -66,7 +66,7 @@
 
             String code = doc.get(LabelIndexField.CODE);
             if (isNotNoValue(code)) {
-                label.setLabelCode(BigInteger.valueOf(NumericUtils.prefixCodedToInt(new BytesRef(code))));
+                label.setLabelCode(new BigInteger(code));
             }
 
             String sortname = doc.get(LabelIndexField.SORTNAME);

Modified: search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd2/LabelWriter.java
===================================================================
--- search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd2/LabelWriter.java	2013-02-27 08:32:52 UTC (rev 13632)
+++ search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd2/LabelWriter.java	2013-02-27 09:14:47 UTC (rev 13633)
@@ -74,7 +74,7 @@
 
             String code = doc.get(LabelIndexField.CODE);
             if (isNotNoValue(code)) {
-                label.setLabelCode(BigInteger.valueOf(NumericUtils.prefixCodedToInt(new BytesRef(code))));
+                label.setLabelCode(new BigInteger(code));
 
             }
 

Modified: search_server/trunk/servlet/src/test/java/org/musicbrainz/search/servlet/FindLabelTest.java
===================================================================
--- search_server/trunk/servlet/src/test/java/org/musicbrainz/search/servlet/FindLabelTest.java	2013-02-27 08:32:52 UTC (rev 13632)
+++ search_server/trunk/servlet/src/test/java/org/musicbrainz/search/servlet/FindLabelTest.java	2013-02-27 09:14:47 UTC (rev 13633)
@@ -52,7 +52,7 @@
       doc.addField(LabelIndexField.LABEL, "Jockey Slut");
       doc.addField(LabelIndexField.SORTNAME, "Slut, Jockey");
       doc.addField(LabelIndexField.ALIAS, "Jockeys");
-      doc.addNumericField(LabelIndexField.CODE, 1234);
+      doc.addField(LabelIndexField.CODE, 1234);
       doc.addField(LabelIndexField.BEGIN, "1993");
       doc.addField(LabelIndexField.END, "2004");
       doc.addField(LabelIndexField.ENDED, "true");
@@ -71,7 +71,7 @@
       doc.addField(LabelIndexField.LABEL, "4AD");
       doc.addField(LabelIndexField.SORTNAME, "4AD");
       doc.addField(LabelIndexField.BEGIN, "1979");
-      doc.addNumericField(LabelIndexField.CODE, 5807);
+      doc.addField(LabelIndexField.CODE, 5807);
       doc.addField(LabelIndexField.TYPE, LabelType.PRODUCTION.getName());
       doc.addField(LabelIndexField.COUNTRY, "unknown");
 
@@ -157,6 +157,16 @@
     assertEquals("Jockey Slut", doc.get(LabelIndexField.LABEL));
   }
 
+    @Test
+    public void testFindLabelByDismax3() throws Exception {
+        Results res = sd.search("1234", 0, 10);
+        assertEquals(1, res.totalHits);
+        Result result = res.results.get(0);
+        MbDocument doc = result.doc;
+        assertEquals("ff571ff4-04cb-4b9c-8a1c-354c330f863c", doc.get(LabelIndexField.LABEL_ID));
+        assertEquals("Jockey Slut", doc.get(LabelIndexField.LABEL));
+    }
+
   @Test
   public void testFindLabelByDefault() throws Exception {
 
@@ -275,6 +285,16 @@
 
   @Test
   public void testFindLabelByCode2() throws Exception {
+    Results res = ss.search("code:05807", 0, 10);
+    assertEquals(1, res.totalHits);
+    Result result = res.results.get(0);
+    MbDocument doc = result.doc;
+    assertEquals("a539bb1e-f2e1-4b45-9db8-8053841e7503", doc.get(LabelIndexField.LABEL_ID));
+    assertEquals("4AD", doc.get(LabelIndexField.LABEL));
+  }
+
+  @Test
+  public void testFindLabelByCode3() throws Exception {
     Results res = ss.search("code:005807", 0, 10);
     assertEquals(1, res.totalHits);
     Result result = res.results.get(0);