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