r12278 - in search_server/branches/ngs: index/src/main/java/org/musicbrainz/search/index servlet/src/main/java/org/musicbrainz/search/servlet/mmd2 servlet/src/test/java/org/musicbrainz/search/servlet

View: New views
1 Messages — Rating Filter:   Alert me  

r12278 - in search_server/branches/ngs: index/src/main/java/org/musicbrainz/search/index servlet/src/main/java/org/musicbrainz/search/servlet/mmd2 servlet/src/test/java/org/musicbrainz/search/servlet

by root-97 :: Rate this Message:

Reply (Restricted by the Administrator) | Reply to Author | View Threaded | Show Only this Message

Author: ijabz
Date: 2009-11-02 17:13:41 +0000 (Mon, 02 Nov 2009)
New Revision: 12278

Added:
   search_server/branches/ngs/index/src/main/java/org/musicbrainz/search/index/ReleaseWrapper.java
Modified:
   search_server/branches/ngs/index/src/main/java/org/musicbrainz/search/index/ReleaseGroupIndex.java
   search_server/branches/ngs/index/src/main/java/org/musicbrainz/search/index/ReleaseGroupIndexField.java
   search_server/branches/ngs/servlet/src/main/java/org/musicbrainz/search/servlet/mmd2/ReleaseGroupXmlWriter.java
   search_server/branches/ngs/servlet/src/test/java/org/musicbrainz/search/servlet/FindReleaseGroupTest.java
Log:
Added search for releaseGroup by releaseId
Added release ids and names for release linke dto releasegroup in xml

