[mb-commits] r13679 - in search_server/trunk/index/src: main/java/org/musicbrainz/search/index test/java/org/musicbrainz/search/index

[email protected] Thu, 09 May 2013 08:47:08 +0000
Newsgroups gmane.comp.audio.musicbrainz.cvs
Message-ID <E1UaMVI-0005aB-BZ@wiley>
Author: ijabz
Date: 2013-05-09 08:47:07 +0000 (Thu, 09 May 2013)
New Revision: 13679

Modified:
   search_server/trunk/index/src/main/java/org/musicbrainz/search/index/ArtistIndex.java
   search_server/trunk/index/src/test/java/org/musicbrainz/search/index/AbstractIndexTest.java
   search_server/trunk/index/src/test/java/org/musicbrainz/search/index/ArtistIndexTest.java
Log:
SEARCH-219:Include alias sortnames when searching

Modified: search_server/trunk/index/src/main/java/org/musicbrainz/search/index/ArtistIndex.java
===================================================================
--- search_server/trunk/index/src/main/java/org/musicbrainz/search/index/ArtistIndex.java	2013-05-08 16:09:27 UTC (rev 13678)
+++ search_server/trunk/index/src/main/java/org/musicbrainz/search/index/ArtistIndex.java	2013-05-09 08:47:07 UTC (rev 13679)
@@ -109,9 +109,10 @@
                         " WHERE artist between ? AND ?");
 
         addPreparedStatement("ALIASES",
-                "SELECT artist_alias.artist as artist, n.name as alias " +
+                "SELECT artist_alias.artist as artist, n.name as alias, sn.name as alias_sortname " +
                         " FROM artist_alias " +
                         "  JOIN artist_name n ON (artist_alias.name = n.id) " +
+                        "  JOIN artist_name sn ON (artist_alias.sort_name = sn.id) " +
                         " WHERE artist BETWEEN ? AND ?");
 
         addPreparedStatement("ARTISTCREDITS",
@@ -165,6 +166,8 @@
 
     public void indexData(IndexWriter indexWriter, int min, int max) throws SQLException, IOException {
 
+        ObjectFactory of = new ObjectFactory();
+
         // Get Tags
         PreparedStatement st = getPreparedStatement("TAGS");
         st.setInt(1, min);
@@ -176,22 +179,25 @@
         // IPI Codes
         Map<Integer, List<String>> ipiCodes = loadIpiCodes(min, max);
 
-        //Aliases (and Artist Credits)
-        Map<Integer, Set<String>> aliases = new HashMap<Integer, Set<String>>();
+        //Aliases
+        Map<Integer, Set<Alias>> aliases = new HashMap<Integer, Set<Alias>>();
         st = getPreparedStatement("ALIASES");
         st.setInt(1, min);
         st.setInt(2, max);
         rs = st.executeQuery();
         while (rs.next()) {
             int artistId = rs.getInt("artist");
-            Set<String> list;
+            Set<Alias> list;
             if (!aliases.containsKey(artistId)) {
-                list = new HashSet<String>();
+                list = new HashSet<Alias>();
                 aliases.put(artistId, list);
             } else {
                 list = aliases.get(artistId);
             }
-            list.add(rs.getString("alias"));
+            Alias alias = of.createAlias();
+            alias.setContent(rs.getString("alias"));
+            alias.setSortName(rs.getString("alias_sortname"));
+            list.add(alias);
         }
         rs.close();
 
@@ -230,7 +236,7 @@
     public Document documentFromResultSet(ResultSet rs,
                                           Map<Integer, List<Tag>> tags,
                                           Map<Integer, List<String>> ipiCodes,
-                                          Map<Integer, Set<String>> aliases,
+                                          Map<Integer, Set<Alias>> aliases,
                                           Map<Integer, Set<String>> artistCredits) throws SQLException {
 
         MbDocument doc = new MbDocument();
@@ -303,12 +309,12 @@
 
         if (aliases.containsKey(artistId)) {
             AliasList aliasList = of.createAliasList();
-            for (String aliasName : aliases.get(artistId)) {
-                doc.addField(ArtistIndexField.ALIAS, aliasName);
-
-                Alias alias = of.createAlias();
-                alias.setContent(aliasName);
-                aliasList.getAlias().add(alias);
+            for (Alias nextAlias : aliases.get(artistId)) {
+                doc.addField(ArtistIndexField.ALIAS, nextAlias.getContent());
+                if(!nextAlias.getSortName().equals(nextAlias.getContent())) {
+                    doc.addField(ArtistIndexField.ALIAS, nextAlias.getSortName());
+                }
+                aliasList.getAlias().add(nextAlias);
             }
             artist.setAliasList(aliasList);
         }

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-05-08 16:09:27 UTC (rev 13678)
+++ search_server/trunk/index/src/test/java/org/musicbrainz/search/index/AbstractIndexTest.java	2013-05-09 08:47:07 UTC (rev 13679)
@@ -341,19 +341,19 @@
                 "  id serial NOT NULL," +
                 "  artist integer NOT NULL," +
                 "  name integer NOT NULL," +
-                "  sort_name INTEGER," +
+                "  locale text," +
+                "  last_updated timestamp," +
+                "  edits_pending integer NOT NULL DEFAULT 0," +
                 "  type                INTEGER," +
+                "  sort_name           INTEGER," +
                 "  begin_date_year     SMALLINT," +
                 "  begin_date_month    SMALLINT," +
                 "  begin_date_day      SMALLINT," +
                 "  end_date_year       SMALLINT," +
                 "  end_date_month      SMALLINT," +
                 "  end_date_day        SMALLINT," +
-                "  locale text," +
-                "  last_updated timestamp," +
-                "  edits_pending integer NOT NULL DEFAULT 0" +
+                "  primary_for_locale  BOOLEAN"   +
                 ")");
-
         stmt.addBatch("CREATE TABLE artist_alias_type (" +
                 " id SERIAL,"  +
                 " name TEXT" +

Modified: search_server/trunk/index/src/test/java/org/musicbrainz/search/index/ArtistIndexTest.java
===================================================================
--- search_server/trunk/index/src/test/java/org/musicbrainz/search/index/ArtistIndexTest.java	2013-05-08 16:09:27 UTC (rev 13678)
+++ search_server/trunk/index/src/test/java/org/musicbrainz/search/index/ArtistIndexTest.java	2013-05-09 08:47:07 UTC (rev 13679)
@@ -270,7 +270,7 @@
      * @throws Exception exception
      */
     @Test
-    public void testIndexArtistWithAlias() throws Exception {
+    public void testIndexArtistWithAliasAndAliasSortname() throws Exception {
 
         addArtistTwo();
         RAMDirectory ramDir = new RAMDirectory();
@@ -280,11 +280,18 @@
         assertEquals(2, ir.numDocs());
         {
             checkTerm(ir, ArtistIndexField.ALIAS, "and");
+            checkTermX(ir, ArtistIndexField.ALIAS, "bunnyman",1);
+            checkTermX(ir, ArtistIndexField.ALIAS, "bunnymen",2);
+            checkTermX(ir, ArtistIndexField.ALIAS, "buunymen",3); //From alias sortname
+            checkTermX(ir, ArtistIndexField.ALIAS, "echo",4);
+            checkTermX(ir, ArtistIndexField.ALIAS, "orchestra",5);
 
         }
         ir.close();
     }
 
+
+
     /**
      * Checks zeroes are removed from date
      *