Modified: search_server/branches/ngs/index/src/main/java/org/musicbrainz/search/index/ReleaseGroupIndex.java
===================================================================
--- search_server/branches/ngs/index/src/main/java/org/musicbrainz/search/index/ReleaseGroupIndex.java 2009-11-02 16:37:20 UTC (rev 12277)
+++ search_server/branches/ngs/index/src/main/java/org/musicbrainz/search/index/ReleaseGroupIndex.java 2009-11-02 17:13:41 UTC (rev 12278)
@@ -61,7 +61,7 @@
     @Override
     public void init() throws SQLException {
         addPreparedStatement("RELEASES",
-                "SELECT DISTINCT release_group, n0.name as name " +
+                "SELECT DISTINCT release_group, release.gid as gid, n0.name as name " +
                 "FROM release " +
                 "LEFT JOIN release_name n0 ON release.name = n0.id " +
                 "WHERE release_group BETWEEN ? AND ?");
@@ -85,7 +85,7 @@
                         "order by rg.id,acn.position ");          //Order by pos so come in expected order
 
         addPreparedStatement("RELEASEGROUPS",
-            "SELECT rg.id, rg.gid, n0.name as name, lower(release_group_type.name) as type " +
+                        "SELECT rg.id, rg.gid, n0.name as name, lower(release_group_type.name) as type " +
                         "FROM release_group AS rg " +
                         "LEFT JOIN release_name n0 ON rg.name = n0.id " +
                         "LEFT JOIN release_group_type  ON rg.type = release_group_type.id " +
@@ -97,21 +97,24 @@
     public void indexData(IndexWriter indexWriter, int min, int max) throws SQLException, IOException {
 
         //Releases
-        Map<Integer, List<String>> releases = new HashMap<Integer, List<String>>();
+        Map<Integer, List<ReleaseWrapper>> releases = new HashMap<Integer, List<ReleaseWrapper>>();
         PreparedStatement st =getPreparedStatement("RELEASES");
         st.setInt(1, min);
         st.setInt(2, max);
         ResultSet rs = st.executeQuery();
         while (rs.next()) {
             int rgId = rs.getInt("release_group");
-            List<String> list;
+            List<ReleaseWrapper> list;
             if (!releases.containsKey(rgId)) {
-                list = new LinkedList<String>();
+                list = new LinkedList<ReleaseWrapper>();
                 releases.put(rgId, list);
             } else {
                 list = releases.get(rgId);
             }
-            list.add(rs.getString("name"));
+            ReleaseWrapper rw = new ReleaseWrapper();
+            rw.setReleaseId(rs.getString("gid"));
+            rw.setReleaseName(rs.getString("name"));
+            list.add(rw);
         }
 
         //Artists
@@ -151,7 +154,7 @@
 
     }
 
-    public Document documentFromResultSet(ResultSet rs, Map<Integer, List<String>> releases, Map<Integer, List<ArtistWrapper>> artists) throws SQLException {
+    public Document documentFromResultSet(ResultSet rs, Map<Integer, List<ReleaseWrapper>> releases, Map<Integer, List<ArtistWrapper>> artists) throws SQLException {
         Document doc = new Document();
         int id = rs.getInt("id");
         addFieldToDocument(doc, ReleaseGroupIndexField.RELEASEGROUP_ID, rs.getString("gid"));
@@ -160,8 +163,9 @@
 
         //Add each release name within this release group
         if (releases.containsKey(id)) {
-            for (String release : releases.get(id)) {
-                addFieldToDocument(doc, ReleaseGroupIndexField.RELEASE, release);
+            for (ReleaseWrapper release : releases.get(id)) {
+                addFieldOrHyphenToDocument(doc, ReleaseGroupIndexField.RELEASE, release.getReleaseName());
+                addFieldOrHyphenToDocument(doc, ReleaseGroupIndexField.RELEASE_ID, release.getReleaseId());
             }
         }
 

Modified: search_server/branches/ngs/index/src/main/java/org/musicbrainz/search/index/ReleaseGroupIndexField.java
===================================================================
--- search_server/branches/ngs/index/src/main/java/org/musicbrainz/search/index/ReleaseGroupIndexField.java 2009-11-02 16:37:20 UTC (rev 12277)
+++ search_server/branches/ngs/index/src/main/java/org/musicbrainz/search/index/ReleaseGroupIndexField.java 2009-11-02 17:13:41 UTC (rev 12278)
@@ -39,9 +39,11 @@
     RELEASEGROUP_ID    ("rgid", Field.Store.YES, Field.Index.NOT_ANALYZED, new KeywordAnalyzer()),
  RELEASEGROUP    ("releasegroup", Field.Store.YES, Field.Index.ANALYZED),
  TYPE    ("type", Field.Store.YES, Field.Index.NOT_ANALYZED, new KeywordAnalyzer()),
- RELEASE             ("release", Field.Store.YES, Field.Index.ANALYZED);
-
- private String name;
+ RELEASE             ("release", Field.Store.YES, Field.Index.ANALYZED),
+    RELEASE_ID    ("reid",    Field.Store.YES, Field.Index.NOT_ANALYZED, new KeywordAnalyzer()),
+    ;
+    
+    private String name;
  private Field.Store store;
  private Field.Index index;
     private Analyzer analyzer;

Modified: search_server/branches/ngs/servlet/src/main/java/org/musicbrainz/search/servlet/mmd2/ReleaseGroupXmlWriter.java
===================================================================
--- search_server/branches/ngs/servlet/src/main/java/org/musicbrainz/search/servlet/mmd2/ReleaseGroupXmlWriter.java 2009-11-02 16:37:20 UTC (rev 12277)
+++ search_server/branches/ngs/servlet/src/main/java/org/musicbrainz/search/servlet/mmd2/ReleaseGroupXmlWriter.java 2009-11-02 17:13:41 UTC (rev 12278)
@@ -31,6 +31,7 @@
 import org.apache.commons.lang.StringUtils;
 import org.musicbrainz.mmd2.*;
 import org.musicbrainz.search.index.ReleaseGroupIndexField;
+import org.musicbrainz.search.index.ReleaseIndexField;
 import org.musicbrainz.search.servlet.MbDocument;
 import org.musicbrainz.search.servlet.Result;
 import org.musicbrainz.search.servlet.Results;
@@ -93,9 +94,16 @@
                 releaseGroup.setArtistCredit(ac);
             }
 
-            //TODO For now just show no of releases linked to release group, but may want to list release names (and ids)
+            String[] releaseIds          = doc.getValues(ReleaseIndexField.RELEASE_ID);
+            String[] releaseNames        = doc.getValues(ReleaseIndexField.RELEASE);
             ReleaseList releaseList = of.createReleaseList();
-            releaseList.setCount(BigInteger.valueOf(doc.getValues(ReleaseGroupIndexField.RELEASE).length));
+            releaseList.setCount(BigInteger.valueOf(releaseIds.length));
+            for(int i =0; i< releaseIds.length; i++) {
+                Release release = of.createRelease();
+                release.setId(releaseIds[i]);
+                release.setTitle(releaseNames[i]);
+                releaseList.getRelease().add(release);
+            }
             releaseGroup.setReleaseList(releaseList);
             releaseGroupList.getReleaseGroup().add(releaseGroup);
         }

Modified: search_server/branches/ngs/servlet/src/test/java/org/musicbrainz/search/servlet/FindReleaseGroupTest.java
===================================================================
--- search_server/branches/ngs/servlet/src/test/java/org/musicbrainz/search/servlet/FindReleaseGroupTest.java 2009-11-02 16:37:20 UTC (rev 12277)
+++ search_server/branches/ngs/servlet/src/test/java/org/musicbrainz/search/servlet/FindReleaseGroupTest.java 2009-11-02 17:13:41 UTC (rev 12278)
@@ -46,6 +46,7 @@
         Document doc = new Document();
         Index.addFieldToDocument(doc, ReleaseGroupIndexField.RELEASEGROUP_ID, "2c7d81da-8fc3-3157-99c1-e9195ac92c45");
         Index.addFieldToDocument(doc, ReleaseGroupIndexField.RELEASEGROUP, "Nobody's Twisting Your Arm");
+        Index.addFieldToDocument(doc, ReleaseGroupIndexField.RELEASE_ID, "2c7d81da-8fc3-3157-99c1-e9195ac92c46");
         Index.addFieldToDocument(doc, ReleaseGroupIndexField.RELEASE, "secret");
 
         Index.addFieldToDocument(doc, ReleaseGroupIndexField.TYPE, ReleaseGroupType.SINGLE.getName());
@@ -122,6 +123,19 @@
         assertEquals("single", doc.get(ReleaseGroupIndexField.TYPE));
     }
 
+     public void testFindReleaseGroupByReleaseId() throws Exception {
+        Results res = ss.searchLucene("releaseid:\"2c7d81da-8fc3-3157-99c1-e9195ac92c46\"", 0, 10);
+        assertEquals(0, res.totalHits);
+        res = ss.searchLucene("release:secret", 0, 10);
+        assertEquals(1, res.totalHits);
+        Result result = res.results.get(0);
+        MbDocument doc = result.doc;
+        assertEquals("2c7d81da-8fc3-3157-99c1-e9195ac92c45", doc.get(ReleaseGroupIndexField.RELEASEGROUP_ID));
+        assertEquals("Nobody's Twisting Your Arm", doc.get(ReleaseGroupIndexField.RELEASEGROUP));
+        assertEquals("707622da-475f-48e1-905d-248718df6521", doc.get(ReleaseGroupIndexField.ARTIST_ID));
+        assertEquals("The Wedding Present", doc.get(ReleaseGroupIndexField.ARTIST_NAME));
+        assertEquals("single", doc.get(ReleaseGroupIndexField.TYPE));
+    }
 
     //release
     public void testFindReleaseGroupByArtist() throws Exception {
@@ -300,6 +314,7 @@
         assertTrue(output.contains("artist id=\"707622da-475f-48e1-905d-248718df6521\""));
         assertTrue(output.contains("type=\"single\""));
         assertTrue(output.contains("release-list count=\"1\""));
+        assertTrue(output.contains("<release id=\"2c7d81da-8fc3-3157-99c1-e9195ac92c46\"><title>secret</title></release>"));
 
 
     }


_______________________________________________
MusicBrainz-commits mailing list
MusicBrainz-commits@...
http://lists.musicbrainz.org/mailman/listinfo/musicbrainz-commits