[mb-commits] r13670 - in search_server/trunk: index index/src/main/java/org/musicbrainz/search/index index/src/test/java/org/musicbrainz/search/index 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, 01 May 2013 10:22:28 +0000
| Newsgroups | gmane.comp.audio.musicbrainz.cvs |
|---|---|
| Message-ID | <E1UXUBA-0002px-7s@wiley> |
Author: ijabz
Date: 2013-05-01 10:22:17 +0000 (Wed, 01 May 2013)
New Revision: 13670
Modified:
search_server/trunk/index/pom.xml
search_server/trunk/index/src/main/java/org/musicbrainz/search/index/ArtistCreditHelper.java
search_server/trunk/index/src/main/java/org/musicbrainz/search/index/MMDSerializer.java
search_server/trunk/index/src/main/java/org/musicbrainz/search/index/ReleaseEventHelper.java
search_server/trunk/index/src/main/java/org/musicbrainz/search/index/ReleaseIndex.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/AbstractIndexTest.java
search_server/trunk/index/src/test/java/org/musicbrainz/search/index/ReleaseIndexTest.java
search_server/trunk/servlet/pom.xml
search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd1/ReleaseMmd1XmlWriter.java
search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd2/ReleaseWriter.java
search_server/trunk/servlet/src/test/java/org/musicbrainz/search/servlet/FindReleaseTest.java
Log:
SEARCH-273/SEARCH-274:Releases changes for Schema Release.
Modified: search_server/trunk/index/pom.xml
===================================================================
--- search_server/trunk/index/pom.xml 2013-04-30 21:40:48 UTC (rev 13669)
+++ search_server/trunk/index/pom.xml 2013-05-01 10:22:17 UTC (rev 13670)
@@ -91,7 +91,12 @@
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-json</artifactId>
<version>1.1.4</version>
- </dependency>
+ </dependency>
+ <dependency>
+ <groupId>com.google.guava</groupId>
+ <artifactId>guava</artifactId>
+ <version>14.0.1</version>
+ </dependency>
</dependencies>
<build>
<pluginManagement>
Modified: search_server/trunk/index/src/main/java/org/musicbrainz/search/index/ArtistCreditHelper.java
===================================================================
--- search_server/trunk/index/src/main/java/org/musicbrainz/search/index/ArtistCreditHelper.java 2013-04-30 21:40:48 UTC (rev 13669)
+++ search_server/trunk/index/src/main/java/org/musicbrainz/search/index/ArtistCreditHelper.java 2013-05-01 10:22:17 UTC (rev 13670)
@@ -188,4 +188,42 @@
}
}
+
+ public static void buildIndexFieldsOnlyFromArtistCredit(MbDocument doc,
+ ArtistCredit ac,
+ IndexField artist,
+ IndexField artistNameCredit,
+ IndexField artistId,
+ IndexField artistName)
+
+ {
+ if (ac!=null) {
+
+ //Search Fields
+
+ //The full artist credit as it appears on the release
+ doc.addField(artist, ArtistCreditHelper.buildFullArtistCreditName(ac));
+ for(NameCredit nc:ac.getNameCredit()) {
+
+ //Each individual name credit (uses artist if name credit is unchanged from artist name)
+ if(nc.getName()!=null) {
+ doc.addField(artistNameCredit, nc.getName());
+ }
+ else {
+ doc.addField(artistNameCredit, nc.getArtist().getName());
+ }
+
+ //Each artist id and name on the release
+ doc.addField(artistId, nc.getArtist().getId());
+ doc.addField(artistName, nc.getArtist().getName());
+
+ //If there is an english locale based alias we add this to help when looking up releases
+ //by artists who name is in non-latin script
+ if(nc.getArtist().getAliasList()!=null)
+ {
+ doc.addField(artistName,(String)nc.getArtist().getAliasList().getAlias().get(0).getContent());
+ }
+ }
+ }
+ }
}
Modified: search_server/trunk/index/src/main/java/org/musicbrainz/search/index/MMDSerializer.java
===================================================================
--- search_server/trunk/index/src/main/java/org/musicbrainz/search/index/MMDSerializer.java 2013-04-30 21:40:48 UTC (rev 13669)
+++ search_server/trunk/index/src/main/java/org/musicbrainz/search/index/MMDSerializer.java 2013-05-01 10:22:17 UTC (rev 13670)
@@ -32,7 +32,7 @@
/**
- * Handles Serializing clases in the MMD for storing within Index, and deserealizing back into
+ * Handles Serializing classes in the MMD for storing within Index, and deserializing back into
* the original class.
*
* We use JSON rather than XML or Java Serialization because it is the quickest and takes less space.
Modified: search_server/trunk/index/src/main/java/org/musicbrainz/search/index/ReleaseEventHelper.java
===================================================================
--- search_server/trunk/index/src/main/java/org/musicbrainz/search/index/ReleaseEventHelper.java 2013-04-30 21:40:48 UTC (rev 13669)
+++ search_server/trunk/index/src/main/java/org/musicbrainz/search/index/ReleaseEventHelper.java 2013-05-01 10:22:17 UTC (rev 13670)
@@ -31,6 +31,7 @@
import org.musicbrainz.mmd2.ObjectFactory;
import org.musicbrainz.mmd2.Release;
+import org.musicbrainz.mmd2.ReleaseEvent;
import org.musicbrainz.mmd2.Tag;
import java.math.BigInteger;
@@ -43,21 +44,21 @@
public class ReleaseEventHelper {
- public static Map<Integer,List<Release>> completeReleaseEventsFromDbResults(ResultSet rs,
+ public static Map<Integer,List<ReleaseEvent>> completeReleaseEventsFromDbResults(ResultSet rs,
String entityKey) throws SQLException {
- Map<Integer, List<Release>> releaseEvents = new HashMap<Integer, List<Release>>();
+ Map<Integer, List<ReleaseEvent>> releaseEvents = new HashMap<Integer, List<ReleaseEvent>>();
ObjectFactory of = new ObjectFactory();
- List<Release> releaseEventList;
+ List<ReleaseEvent> releaseEventList;
while (rs.next()) {
int entityId = rs.getInt(entityKey);
if (!releaseEvents.containsKey(entityId)) {
- releaseEventList = new ArrayList<Release>();
+ releaseEventList = new ArrayList<ReleaseEvent>();
releaseEvents.put(entityId, releaseEventList);
} else {
releaseEventList = releaseEvents.get(entityId);
}
- Release releaseEvent = of.createRelease();
+ ReleaseEvent releaseEvent = of.createReleaseEvent();
releaseEvent.setCountry(rs.getString("country"));
releaseEvent.setDate(Utils.formatDate(rs.getInt("date_year"), rs.getInt("date_month"), rs.getInt("date_day")));
releaseEventList.add(releaseEvent);
Modified: search_server/trunk/index/src/main/java/org/musicbrainz/search/index/ReleaseIndex.java
===================================================================
--- search_server/trunk/index/src/main/java/org/musicbrainz/search/index/ReleaseIndex.java 2013-04-30 21:40:48 UTC (rev 13669)
+++ search_server/trunk/index/src/main/java/org/musicbrainz/search/index/ReleaseIndex.java 2013-05-01 10:22:17 UTC (rev 13670)
@@ -28,15 +28,17 @@
package org.musicbrainz.search.index;
+import com.google.common.base.Strings;
+import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.time.StopWatch;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.index.IndexWriter;
-import org.musicbrainz.mmd2.Release;
-import org.musicbrainz.mmd2.Tag;
+import org.musicbrainz.mmd2.*;
import org.musicbrainz.search.MbDocument;
import java.io.IOException;
+import java.math.BigInteger;
import java.sql.*;
import java.util.*;
@@ -252,15 +254,14 @@
}
- private Map<Integer, List<Release>> loadReleaseEvents(int min, int max) throws SQLException, IOException {
+ private Map<Integer, List<ReleaseEvent>> loadReleaseEvents(int min, int max) throws SQLException, IOException {
// Get Release Country
PreparedStatement st = getPreparedStatement("RELEASE_COUNTRY");
st.setInt(1, min);
st.setInt(2, max);
ResultSet rs = st.executeQuery();
- //TODO Will Become ReleaseEvent when MMD updated
- Map<Integer,List<Release>> releaseEvents = ReleaseEventHelper.completeReleaseEventsFromDbResults(rs,"release");
+ Map<Integer,List<ReleaseEvent>> releaseEvents = ReleaseEventHelper.completeReleaseEventsFromDbResults(rs,"release");
rs.close();
return releaseEvents;
@@ -269,7 +270,7 @@
public void indexData(IndexWriter indexWriter, int min, int max) throws SQLException, IOException {
Map<Integer, List<Tag>> tags = loadTags(min, max);
- Map<Integer, List<Release>> releaseEvents = loadReleaseEvents(min, max);
+ Map<Integer, List<ReleaseEvent>> releaseEvents = loadReleaseEvents(min, max);
//A particular release can have multiple catalog nos, labels when released as an imprint, typically used
//by major labels
@@ -387,103 +388,194 @@
public Document documentFromResultSet(ResultSet rs,
Map<Integer, List<String>> secondaryTypes,
Map<Integer,List<Tag>> tags,
- Map<Integer,List<Release>> releaseEvents,
+ Map<Integer,List<ReleaseEvent>> releaseEvents,
Map<Integer,List<List<String>>> labelInfo,
Map<Integer,List<List<String>>> mediums,
Map<Integer, List<String>> puids,
Map<Integer, ArtistCreditWrapper> artistCredits) throws SQLException {
MbDocument doc = new MbDocument();
+
+ ObjectFactory of = new ObjectFactory();
+ Release release = of.createRelease();
+
int id = rs.getInt("id");
doc.addField(ReleaseIndexField.ID, id);
doc.addField(ReleaseIndexField.RELEASE_ID, rs.getString("gid"));
+ release.setId(rs.getString("gid"));
+
String name = rs.getString("name");
doc.addField(ReleaseIndexField.RELEASE, name );
doc.addField(ReleaseIndexField.RELEASE_ACCENT, name);
+ release.setTitle(name);
String primaryType = rs.getString("type");
doc.addFieldOrUnknown(ReleaseIndexField.PRIMARY_TYPE, primaryType);
+ ReleaseGroup rg = of.createReleaseGroup();
+ release.setReleaseGroup(rg);
+ if (primaryType!=null && !primaryType.isEmpty()){
+ release.getReleaseGroup().setType(primaryType);
+ }
+
if (secondaryTypes.containsKey(id)) {
+ SecondaryTypeList stl = of.createSecondaryTypeList();
for (String secondaryType : secondaryTypes.get(id)) {
doc.addField(ReleaseIndexField.SECONDARY_TYPE, secondaryType);
+ stl.getSecondaryType().add(secondaryType);
}
+ release.getReleaseGroup().setSecondaryTypeList(stl);
}
+
String type = ReleaseGroupHelper.calculateOldTypeFromPrimaryType(primaryType, secondaryTypes.get(id));
doc.addFieldOrUnknown(ReleaseIndexField.TYPE, type);
+ if (type!=null && !type.isEmpty()) {
+ release.getReleaseGroup().setType(type);
+ }
+ String releaseGroupId = rs.getString("rg_gid");
+ doc.addNonEmptyField(ReleaseIndexField.RELEASEGROUP_ID, releaseGroupId);
+ release.getReleaseGroup().setId(releaseGroupId);
- doc.addNonEmptyField(ReleaseIndexField.RELEASEGROUP_ID, rs.getString("rg_gid"));
- doc.addFieldOrUnknown(ReleaseIndexField.STATUS, rs.getString("status"));
+ String status = rs.getString("status");
+ doc.addFieldOrUnknown(ReleaseIndexField.STATUS, status);
+ if (status!=null && !status.isEmpty()) {
+ release.setStatus(type);
+ }
-
-
String barcode = rs.getString("barcode");
if(barcode==null) {
doc.addField(ReleaseIndexField.BARCODE,Index.NO_VALUE);
}
else if(barcode.equals("")) {
doc.addField(ReleaseIndexField.BARCODE, BARCODE_NONE);
+ release.setBarcode(barcode);
}
else {
doc.addField(ReleaseIndexField.BARCODE,barcode);
+ release.setBarcode(barcode);
}
- doc.addFieldOrNoValue(ReleaseIndexField.AMAZON_ID, rs.getString("amazon_asin"));
+ String asin = rs.getString("amazon_asin");
+ doc.addFieldOrNoValue(ReleaseIndexField.AMAZON_ID, asin);
+ if (asin!=null && !asin.isEmpty()) {
+ release.setAsin(asin);
+ }
+
+ boolean isScriptOrLanguage = false;
+ TextRepresentation tr = of.createTextRepresentation();
+ String script = rs.getString("script");
+ doc.addFieldOrUnknown(ReleaseIndexField.SCRIPT, script) ;
+ if (script!=null && !script.isEmpty()) {
+ tr.setScript(script);
+ isScriptOrLanguage=true;
+ }
+
String lang3= rs.getString("language");
String lang2= rs.getString("language_2t");
if(lang3!=null)
{
doc.addFieldOrUnknown(ReleaseIndexField.LANGUAGE, lang3);
+ tr.setLanguage(lang3.toLowerCase(Locale.US));
+ isScriptOrLanguage=true;
}
- else
+ else if(lang2!=null)
{
doc.addFieldOrUnknown(ReleaseIndexField.LANGUAGE, lang2);
+ tr.setLanguage(lang2.toLowerCase(Locale.US));
+ isScriptOrLanguage=true;
}
- doc.addFieldOrUnknown(ReleaseIndexField.SCRIPT, rs.getString("script"));
- doc.addFieldOrNoValue(ReleaseIndexField.COMMENT, rs.getString("comment"));
+ else {
+ doc.addFieldOrUnknown(ReleaseIndexField.LANGUAGE, null);
+ }
+ if(isScriptOrLanguage) {
+ release.setTextRepresentation(tr);
+ }
+ String comment = rs.getString("comment");
+ doc.addFieldOrNoValue(ReleaseIndexField.COMMENT, comment);
+ if (comment!=null && !comment.isEmpty()) {
+ release.setDisambiguation(comment);
+ }
+
if (labelInfo.containsKey(id)) {
+ LabelInfoList labelInfoList = of.createLabelInfoList();
for (List<String> entry : labelInfo.get(id)) {
+ LabelInfo li = of.createLabelInfo();
+ Label label = of.createLabel();
+ li.setLabel(label);
+ labelInfoList.getLabelInfo().add(li);
doc.addFieldOrNoValue(ReleaseIndexField.LABEL_ID, entry.get(0));
+ if(entry.get(0)!=null && !entry.get(0).isEmpty()) {
+ label.setId(entry.get(0));
+ }
+
doc.addFieldOrNoValue(ReleaseIndexField.LABEL, entry.get(1));
+ if(entry.get(1)!=null && !entry.get(1).isEmpty()) {
+ label.setName(entry.get(1));
+ }
+
doc.addFieldOrUnknown(ReleaseIndexField.CATALOG_NO, entry.get(2));
+ if(entry.get(2)!=null && !entry.get(2).isEmpty()) {
+ li.setCatalogNumber(entry.get(2));
+ }
}
+ release.setLabelInfoList(labelInfoList);
}
+ else {
+ doc.addFieldOrNoValue(ReleaseIndexField.LABEL, null);
+ doc.addFieldOrNoValue(ReleaseIndexField.CATALOG_NO, null);
+ }
int trackCount = 0;
int discCount = 0;
int mediumCount = 0;
if (mediums.containsKey(id)) {
+ MediumList mediumList = of.createMediumList();
for (List<String> entry : mediums.get(id)) {
- String str;
- str = entry.get(0);
- doc.addFieldOrNoValue(ReleaseIndexField.FORMAT, str);
+ Medium medium = of.createMedium();
+
+ String mediumFormat = entry.get(0);
+ doc.addFieldOrNoValue(ReleaseIndexField.FORMAT, mediumFormat);
+ if(mediumFormat!=null && !mediumFormat.isEmpty()) {
+ medium.setFormat(mediumFormat);
+ }
+
+ //Num of tracks on the Medium
int numTracksOnMedium = Integer.parseInt(entry.get(1));
doc.addNumericField(ReleaseIndexField.NUM_TRACKS_MEDIUM, numTracksOnMedium);
+ org.musicbrainz.mmd2.Medium.TrackList trackList = of.createMediumTrackList();
+ trackList.setCount(BigInteger.valueOf(numTracksOnMedium));
trackCount += numTracksOnMedium;
+ medium.setTrackList(trackList);
+ //Num of discids associated with medium
int numDiscsOnMedium = Integer.parseInt(entry.get(2));
doc.addNumericField(ReleaseIndexField.NUM_DISCIDS_MEDIUM, numDiscsOnMedium);
discCount += numDiscsOnMedium;
mediumCount++;
+ DiscList discList = of.createDiscList();
+ discList.setCount(BigInteger.valueOf(numDiscsOnMedium));
+ medium.setDiscList(discList);
+
+ mediumList.getMedium().add(medium);
+
}
+
//Num of mediums on the release
doc.addNumericField(ReleaseIndexField.NUM_MEDIUMS, mediumCount);
//Num Tracks over the whole release
doc.addNumericField(ReleaseIndexField.NUM_TRACKS, trackCount);
+ mediumList.setTrackCount(BigInteger.valueOf(trackCount));
- //Num Discs over the whole release
+ //Num Discs Ids over the whole release
doc.addNumericField(ReleaseIndexField.NUM_DISCIDS, discCount);
-
}
else
{
//No mediums on release
doc.addNumericField(ReleaseIndexField.NUM_MEDIUMS, 0);
-
}
-
if (puids.containsKey(id)) {
for (String puid : puids.get(id)) {
doc.addField(ReleaseIndexField.PUID, puid);
@@ -493,36 +585,61 @@
ArtistCreditWrapper ac = artistCredits.get(id);
if(ac!=null) {
- ArtistCreditHelper.buildIndexFieldsFromArtistCredit
+ ArtistCreditHelper.buildIndexFieldsOnlyFromArtistCredit
(doc,
ac.getArtistCredit(),
ReleaseIndexField.ARTIST,
ReleaseIndexField.ARTIST_NAMECREDIT,
ReleaseIndexField.ARTIST_ID,
- ReleaseIndexField.ARTIST_NAME,
- ReleaseIndexField.ARTIST_CREDIT);
+ ReleaseIndexField.ARTIST_NAME);
+ release.setArtistCredit(ac.getArtistCredit());
}
else {
System.out.println("\nNo artist credit found for release:"+rs.getString("gid"));
}
if (tags.containsKey(id)) {
- for (Tag tag : tags.get(id)) {
- doc.addField(ReleaseIndexField.TAG, tag.getName());
- doc.addField(ReleaseIndexField.TAGCOUNT, tag.getCount().toString());
+ TagList tagList = of.createTagList();
+ for (Tag nextTag : tags.get(id)) {
+ Tag tag = of.createTag();
+ doc.addField(ReleaseIndexField.TAG, nextTag.getName());
+ tag.setName(nextTag.getName());
+ tag.setCount(new BigInteger(nextTag.getCount().toString()));
+ tagList.getTag().add(tag);
}
+ release.setTagList(tagList);
}
if (releaseEvents.containsKey(id)) {
- for (Release releaseEvent : releaseEvents.get(id)) {
- doc.addFieldOrUnknown(ReleaseIndexField.COUNTRY, releaseEvent.getCountry());
- doc.addFieldOrUnknown(ReleaseIndexField.DATE, releaseEvent.getDate());
+ ReleaseEventList rel = of.createReleaseEventList();
+ for (ReleaseEvent releaseEvent : releaseEvents.get(id)) {
+
+ String nextCountry = releaseEvent.getCountry();
+ doc.addFieldOrUnknown(ReleaseIndexField.COUNTRY,nextCountry);
+
+ String nextDate = releaseEvent.getDate();
+ doc.addFieldOrUnknown(ReleaseIndexField.DATE, nextDate );
+ rel.getReleaseEvent().add(releaseEvent);
}
+ release.setReleaseEventList(rel);
+
+ //backwards compatability
+ ReleaseEvent firstReleaseEvent = rel.getReleaseEvent().get(0);
+ if (!Strings.isNullOrEmpty(firstReleaseEvent.getCountry())) {
+ release.setCountry(firstReleaseEvent.getCountry());
+ }
+ if (!Strings.isNullOrEmpty(firstReleaseEvent.getDate())) {
+ release.setDate(firstReleaseEvent.getDate());
+ }
}
else {
doc.addFieldOrUnknown(ReleaseIndexField.COUNTRY, null);
- doc.addFieldOrUnknown(ReleaseIndexField.DATE, null);
+ doc.addFieldOrUnknown(ReleaseIndexField.DATE, null );
}
+
+
+ doc.addField(ReleaseIndexField.RELEASE_STORE, MMDSerializer.serialize(release));
+
return doc.getLuceneDocument();
}
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-04-30 21:40:48 UTC (rev 13669)
+++ search_server/trunk/index/src/main/java/org/musicbrainz/search/index/ReleaseIndexField.java 2013-05-01 10:22:17 UTC (rev 13670)
@@ -11,38 +11,38 @@
public enum ReleaseIndexField implements IndexField {
ID ("_id", MusicBrainzFieldTypes.TEXT_STORED_NOT_ANALYZED_NO_NORMS, new KeywordAnalyzer()),
- AMAZON_ID ("asin", MusicBrainzFieldTypes.TEXT_STORED_ANALYZED_NO_NORMS, new CaseInsensitiveKeywordAnalyzer()),
+ AMAZON_ID ("asin", MusicBrainzFieldTypes.TEXT_NOT_STORED_ANALYZED_NO_NORMS, new CaseInsensitiveKeywordAnalyzer()),
ARTIST_ID ("arid", MusicBrainzFieldTypes.TEXT_NOT_STORED_ANALYZED_NO_NORMS, new KeywordAnalyzer()),
ARTIST ("artist", MusicBrainzFieldTypes.TEXT_NOT_STORED_ANALYZED, new MusicbrainzWithPosGapAnalyzer()),
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 StripLeadingZeroesAnalyzer()),
- CATALOG_NO ("catno", MusicBrainzFieldTypes.TEXT_STORED_ANALYZED_NO_NORMS, new StripSpacesAndSeparatorsAnalyzer()),
- COMMENT ("comment", MusicBrainzFieldTypes.TEXT_STORED_ANALYZED),
- COUNTRY ("country", MusicBrainzFieldTypes.TEXT_STORED_ANALYZED_NO_NORMS, new CaseInsensitiveKeywordAnalyzer()),
- DATE ("date", MusicBrainzFieldTypes.TEXT_STORED_NOT_ANALYZED_NO_NORMS, new KeywordAnalyzer()),
- FORMAT ("format", MusicBrainzFieldTypes.TEXT_STORED_ANALYZED, new CaseInsensitiveKeywordAnalyzer()),
- LABEL ("label", MusicBrainzFieldTypes.TEXT_STORED_ANALYZED, new MusicbrainzWithPosGapAnalyzer()),
- LABEL_ID ("laid", MusicBrainzFieldTypes.TEXT_STORED_NOT_ANALYZED_NO_NORMS, new KeywordAnalyzer()),
- LANGUAGE ("lang", MusicBrainzFieldTypes.TEXT_STORED_NOT_ANALYZED_NO_NORMS, new CaseInsensitiveKeywordAnalyzer()),
- NUM_DISCIDS ("discids", MusicBrainzFieldTypes.TEXT_STORED_NOT_ANALYZED_NO_NORMS, new KeywordAnalyzer()),
- NUM_DISCIDS_MEDIUM ("discidsmedium", MusicBrainzFieldTypes.TEXT_STORED_NOT_ANALYZED_NO_NORMS, new KeywordAnalyzer()),
+ BARCODE ("barcode", MusicBrainzFieldTypes.TEXT_NOT_STORED_ANALYZED_NO_NORMS, new StripLeadingZeroesAnalyzer()),
+ CATALOG_NO ("catno", MusicBrainzFieldTypes.TEXT_NOT_STORED_ANALYZED_NO_NORMS, new StripSpacesAndSeparatorsAnalyzer()),
+ COMMENT ("comment", MusicBrainzFieldTypes.TEXT_NOT_STORED_ANALYZED),
+ COUNTRY ("country", MusicBrainzFieldTypes.TEXT_NOT_STORED_ANALYZED_NO_NORMS, new CaseInsensitiveKeywordAnalyzer()),
+ DATE ("date", MusicBrainzFieldTypes.TEXT_NOT_STORED_NOT_ANALYZED_NO_NORMS, new KeywordAnalyzer()),
+ FORMAT ("format", MusicBrainzFieldTypes.TEXT_NOT_STORED_ANALYZED, new CaseInsensitiveKeywordAnalyzer()),
+ LABEL ("label", MusicBrainzFieldTypes.TEXT_NOT_STORED_ANALYZED, new MusicbrainzWithPosGapAnalyzer()),
+ LABEL_ID ("laid", MusicBrainzFieldTypes.TEXT_NOT_STORED_NOT_ANALYZED_NO_NORMS, new KeywordAnalyzer()),
+ LANGUAGE ("lang", MusicBrainzFieldTypes.TEXT_NOT_STORED_NOT_ANALYZED_NO_NORMS, new CaseInsensitiveKeywordAnalyzer()),
+ NUM_DISCIDS ("discids", MusicBrainzFieldTypes.TEXT_NOT_STORED_NOT_ANALYZED_NO_NORMS, new KeywordAnalyzer()),
+ NUM_DISCIDS_MEDIUM ("discidsmedium", MusicBrainzFieldTypes.TEXT_NOT_STORED_NOT_ANALYZED_NO_NORMS, new KeywordAnalyzer()),
NUM_MEDIUMS ("mediums", MusicBrainzFieldTypes.TEXT_NOT_STORED_NOT_ANALYZED_NO_NORMS, new KeywordAnalyzer()),
- NUM_TRACKS ("tracks", MusicBrainzFieldTypes.TEXT_STORED_NOT_ANALYZED_NO_NORMS, new KeywordAnalyzer()),
- NUM_TRACKS_MEDIUM ("tracksmedium", MusicBrainzFieldTypes.TEXT_STORED_NOT_ANALYZED_NO_NORMS, new KeywordAnalyzer()),
- PRIMARY_TYPE ("primarytype", MusicBrainzFieldTypes.TEXT_STORED_ANALYZED_NO_NORMS, new CaseInsensitiveKeywordAnalyzer()),
+ NUM_TRACKS ("tracks", MusicBrainzFieldTypes.TEXT_NOT_STORED_NOT_ANALYZED_NO_NORMS, new KeywordAnalyzer()),
+ NUM_TRACKS_MEDIUM ("tracksmedium", MusicBrainzFieldTypes.TEXT_NOT_STORED_NOT_ANALYZED_NO_NORMS, new KeywordAnalyzer()),
+ PRIMARY_TYPE ("primarytype", MusicBrainzFieldTypes.TEXT_NOT_STORED_ANALYZED_NO_NORMS, new CaseInsensitiveKeywordAnalyzer()),
PUID ("puid", MusicBrainzFieldTypes.TEXT_NOT_STORED_NOT_ANALYZED_NO_NORMS, new KeywordAnalyzer()),
- RELEASE ("release", MusicBrainzFieldTypes.TEXT_STORED_ANALYZED, new TitleAnalyzer()),
+ RELEASE ("release", MusicBrainzFieldTypes.TEXT_NOT_STORED_ANALYZED, new TitleAnalyzer()),
RELEASE_ACCENT ("releaseaccent", MusicBrainzFieldTypes.TEXT_NOT_STORED_ANALYZED, new MusicbrainzKeepAccentsAnalyzer()),
- RELEASE_ID ("reid", MusicBrainzFieldTypes.TEXT_STORED_NOT_ANALYZED_NO_NORMS, new KeywordAnalyzer()),
- RELEASEGROUP_ID ("rgid", MusicBrainzFieldTypes.TEXT_STORED_NOT_ANALYZED_NO_NORMS, new KeywordAnalyzer()),
- SCRIPT ("script", MusicBrainzFieldTypes.TEXT_STORED_ANALYZED, new CaseInsensitiveKeywordAnalyzer()),
- SECONDARY_TYPE ("secondarytype", MusicBrainzFieldTypes.TEXT_STORED_ANALYZED_NO_NORMS, new CaseInsensitiveKeywordAnalyzer()),
- STATUS ("status", MusicBrainzFieldTypes.TEXT_STORED_ANALYZED_NO_NORMS, new CaseInsensitiveKeywordAnalyzer()),
- TAG ("tag", MusicBrainzFieldTypes.TEXT_STORED_ANALYZED, new MusicbrainzWithPosGapAnalyzer()),
- TAGCOUNT ("tagcount", MusicBrainzFieldTypes.TEXT_STORED_NOT_INDEXED),
- TYPE ("type", MusicBrainzFieldTypes.TEXT_STORED_ANALYZED_NO_NORMS, new CaseInsensitiveKeywordAnalyzer()),
+ RELEASE_ID ("reid", MusicBrainzFieldTypes.TEXT_NOT_STORED_NOT_ANALYZED_NO_NORMS, new KeywordAnalyzer()),
+ RELEASEGROUP_ID ("rgid", MusicBrainzFieldTypes.TEXT_NOT_STORED_NOT_ANALYZED_NO_NORMS, new KeywordAnalyzer()),
+ SCRIPT ("script", MusicBrainzFieldTypes.TEXT_NOT_STORED_ANALYZED, new CaseInsensitiveKeywordAnalyzer()),
+ SECONDARY_TYPE ("secondarytype", MusicBrainzFieldTypes.TEXT_NOT_STORED_ANALYZED_NO_NORMS, new CaseInsensitiveKeywordAnalyzer()),
+ STATUS ("status", MusicBrainzFieldTypes.TEXT_NOT_STORED_ANALYZED_NO_NORMS, new CaseInsensitiveKeywordAnalyzer()),
+ TAG ("tag", MusicBrainzFieldTypes.TEXT_NOT_STORED_ANALYZED, new MusicbrainzWithPosGapAnalyzer()),
+ TYPE ("type", MusicBrainzFieldTypes.TEXT_NOT_STORED_ANALYZED_NO_NORMS, new CaseInsensitiveKeywordAnalyzer()),
+ RELEASE_STORE ("releasestore", MusicBrainzFieldTypes.TEXT_STORED_NOT_INDEXED),
;
private String name;
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-04-30 21:40:48 UTC (rev 13669)
+++ search_server/trunk/index/src/test/java/org/musicbrainz/search/index/AbstractIndexTest.java 2013-05-01 10:22:17 UTC (rev 13670)
@@ -3,6 +3,7 @@
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.index.*;
import org.apache.lucene.store.RAMDirectory;
+import org.apache.lucene.util.NumericUtils;
import org.junit.Before;
import org.musicbrainz.search.LuceneVersion;
@@ -61,7 +62,16 @@
assertEquals(value,termsEnum.term().utf8ToString());
}
- /** Check first term of given field, terms are listed lexigrahically
+ protected void checkTerm(IndexReader ir, IndexField field, int value) throws IOException {
+
+ Fields fields = MultiFields.getFields(ir);
+ Terms terms = fields.terms(field.getName());
+ TermsEnum termsEnum = terms.iterator(null);
+ termsEnum.next();
+ assertEquals(value, NumericUtils.prefixCodedToInt(termsEnum.term()));
+ }
+
+ /** Check nth term of given field, terms are listed lexigraphically
* Use when field is indexed. but not stored
*
* @param ir
Modified: search_server/trunk/index/src/test/java/org/musicbrainz/search/index/ReleaseIndexTest.java
===================================================================
--- search_server/trunk/index/src/test/java/org/musicbrainz/search/index/ReleaseIndexTest.java 2013-04-30 21:40:48 UTC (rev 13669)
+++ search_server/trunk/index/src/test/java/org/musicbrainz/search/index/ReleaseIndexTest.java 2013-05-01 10:22:17 UTC (rev 13670)
@@ -6,6 +6,7 @@
import org.apache.lucene.util.NumericUtils;
import org.junit.Test;
import org.musicbrainz.mmd2.ArtistCredit;
+import org.musicbrainz.mmd2.Release;
import java.sql.Statement;
@@ -96,6 +97,11 @@
stmt.addBatch("INSERT INTO release (id, gid, name, artist_credit, release_group, status, packaging," +
" language, script) " +
" VALUES (491240, 'c3b8dbc9-c1ff-4743-9015-8d762819134e', 2, 1, 491240, 1, 1, 1, 1)");
+
+ stmt.addBatch("INSERT INTO release_country (release, country, date_year, date_month, date_day) values (491241, 221, 1970,1,1)");
+ stmt.addBatch("INSERT INTO area (id, name) VALUES (221, 'United Kingdom')");
+ stmt.addBatch("INSERT INTO iso_3166_1 (area, code) VALUES (221, 'GB')");
+
stmt.addBatch("INSERT INTO release_meta (id, amazon_asin) VALUES (491240, 'B00005NTQ7')");
stmt.addBatch("INSERT INTO medium (id, track_count, release, position) VALUES (1, 1, 491240, 1)");
@@ -127,6 +133,11 @@
stmt.addBatch("INSERT INTO release (id, gid, name, artist_credit, release_group, packaging," +
" language, script) " +
" VALUES (491240, 'c3b8dbc9-c1ff-4743-9015-8d762819134e', 2, 1, 491240, 1, 1, 1)");
+
+ stmt.addBatch("INSERT INTO release_country (release, country, date_year, date_month, date_day) values (491240, 221, 1970,1,1)");
+ stmt.addBatch("INSERT INTO area (id, name) VALUES (221, 'United Kingdom')");
+ stmt.addBatch("INSERT INTO iso_3166_1 (area, code) VALUES (221, 'GB')");
+
stmt.addBatch("INSERT INTO release_meta (id, amazon_asin) VALUES (491240, 'B00005NTQ7')");
stmt.addBatch("INSERT INTO medium (id, track_count, release, position, format) VALUES (1, 10, 491240, 1, 7)");
stmt.addBatch("INSERT INTO medium_cdtoc (id, medium, cdtoc) VALUES (1, 1, 1)");
@@ -162,6 +173,15 @@
stmt.addBatch("INSERT INTO release (id, gid, name, artist_credit, release_group, status, packaging," +
"language, script) " +
" VALUES (491240,'c3b8dbc9-c1ff-4743-9015-8d762819134e', 2, 1, 491240, 1, 1, 1, 28)");
+
+ stmt.addBatch("INSERT INTO release_country (release, country, date_year, date_month, date_day) values (491240, 221, 1970,1,1)");
+ stmt.addBatch("INSERT INTO area (id, name) VALUES (221, 'United Kingdom')");
+ stmt.addBatch("INSERT INTO iso_3166_1 (area, code) VALUES (221, 'GB')");
+
+ stmt.addBatch("INSERT INTO release_country (release, country, date_year, date_month, date_day) values (491240, 222, 1970,1,1)");
+ stmt.addBatch("INSERT INTO area (id, name) VALUES (222, 'Sweden')");
+ stmt.addBatch("INSERT INTO iso_3166_1 (area, code) VALUES (222, 'SW')");
+
stmt.addBatch("INSERT INTO language (id, iso_code_3, iso_code_2t, iso_code_2b, iso_code_2, name, frequency) " +
" VALUES (1, null, 'eng', 'eng', 'en', 'English', 1)");
stmt.addBatch("INSERT INTO script (id, iso_code, iso_number, name, frequency) VALUES (28, 'Latn' , 215, 'Latin', 4)");
@@ -240,16 +260,13 @@
assertEquals(2, ir.numDocs());
{
Document doc = ir.document(1);
- assertEquals(1, doc.getFields(ReleaseIndexField.RELEASE.getName()).length);
- assertEquals("Crocodiles (bonus disc)", doc.getField(ReleaseIndexField.RELEASE.getName()).stringValue());
- assertEquals("c3b8dbc9-c1ff-4743-9015-8d762819134e", doc.getField(ReleaseIndexField.RELEASE_ID.getName()).stringValue());
- assertEquals(1, doc.getFields(ReleaseIndexField.TYPE.getName()).length);
- assertEquals("EP", doc.getField(ReleaseIndexField.TYPE.getName()).stringValue());
- assertEquals("efd2ace2-b3b9-305f-8a53-9803595c0e37", doc.getField(ReleaseIndexField.RELEASEGROUP_ID.getName()).stringValue());
- assertEquals(1, doc.getFields(ReleaseIndexField.STATUS.getName()).length);
- assertEquals("Official", doc.getField(ReleaseIndexField.STATUS.getName()).stringValue());
- assertEquals(1, doc.getFields(ReleaseIndexField.LANGUAGE.getName()).length);
- assertEquals(1, doc.getFields(ReleaseIndexField.SCRIPT.getName()).length);
+ checkTerm(ir, ReleaseIndexField.RELEASE, "bonus");
+ checkTerm(ir, ReleaseIndexField.RELEASE_ID, "c3b8dbc9-c1ff-4743-9015-8d762819134e");
+ checkTerm(ir, ReleaseIndexField.TYPE, "ep");
+ checkTerm(ir, ReleaseIndexField.RELEASEGROUP_ID, "efd2ace2-b3b9-305f-8a53-9803595c0e37");
+ checkTerm(ir, ReleaseIndexField.STATUS, "official");
+ checkTerm(ir, ReleaseIndexField.LANGUAGE, "unknown");
+ checkTerm(ir, ReleaseIndexField.SCRIPT, "unknown");
}
ir.close();
}
@@ -267,13 +284,12 @@
IndexReader ir = DirectoryReader.open(ramDir);
assertEquals(2, ir.numDocs());
{
+
Document doc = ir.document(1);
- checkTerm(ir, ReleaseIndexField.ARTIST_NAME, "and");
- ArtistCredit ac = ArtistCreditHelper.unserialize(doc.get(ReleaseIndexField.ARTIST_CREDIT.getName()));
+ Release release = (Release) MMDSerializer.unserialize(doc.get(ReleaseIndexField.RELEASE_STORE.getName()), Release.class);
+ ArtistCredit ac = release.getArtistCredit();
assertNotNull(ac);
assertEquals("Echo & The Bunnymen", ac.getNameCredit().get(0).getArtist().getName());
- assertEquals(null, ac.getNameCredit().get(0).getJoinphrase());
-
}
ir.close();
}
@@ -292,10 +308,9 @@
assertEquals(2, ir.numDocs());
{
Document doc = ir.document(1);
- assertEquals(1, doc.getFields(ReleaseIndexField.NUM_DISCIDS_MEDIUM.getName()).length);
- //assertEquals(1, NumericUtils.prefixCodedToInt(doc.getField(ReleaseIndexField.NUM_DISCIDS_MEDIUM.getName()).stringValue()));
- assertEquals(1, doc.getFields(ReleaseIndexField.NUM_DISCIDS.getName()).length);
- //assertEquals(1, NumericUtils.prefixCodedToInt(doc.getField(ReleaseIndexField.NUM_DISCIDS.getName()).stringValue()));
+
+ checkTerm(ir,ReleaseIndexField.NUM_DISCIDS_MEDIUM,1);
+ checkTerm(ir,ReleaseIndexField.NUM_DISCIDS,1);
}
ir.close();
}
@@ -334,7 +349,8 @@
assertEquals(2, ir.numDocs());
{
Document doc = ir.document(1);
- ArtistCredit ac = ArtistCreditHelper.unserialize(doc.get(ReleaseIndexField.ARTIST_CREDIT.getName()));
+ Release release = (Release) MMDSerializer.unserialize(doc.get(ReleaseIndexField.RELEASE_STORE.getName()), Release.class);
+ ArtistCredit ac = release.getArtistCredit();
assertNotNull(ac);
assertEquals("Echo and The Bunnymen", ac.getNameCredit().get(0).getArtist().getSortName());
}
@@ -354,9 +370,7 @@
IndexReader ir = DirectoryReader.open(ramDir);
assertEquals(2, ir.numDocs());
{
- Document doc = ir.document(1);
- assertEquals(1, doc.getFields(ArtistIndexField.TYPE.getName()).length);
- assertEquals("unknown", doc.getField(ArtistIndexField.TYPE.getName()).stringValue());
+ checkTerm(ir, ReleaseIndexField.TYPE, "unknown");
}
ir.close();
}
@@ -374,10 +388,7 @@
IndexReader ir = DirectoryReader.open(ramDir);
assertEquals(2, ir.numDocs());
{
- Document doc = ir.document(1);
- assertEquals(1, doc.getFields(ReleaseIndexField.RELEASE.getName()).length);
- assertEquals(1, doc.getFields(ReleaseIndexField.LANGUAGE.getName()).length);
- assertEquals(Index.UNKNOWN, doc.getField(ReleaseIndexField.LANGUAGE.getName()).stringValue());
+ checkTerm(ir, ReleaseIndexField.LANGUAGE, "unknown");
}
ir.close();
}
@@ -395,10 +406,7 @@
IndexReader ir = DirectoryReader.open(ramDir);
assertEquals(2, ir.numDocs());
{
- Document doc = ir.document(1);
- assertEquals(1, doc.getFields(ReleaseIndexField.RELEASE.getName()).length);
- assertEquals(1, doc.getFields(ReleaseIndexField.SCRIPT.getName()).length);
- assertEquals(Index.UNKNOWN, doc.getField(ReleaseIndexField.SCRIPT.getName()).stringValue());
+ checkTerm(ir, ReleaseIndexField.SCRIPT, "unknown");
}
ir.close();
}
@@ -416,10 +424,7 @@
IndexReader ir = DirectoryReader.open(ramDir);
assertEquals(2, ir.numDocs());
{
- Document doc = ir.document(1);
- assertEquals(1, doc.getFields(ReleaseIndexField.RELEASE.getName()).length);
- assertEquals(1, doc.getFields(ReleaseIndexField.FORMAT.getName()).length);
- assertEquals("-", doc.getField(ReleaseIndexField.FORMAT.getName()).stringValue());
+ checkTerm(ir, ReleaseIndexField.FORMAT, "-");
}
ir.close();
}
@@ -437,9 +442,7 @@
IndexReader ir = DirectoryReader.open(ramDir);
assertEquals(2, ir.numDocs());
{
- Document doc = ir.document(1);
- assertEquals(1, doc.getFields(ReleaseIndexField.RELEASE.getName()).length);
- assertEquals(1, doc.getFields(ReleaseIndexField.BARCODE.getName()).length);
+ checkTerm(ir, ReleaseIndexField.BARCODE, "-");
}
ir.close();
}
@@ -457,9 +460,7 @@
IndexReader ir = DirectoryReader.open(ramDir);
assertEquals(2, ir.numDocs());
{
- Document doc = ir.document(1);
- assertEquals(1, doc.getFields(ReleaseIndexField.RELEASE.getName()).length);
- assertEquals(0, doc.getFields(ReleaseIndexField.LABEL.getName()).length);
+ checkTerm(ir, ReleaseIndexField.LABEL, "-");
}
ir.close();
}
@@ -477,9 +478,7 @@
IndexReader ir = DirectoryReader.open(ramDir);
assertEquals(2, ir.numDocs());
{
- Document doc = ir.document(1);
- assertEquals(1, doc.getFields(ReleaseIndexField.RELEASE.getName()).length);
- assertEquals(0, doc.getFields(ReleaseIndexField.CATALOG_NO.getName()).length);
+ checkTerm(ir, ReleaseIndexField.CATALOG_NO, "-");
}
ir.close();
}
@@ -497,10 +496,7 @@
IndexReader ir = DirectoryReader.open(ramDir);
assertEquals(2, ir.numDocs());
{
- Document doc = ir.document(1);
- assertEquals(1, doc.getFields(ReleaseIndexField.RELEASE.getName()).length);
- assertEquals(1, doc.getFields(ReleaseIndexField.COUNTRY.getName()).length);
- assertEquals(Index.UNKNOWN, doc.getField(ReleaseIndexField.COUNTRY.getName()).stringValue());
+ checkTerm(ir, ReleaseIndexField.COUNTRY, "unknown");
}
ir.close();
@@ -519,9 +515,7 @@
IndexReader ir = DirectoryReader.open(ramDir);
assertEquals(2, ir.numDocs());
{
- Document doc = ir.document(1);
- assertEquals(1, doc.getFields(ReleaseIndexField.RELEASE.getName()).length);
- assertEquals(1, doc.getFields(ReleaseIndexField.DATE.getName()).length);
+ checkTerm(ir, ReleaseIndexField.DATE, "unknown");
}
ir.close();
}
@@ -539,10 +533,7 @@
IndexReader ir = DirectoryReader.open(ramDir);
assertEquals(2, ir.numDocs());
{
- Document doc = ir.document(1);
- assertEquals(1, doc.getFields(ReleaseIndexField.RELEASE.getName()).length);
- assertEquals(1, doc.getFields(ReleaseIndexField.STATUS.getName()).length);
- assertEquals(Index.UNKNOWN, doc.getField(ReleaseIndexField.STATUS.getName()).stringValue());
+ checkTerm(ir, ReleaseIndexField.STATUS, "unknown");
}
ir.close();
}
@@ -560,10 +551,7 @@
IndexReader ir = DirectoryReader.open(ramDir);
assertEquals(2, ir.numDocs());
{
- Document doc = ir.document(1);
- assertEquals(1, doc.getFields(ReleaseIndexField.RELEASE.getName()).length);
- assertEquals(1, doc.getFields(ReleaseIndexField.LANGUAGE.getName()).length);
- assertEquals("eng", doc.getField(ReleaseIndexField.LANGUAGE.getName()).stringValue());
+ checkTerm(ir, ReleaseIndexField.LANGUAGE, "eng");
}
ir.close();
}
@@ -581,10 +569,7 @@
IndexReader ir = DirectoryReader.open(ramDir);
assertEquals(2, ir.numDocs());
{
- Document doc = ir.document(1);
- assertEquals(1, doc.getFields(ReleaseIndexField.RELEASE.getName()).length);
- assertEquals(1, doc.getFields(ReleaseIndexField.LANGUAGE.getName()).length);
- assertEquals("end", doc.getField(ReleaseIndexField.LANGUAGE.getName()).stringValue());
+ checkTerm(ir, ReleaseIndexField.LANGUAGE, "end");
}
ir.close();
}
@@ -602,10 +587,7 @@
IndexReader ir = DirectoryReader.open(ramDir);
assertEquals(2, ir.numDocs());
{
- Document doc = ir.document(1);
- assertEquals(1, doc.getFields(ReleaseIndexField.RELEASE.getName()).length);
- assertEquals(1, doc.getFields(ReleaseIndexField.AMAZON_ID.getName()).length);
- assertEquals("B00005NTQ7", doc.getField(ReleaseIndexField.AMAZON_ID.getName()).stringValue());
+ checkTerm(ir, ReleaseIndexField.AMAZON_ID, "b00005ntq7");
}
ir.close();
}
@@ -623,10 +605,7 @@
IndexReader ir = DirectoryReader.open(ramDir);
assertEquals(2, ir.numDocs());
{
- Document doc = ir.document(1);
- assertEquals(1, doc.getFields(ReleaseIndexField.RELEASE.getName()).length);
- assertEquals(1, doc.getFields(ReleaseIndexField.SCRIPT.getName()).length);
- assertEquals("Latn", doc.getField(ReleaseIndexField.SCRIPT.getName()).stringValue());
+ checkTerm(ir, ReleaseIndexField.SCRIPT, "latn");
}
ir.close();
}
@@ -644,10 +623,7 @@
IndexReader ir = DirectoryReader.open(ramDir);
assertEquals(2, ir.numDocs());
{
- Document doc = ir.document(1);
- assertEquals(1, doc.getFields(ReleaseIndexField.RELEASE.getName()).length);
- assertEquals(1, doc.getFields(ReleaseIndexField.COMMENT.getName()).length);
- assertEquals("demo", doc.getField(ReleaseIndexField.COMMENT.getName()).stringValue());
+ checkTerm(ir,ReleaseIndexField.COMMENT,"demo");
}
ir.close();
}
@@ -664,10 +640,7 @@
IndexReader ir = DirectoryReader.open(ramDir);
assertEquals(2, ir.numDocs());
{
- Document doc = ir.document(1);
- assertEquals(1, doc.getFields(ReleaseIndexField.RELEASE.getName()).length);
- assertEquals(1, doc.getFields(ReleaseIndexField.FORMAT.getName()).length);
- assertEquals("Vinyl", doc.getField(ReleaseIndexField.FORMAT.getName()).stringValue());
+ checkTerm(ir, ReleaseIndexField.FORMAT, "vinyl");
}
ir.close();
}
@@ -684,10 +657,7 @@
IndexReader ir = DirectoryReader.open(ramDir);
assertEquals(2, ir.numDocs());
{
- Document doc = ir.document(1);
- assertEquals(1, doc.getFields(ReleaseIndexField.RELEASE.getName()).length);
- assertEquals(1, doc.getFields(ReleaseIndexField.COUNTRY.getName()).length);
- assertEquals("GB", doc.getField(ReleaseIndexField.COUNTRY.getName()).stringValue());
+ checkTerm(ir, ReleaseIndexField.COUNTRY, "gb");
}
ir.close();
}
@@ -696,6 +666,24 @@
* @throws Exception exception
*/
@Test
+ public void testIndexReleaseMultipleCountrys() throws Exception {
+ addReleaseFour();
+ RAMDirectory ramDir = new RAMDirectory();
+ createIndex(ramDir);
+
+ IndexReader ir = DirectoryReader.open(ramDir);
+ assertEquals(2, ir.numDocs());
+ {
+ checkTerm(ir, ReleaseIndexField.COUNTRY, "gb");
+ checkTermX(ir, ReleaseIndexField.COUNTRY, "sw", 1);
+ }
+ ir.close();
+ }
+
+ /**
+ * @throws Exception exception
+ */
+ @Test
public void testIndexReleaseDiscIds() throws Exception {
addReleaseThree();
@@ -705,10 +693,7 @@
IndexReader ir = DirectoryReader.open(ramDir);
assertEquals(2, ir.numDocs());
{
- Document doc = ir.document(1);
- assertEquals(1, doc.getFields(ReleaseIndexField.RELEASE.getName()).length);
- assertEquals(1, doc.getFields(ReleaseIndexField.NUM_DISCIDS_MEDIUM.getName()).length);
- //assertEquals(2, NumericUtils.prefixCodedToInt(doc.getField(ReleaseIndexField.NUM_DISCIDS_MEDIUM.getName()).stringValue()));
+ checkTerm(ir,ReleaseIndexField.NUM_DISCIDS_MEDIUM, 2);
}
ir.close();
}
@@ -726,10 +711,7 @@
IndexReader ir = DirectoryReader.open(ramDir);
assertEquals(2, ir.numDocs());
{
- Document doc = ir.document(1);
- assertEquals(1, doc.getFields(ReleaseIndexField.RELEASE.getName()).length);
- assertEquals(1, doc.getFields(ReleaseIndexField.NUM_TRACKS_MEDIUM.getName()).length);
- //assertEquals(10, NumericUtils.prefixCodedToInt(doc.getField(ReleaseIndexField.NUM_TRACKS_MEDIUM.getName()).stringValue()));
+ checkTerm(ir,ReleaseIndexField.NUM_TRACKS_MEDIUM, 10);
}
ir.close();
}
@@ -747,22 +729,12 @@
IndexReader ir = DirectoryReader.open(ramDir);
assertEquals(2, ir.numDocs());
{
- Document doc = ir.document(1);
- assertEquals(1, doc.getFields(ReleaseIndexField.RELEASE.getName()).length);
- assertEquals(1, doc.getFields(ReleaseIndexField.COUNTRY.getName()).length);
- assertEquals(1, doc.getFields(ReleaseIndexField.BARCODE.getName()).length);
- assertEquals(1, doc.getFields(ReleaseIndexField.DATE.getName()).length);
- assertEquals(1, doc.getFields(ReleaseIndexField.CATALOG_NO.getName()).length);
- assertEquals(1, doc.getFields(ReleaseIndexField.LABEL.getName()).length);
- assertEquals(1, doc.getFields(ReleaseIndexField.FORMAT.getName()).length);
-
- assertEquals("GB", doc.getField(ReleaseIndexField.COUNTRY.getName()).stringValue());
- assertEquals("5060180310066", doc.getField(ReleaseIndexField.BARCODE.getName()).stringValue());
- assertEquals("1970-01-01", doc.getField(ReleaseIndexField.DATE.getName()).stringValue());
- assertEquals("ECHO1", doc.getField(ReleaseIndexField.CATALOG_NO.getName()).stringValue());
- assertEquals("korova", doc.getField(ReleaseIndexField.LABEL.getName()).stringValue());
- assertEquals("a539bb1e-f2e1-4b45-9db8-8053841e7503", doc.getField(ReleaseIndexField.LABEL_ID.getName()).stringValue());
- assertEquals("Vinyl", doc.getField(ReleaseIndexField.FORMAT.getName()).stringValue());
+ checkTerm(ir,ReleaseIndexField.COUNTRY, "gb");
+ checkTerm(ir,ReleaseIndexField.BARCODE, "5060180310066");
+ checkTerm(ir,ReleaseIndexField.DATE, "1970-01-01");
+ checkTerm(ir,ReleaseIndexField.CATALOG_NO, "echo1");
+ checkTerm(ir,ReleaseIndexField.LABEL, "korova");
+ checkTerm(ir,ReleaseIndexField.FORMAT, "vinyl");
}
ir.close();
}
@@ -781,11 +753,10 @@
assertEquals(2, ir.numDocs());
{
Document doc = ir.document(1);
- assertEquals(1, doc.getFields(ReleaseIndexField.RELEASE.getName()).length);
- assertEquals(1, doc.getFields(ReleaseIndexField.COUNTRY.getName()).length);
- assertEquals(1, doc.getFields(ReleaseIndexField.BARCODE.getName()).length);
- assertEquals(0, doc.getFields(ReleaseIndexField.LABEL.getName()).length);
- assertEquals(1, doc.getFields(ReleaseIndexField.FORMAT.getName()).length);
+ checkTerm(ir, ReleaseIndexField.COUNTRY, "unknown");
+ checkTerm(ir, ReleaseIndexField.BARCODE, "-");
+ checkTerm(ir, ReleaseIndexField.LABEL, "-");
+ checkTerm(ir, ReleaseIndexField.FORMAT, "-");
}
ir.close();
}
@@ -840,9 +811,7 @@
IndexReader ir = DirectoryReader.open(ramDir);
assertEquals(2, ir.numDocs());
{
- Document doc = ir.document(1);
- assertEquals(1, doc.getFields(ReleaseIndexField.RELEASEGROUP_ID.getName()).length);
- assertEquals("efd2ace2-b3b9-305f-8a53-9803595c0e37", doc.getField(ReleaseIndexField.RELEASEGROUP_ID.getName()).stringValue());
+ checkTerm(ir, ReleaseIndexField.RELEASEGROUP_ID, "efd2ace2-b3b9-305f-8a53-9803595c0e37");
}
ir.close();
}
@@ -860,20 +829,11 @@
IndexReader ir = DirectoryReader.open(ramDir);
assertEquals(2, ir.numDocs());
{
- Document doc = ir.document(1);
- assertEquals(1, doc.getFields(ReleaseIndexField.RELEASE.getName()).length);
+ checkTerm(ir,ReleaseIndexField.PRIMARY_TYPE, "album");
+ checkTerm(ir, ReleaseIndexField.TYPE, "compilation");
+ checkTerm(ir, ReleaseIndexField.SECONDARY_TYPE, "compilation");
+ checkTermX(ir, ReleaseIndexField.SECONDARY_TYPE, "interview", 1);
- assertEquals(1, doc.getFields(ReleaseGroupIndexField.PRIMARY_TYPE.getName()).length);
- assertEquals("Album", doc.getFields(ReleaseGroupIndexField.PRIMARY_TYPE.getName())[0].stringValue());
-
- //Note old type field maps secondary type to compilation
- assertEquals(1, doc.getFields(ReleaseGroupIndexField.TYPE.getName()).length);
- assertEquals("Compilation", doc.getFields(ReleaseGroupIndexField.TYPE.getName())[0].stringValue());
-
- assertEquals(2, doc.getFields(ReleaseIndexField.SECONDARY_TYPE.getName()).length);
- assertEquals("Compilation", doc.getFields(ReleaseIndexField.SECONDARY_TYPE.getName())[0].stringValue());
- assertEquals("Interview", doc.getFields(ReleaseIndexField.SECONDARY_TYPE.getName())[1].stringValue());
-
}
ir.close();
}
@@ -888,10 +848,7 @@
IndexReader ir = DirectoryReader.open(ramDir);
assertEquals(2, ir.numDocs());
{
- Document doc = ir.document(1);
- assertEquals(1, doc.getFields(ReleaseIndexField.RELEASE.getName()).length);
- assertEquals(1, doc.getFields(ReleaseIndexField.TAG.getName()).length);
- assertEquals("punk", doc.getField(ReleaseGroupIndexField.TAG.getName()).stringValue());
+ checkTerm(ir, ReleaseIndexField.TAG, "punk");
}
ir.close();
}
Modified: search_server/trunk/servlet/pom.xml
===================================================================
--- search_server/trunk/servlet/pom.xml 2013-04-30 21:40:48 UTC (rev 13669)
+++ search_server/trunk/servlet/pom.xml 2013-05-01 10:22:17 UTC (rev 13670)
@@ -49,9 +49,9 @@
<version>4.1.0</version>
</dependency>
<dependency>
- <groupId>org.apache.lucene</groupId>
- <artifactId>lucene-queryparser</artifactId>
- <version>4.1.0</version>
+ <groupId>org.apache.lucene</groupId>
+ <artifactId>lucene-queryparser</artifactId>
+ <version>4.1.0</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
@@ -87,6 +87,11 @@
<version>1.12</version>
</dependency>
<dependency>
+ <groupId>com.google.guava</groupId>
+ <artifactId>guava</artifactId>
+ <version>14.0.1</version>
+ </dependency>
+ <dependency>
<groupId>org.musicbrainz.search</groupId>
<artifactId>index</artifactId>
<version>2.0-SNAPSHOT</version>
Modified: search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd1/ReleaseMmd1XmlWriter.java
===================================================================
--- search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd1/ReleaseMmd1XmlWriter.java 2013-04-30 21:40:48 UTC (rev 13669)
+++ search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd1/ReleaseMmd1XmlWriter.java 2013-05-01 10:22:17 UTC (rev 13670)
@@ -28,13 +28,24 @@
package org.musicbrainz.search.servlet.mmd1;
+import com.google.common.base.Strings;
import com.jthink.brainz.mmd.*;
+import com.jthink.brainz.mmd.Artist;
+import com.jthink.brainz.mmd.DiscList;
+import com.jthink.brainz.mmd.Label;
+import com.jthink.brainz.mmd.Metadata;
+import com.jthink.brainz.mmd.ObjectFactory;
+import com.jthink.brainz.mmd.Release;
+import com.jthink.brainz.mmd.ReleaseEventList;
+import com.jthink.brainz.mmd.ReleaseList;
+import com.jthink.brainz.mmd.TextRepresentation;
import org.apache.commons.lang.StringUtils;
import org.apache.lucene.util.BytesRef;
import org.apache.lucene.util.NumericUtils;
-import org.musicbrainz.mmd2.ArtistCredit;
+import org.musicbrainz.mmd2.*;
import org.musicbrainz.search.MbDocument;
import org.musicbrainz.search.index.ArtistCreditHelper;
+import org.musicbrainz.search.index.MMDSerializer;
import org.musicbrainz.search.index.ReleaseIndexField;
import org.musicbrainz.search.servlet.Result;
import org.musicbrainz.search.servlet.Results;
@@ -54,163 +65,148 @@
for (Result result : results.results) {
MbDocument doc = result.getDoc();
- Release release = of.createRelease();
- release.setId(doc.get(ReleaseIndexField.RELEASE_ID));
- String type = doc.get(ReleaseIndexField.TYPE);
- String status = doc.get(ReleaseIndexField.STATUS);
- if (isNotUnknown(type) || isNotUnknown(status)) {
- if (isNotUnknown(type)) {
- release.getType().add(StringUtils.capitalize(type));
- }
-
- if (isNotUnknown(status)) {
- release.getType().add(status);
- }
- }
-
+ Release release = of.createRelease();
result.setNormalizedScore(results.getMaxScore());
release.getOtherAttributes().put(getScore(), String.valueOf(result.getNormalizedScore()));
- String name = doc.get(ReleaseIndexField.RELEASE);
- if (name != null) {
- release.setTitle(name);
+ org.musicbrainz.mmd2.Release releasev2
+ = (org.musicbrainz.mmd2.Release) MMDSerializer.unserialize(doc.get(ReleaseIndexField.RELEASE_STORE), org.musicbrainz.mmd2.Release.class);
+ release.setId(releasev2.getId());
+ release.getType().add(StringUtils.capitalize(releasev2.getReleaseGroup().getType()));
+ if (!Strings.isNullOrEmpty(releasev2.getStatus())) {
+ release.getType().add(releasev2.getStatus());
}
- String asin = doc.get(ReleaseIndexField.AMAZON_ID);
- if (isNotNoValue(asin)) {
- release.setAsin(asin);
+ if (!Strings.isNullOrEmpty(releasev2.getTitle())) {
+ release.setTitle(releasev2.getTitle());
+ }
+ if (!Strings.isNullOrEmpty(releasev2.getAsin())) {
+ release.setAsin(releasev2.getAsin());
}
TextRepresentation tr = of.createTextRepresentation();
- String script = doc.get(ReleaseIndexField.SCRIPT);
- if (isNotUnknown(script)) {
- tr.setScript(script);
+ org.musicbrainz.mmd2.TextRepresentation tr2 = releasev2.getTextRepresentation();
+ if (tr != null) {
+ if (!Strings.isNullOrEmpty(tr2.getScript())) {
+ tr.setScript(tr2.getScript());
+ }
+
+ if (!Strings.isNullOrEmpty(tr2.getLanguage())) {
+ tr.setLanguage(tr2.getLanguage().toUpperCase(Locale.US));
+ }
+ release.setTextRepresentation(tr);
}
- String lang = doc.get(ReleaseIndexField.LANGUAGE);
- if (isNotUnknown(lang)) {
- tr.setLanguage(lang.toUpperCase(Locale.US));
+
+ if (!Strings.isNullOrEmpty(releasev2.getCountry())) {
+ release.setAsin(releasev2.getAsin());
}
- if (script != null || lang != null) {
- release.setTextRepresentation(tr);
+ if (!Strings.isNullOrEmpty(releasev2.getDate())) {
+ release.setAsin(releasev2.getAsin());
}
- String country = doc.get(ReleaseIndexField.COUNTRY);
- String date = doc.get(ReleaseIndexField.DATE);
- String barcode = doc.get(ReleaseIndexField.BARCODE);
- String format = doc.get(ReleaseIndexField.FORMAT);
+ if (!Strings.isNullOrEmpty(releasev2.getBarcode())) {
+ release.setAsin(releasev2.getAsin());
+ }
- String[] labelNames = doc.getValues(ReleaseIndexField.LABEL);
- //Now releases can only have multiple labe;/catno combinations but MMDv1
- //expects country,date,barcode and format to also be part of each release event.
- if (labelNames.length > 0) {
- ReleaseEventList eventList = of.createReleaseEventList();
- String[] catnos = doc.getValues(ReleaseIndexField.CATALOG_NO);
- String[] labelIds = doc.getValues(ReleaseIndexField.LABEL_ID);
+ if (!Strings.isNullOrEmpty(releasev2.getAsin())) {
+ release.setAsin(releasev2.getAsin());
+ }
- for (int i = 0; i < labelNames.length; i++) {
+ //Just use format of first medium
+ Medium firstMediumv2 = releasev2.getMediumList().getMedium().get(0);
+ LabelInfoList lilv2 = releasev2.getLabelInfoList();
+ if (!lilv2.getLabelInfo().isEmpty()) {
+ ReleaseEventList eventList = of.createReleaseEventList();
+ for (LabelInfo liv2 : lilv2.getLabelInfo()) {
Event event = of.createEvent();
- if (isNotNoValue(labelNames[i]) || isNotNoValue(labelIds[i])) {
+ if (!Strings.isNullOrEmpty(liv2.getCatalogNumber())) {
+ event.setCatalogNumber(liv2.getCatalogNumber());
+ }
+
+ org.musicbrainz.mmd2.Label labelv2 = liv2.getLabel();
+ if (labelv2 != null) {
Label label = of.createLabel();
event.setLabel(label);
-
- if (isNotNoValue(labelNames[i])) {
- label.setName(labelNames[i]);
+ if (!Strings.isNullOrEmpty(labelv2.getId())) {
+ label.setId(labelv2.getId());
}
-
- if (isNotNoValue(labelIds[i])) {
- label.setId(labelIds[i]);
+
+ if (!Strings.isNullOrEmpty(labelv2.getName())) {
+ label.setName(labelv2.getName());
}
}
- if (isNotNoValue(catnos[i])) {
- event.setCatalogNumber(catnos[i]);
+ if (!Strings.isNullOrEmpty(releasev2.getCountry())) {
+ event.setCountry(StringUtils.upperCase(releasev2.getCountry()));
}
- if (isNotUnknown(country)) {
- event.setCountry(StringUtils.upperCase(country));
+ if (!Strings.isNullOrEmpty(releasev2.getDate())) {
+ event.setDate(releasev2.getDate());
}
- if (event != null) {
- event.setDate(date);
+ if (!Strings.isNullOrEmpty(releasev2.getBarcode())) {
+ event.setBarcode(releasev2.getBarcode());
}
- if (isNotNoValue(barcode)) {
- event.setBarcode(barcode);
+ if (!Strings.isNullOrEmpty(firstMediumv2.getFormat())) {
+ event.setFormat(firstMediumv2.getFormat());
}
-
- if (isNotNoValue(format)) {
- event.setFormat(format);
- }
eventList.getEvent().add(event);
}
release.setReleaseEventList(eventList);
- }
- else {
+ } else {
ReleaseEventList eventList = of.createReleaseEventList();
Event event = of.createEvent();
+ eventList.getEvent().add(event);
+ release.setReleaseEventList(eventList);
- if (country != null) {
- event.setCountry(StringUtils.upperCase(country));
+ if (!Strings.isNullOrEmpty(releasev2.getCountry())) {
+ event.setCountry(StringUtils.upperCase(releasev2.getCountry()));
}
- if (event != null) {
- event.setDate(date);
+ if (!Strings.isNullOrEmpty(releasev2.getDate())) {
+ event.setDate(releasev2.getDate());
}
- if (barcode != null) {
- event.setBarcode(barcode);
+ if (!Strings.isNullOrEmpty(releasev2.getBarcode())) {
+ event.setBarcode(releasev2.getBarcode());
}
- if (format != null) {
- event.setFormat(format);
+ if (!Strings.isNullOrEmpty(firstMediumv2.getFormat())) {
+ event.setFormat(firstMediumv2.getFormat());
}
- eventList.getEvent().add(event);
- release.setReleaseEventList(eventList);
}
- //Just add the first Artist (if there are more than one, this means that once releases get added with multiple
- //name credits using this old interface isn't going to give very good results
- if(doc.get(ReleaseIndexField.ARTIST_CREDIT)!=null) {
- ArtistCredit ac = ArtistCreditHelper.unserialize(doc.get(ReleaseIndexField.ARTIST_CREDIT));
- if (ac.getNameCredit().size()>0) {
+ ArtistCredit acv2 = releasev2.getArtistCredit();
+ if(acv2!=null) {
+ if (acv2.getNameCredit().size() > 0) {
Artist artist = of.createArtist();
- artist.setName(ac.getNameCredit().get(0).getArtist().getName());
- artist.setId(ac.getNameCredit().get(0).getArtist().getId());
- artist.setSortName(ac.getNameCredit().get(0).getArtist().getSortName());
+ artist.setName(acv2.getNameCredit().get(0).getArtist().getName());
+ artist.setId(acv2.getNameCredit().get(0).getArtist().getId());
+ artist.setSortName(acv2.getNameCredit().get(0).getArtist().getSortName());
release.setArtist(artist);
}
}
- String[] numDiscsIdsOnMedium = doc.getValues(ReleaseIndexField.NUM_DISCIDS_MEDIUM);
- if(numDiscsIdsOnMedium.length>0)
- {
- int numDiscs = 0;
- for(int i=0;i<numDiscsIdsOnMedium.length;i++) {
- numDiscs+=NumericUtils.prefixCodedToInt(new BytesRef(numDiscsIdsOnMedium[i]));
- }
+ int totaldiscIds=0;
+ MediumList mediumListv2 = releasev2.getMediumList();
+ TrackList trackList = of.createTrackList();
+ trackList.setCount(mediumListv2.getTrackCount());
+ release.setTrackList(trackList);
- DiscList discList = of.createDiscList();
- discList.setCount(BigInteger.valueOf(numDiscs));
- release.setDiscList(discList);
- }
-
- String[] numTracksOnMedium = doc.getValues(ReleaseIndexField.NUM_TRACKS_MEDIUM);
- if(numTracksOnMedium.length>0)
+ for(Medium mediumv2:mediumListv2.getMedium())
{
- int numTracks = 0;
- for(int i=0;i<numTracksOnMedium.length;i++) {
- numTracks+=NumericUtils.prefixCodedToInt(new BytesRef(numTracksOnMedium[i]));
- }
-
- TrackList trackList = of.createTrackList();
- trackList.setCount(BigInteger.valueOf(numTracks));
- release.setTrackList(trackList);
+ totaldiscIds+=mediumv2.getDiscList().getCount().intValue();
}
+ DiscList discList = of.createDiscList();
+ discList.setCount(BigInteger.valueOf(totaldiscIds));
+ release.setDiscList(discList);
+
releaseList.getRelease().add(release);
}
releaseList.setCount(BigInteger.valueOf(results.getTotalHits()));
Modified: search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd2/ReleaseWriter.java
===================================================================
--- search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd2/ReleaseWriter.java 2013-04-30 21:40:48 UTC (rev 13669)
+++ search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd2/ReleaseWriter.java 2013-05-01 10:22:17 UTC (rev 13670)
@@ -29,12 +29,12 @@
package org.musicbrainz.search.servlet.mmd2;
-import org.apache.lucene.util.BytesRef;
-import org.apache.lucene.util.NumericUtils;
-import org.musicbrainz.mmd2.*;
+import org.musicbrainz.mmd2.Metadata;
+import org.musicbrainz.mmd2.ObjectFactory;
+import org.musicbrainz.mmd2.Release;
+import org.musicbrainz.mmd2.ReleaseList;
import org.musicbrainz.search.MbDocument;
-import org.musicbrainz.search.index.ArtistCreditHelper;
-import org.musicbrainz.search.index.ReleaseGroupIndexField;
+import org.musicbrainz.search.index.MMDSerializer;
import org.musicbrainz.search.index.ReleaseIndexField;
import org.musicbrainz.search.servlet.Result;
import org.musicbrainz.search.servlet.Results;
@@ -42,25 +42,21 @@
import java.io.IOException;
import java.math.BigInteger;
import java.util.List;
-import java.util.Locale;
public class ReleaseWriter extends ResultsWriter {
/**
- *
* @param metadata
* @param results
* @throws IOException
*/
- public void write(Metadata metadata, Results results) throws IOException
- {
+ public void write(Metadata metadata, Results results) throws IOException {
ObjectFactory of = new ObjectFactory();
ReleaseList releaseList = of.createReleaseList();
- for(Result result:results.results)
- {
+ for (Result result : results.results) {
result.setNormalizedScore(results.getMaxScore());
}
write(releaseList.getRelease(), results);
@@ -71,214 +67,25 @@
}
/**
- *
* @param list
* @param results
* @throws IOException
*/
- public void write(List list, Results results) throws IOException
- {
- for (Result result : results.results)
- {
+ public void write(List list, Results results) throws IOException {
+ for (Result result : results.results) {
write(list, result);
}
}
/**
- *
* @param list
* @param result
* @throws IOException
*/
- public void write(List list, Result result) throws IOException
- {
- ObjectFactory of = new ObjectFactory();
-
- MbDocument doc = result.getDoc();
- Release release = of.createRelease();
- release.setId(doc.get(ReleaseIndexField.RELEASE_ID));
- release.setScore(String.valueOf(result.getNormalizedScore()));
-
- String name = doc.get(ReleaseIndexField.RELEASE);
- if (name != null) {
- release.setTitle(name);
- }
-
- String comment = doc.get(ReleaseIndexField.COMMENT);
- if (isNotNoValue(comment)) {
- release.setDisambiguation(comment);
- }
-
- String type = doc.get(ReleaseIndexField.TYPE);
- ReleaseGroup rg = of.createReleaseGroup();
- release.setReleaseGroup(rg);
- if (isNotUnknown(type)){
- release.getReleaseGroup().setType(type);
- }
-
- String primaryType = doc.get(ReleaseGroupIndexField.PRIMARY_TYPE);
- if(isNotUnknown(primaryType )) {
- release.getReleaseGroup().setPrimaryType(primaryType );
- }
-
- String[] secondaryTypes = doc.getValues(ReleaseIndexField.SECONDARY_TYPE);
- if(secondaryTypes.length>0) {
- SecondaryTypeList stl = of.createSecondaryTypeList();
- for(int i =0; i< secondaryTypes.length; i++) {
- stl.getSecondaryType().add(secondaryTypes[i]);
- }
- release.getReleaseGroup().setSecondaryTypeList(stl);
- }
-
- String rgid = doc.get(ReleaseIndexField.RELEASEGROUP_ID);
- if (rgid != null) {
- release.getReleaseGroup().setId(rgid);
- }
-
- String status = doc.get(ReleaseIndexField.STATUS);
- if (isNotUnknown(status)) {
- release.setStatus(status);
- }
-
- String[] countrys = doc.getValues(ReleaseIndexField.COUNTRY);
- String[] dates = doc.getValues(ReleaseIndexField.DATE);
- ReleaseEventList rel = of.createReleaseEventList();
- for(int i=0;i<countrys.length; i++)
- {
- String nextCountry = countrys[i];
- String nextDate = dates[i];
- if(isNotUnknown(nextCountry) || isNotUnknown(nextDate))
- {
- ReleaseEvent re = of.createReleaseEvent();
- if(isNotUnknown(nextCountry))
- {
- re.setCountry(nextCountry);
- }
- if(isNotUnknown(nextDate))
- {
- re.setDate(nextDate);
- }
- rel.getReleaseEvent().add(re);
- }
- }
- if(rel.getReleaseEvent().size()>0) {
- release.setReleaseEventList(rel);
- }
-
- //For backwards compatability
- if (isNotUnknown(countrys[0])){
-
- release.setCountry(countrys[0]);
- }
- if (isNotUnknown(dates[0])){
-
- release.setDate(dates[0]);
- }
-
- String barcode = doc.get(ReleaseIndexField.BARCODE);
- if (isNotNoValue(barcode)) {
- release.setBarcode(barcode);
- }
-
- String asin = doc.get(ReleaseIndexField.AMAZON_ID);
- if (isNotNoValue(asin)) {
- release.setAsin(asin);
- }
-
- TextRepresentation tr = of.createTextRepresentation();
- String script = doc.get(ReleaseIndexField.SCRIPT);
- if (isNotUnknown(script)) {
- tr.setScript(script);
- }
-
- String lang = doc.get(ReleaseIndexField.LANGUAGE);
- if (isNotUnknown(lang)) {
- tr.setLanguage(lang.toLowerCase(Locale.US));
- }
-
- if (script != null || lang != null) {
- release.setTextRepresentation(tr);
- }
-
- String[] labelNames = doc.getValues(ReleaseIndexField.LABEL);
- //Releases can only have multiple label/catno combinations
- if (labelNames.length > 0) {
- LabelInfoList labelInfoList = of.createLabelInfoList();
- String[] catnos = doc.getValues(ReleaseIndexField.CATALOG_NO);
- String[] labelIds = doc.getValues(ReleaseIndexField.LABEL_ID);
- for (int i = 0; i < labelNames.length; i++) {
- LabelInfo labelInfo = of.createLabelInfo();
-
- if (isNotNoValue(labelNames[i]) || isNotNoValue(labelIds[i])) {
- Label label = of.createLabel();
- labelInfo.setLabel(label);
-
- if (isNotNoValue(labelNames[i])) {
- label.setName(labelNames[i]);
- }
-
- if (isNotNoValue(labelIds[i])) {
- label.setId(labelIds[i]);
- }
- }
-
- if (isNotNoValue(catnos[i])) {
- labelInfo.setCatalogNumber(catnos[i]);
- }
- labelInfoList.getLabelInfo().add(labelInfo);
- }
- release.setLabelInfoList(labelInfoList);
- }
-
- if(doc.get(ReleaseIndexField.ARTIST_CREDIT)!=null) {
- ArtistCredit ac = ArtistCreditHelper.unserialize(doc.get(ReleaseIndexField.ARTIST_CREDIT));
- release.setArtistCredit(ac);
- }
-
- String numTracksOnRelease = doc.get(ReleaseIndexField.NUM_TRACKS);
- if(numTracksOnRelease!=null)
- {
- MediumList mediumList = of.createMediumList();
- mediumList.setTrackCount(BigInteger.valueOf(NumericUtils.prefixCodedToInt(new BytesRef(numTracksOnRelease))));
-
- String[] formats = doc.getValues(ReleaseIndexField.FORMAT);
- String[] numTracks = doc.getValues(ReleaseIndexField.NUM_TRACKS_MEDIUM);
- String[] numDiscIds = doc.getValues(ReleaseIndexField.NUM_DISCIDS_MEDIUM);
- for (int i = 0; i < formats.length; i++) {
-
- Medium medium = of.createMedium();
-
- if(isNotNoValue(formats[i])) {
- medium.setFormat(formats[i]);
- }
- org.musicbrainz.mmd2.Medium.TrackList trackList = of.createMediumTrackList();
- trackList.setCount(BigInteger.valueOf(NumericUtils.prefixCodedToInt(new BytesRef(numTracks[i]))));
- medium.setTrackList(trackList);
-
- DiscList discList = of.createDiscList();
- discList.setCount(BigInteger.valueOf(NumericUtils.prefixCodedToInt(new BytesRef(numDiscIds[i]))));
- medium.setDiscList(discList);
-
- mediumList.getMedium().add(medium);
- }
- mediumList.setCount(BigInteger.valueOf(formats.length));
- release.setMediumList(mediumList);
- }
-
- String[] tags = doc.getValues(ReleaseIndexField.TAG);
- String[] tagCounts = doc.getValues(ReleaseIndexField.TAGCOUNT);
- if(tags.length>0)
- {
- TagList tagList = of.createTagList();
- for(int i = 0;i<tags.length;i++) {
- Tag tag = of.createTag();
- tag.setName(tags[i]);
- tag.setCount(new BigInteger(tagCounts[i]));
- tagList.getTag().add(tag);
- }
- release.setTagList(tagList);
- }
-
- list.add(release);
- }
+ public void write(List list, Result result) throws IOException {
+ MbDocument doc = result.getDoc();
+ Release release = (Release) MMDSerializer.unserialize(doc.get(ReleaseIndexField.RELEASE_STORE), Release.class);
+ release.setScore(String.valueOf(result.getNormalizedScore()));
+ list.add(release);
+ }
}
\ No newline at end of file
Modified: search_server/trunk/servlet/src/test/java/org/musicbrainz/search/servlet/FindReleaseTest.java
===================================================================
--- search_server/trunk/servlet/src/test/java/org/musicbrainz/search/servlet/FindReleaseTest.java 2013-04-30 21:40:48 UTC (rev 13669)
+++ search_server/trunk/servlet/src/test/java/org/musicbrainz/search/servlet/FindReleaseTest.java 2013-05-01 10:22:17 UTC (rev 13670)
@@ -3,16 +3,17 @@
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
+import java.io.IOException;
import java.io.PrintWriter;
import java.io.StringWriter;
+import java.math.BigInteger;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import org.apache.lucene.analysis.Analyzer;
-import org.apache.lucene.index.DirectoryReader;
-import org.apache.lucene.index.IndexWriter;
-import org.apache.lucene.index.IndexWriterConfig;
+import org.apache.lucene.document.Document;
+import org.apache.lucene.index.*;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.SearcherManager;
import org.apache.lucene.store.RAMDirectory;
@@ -20,19 +21,10 @@
import org.apache.lucene.util.NumericUtils;
import org.junit.Before;
import org.junit.Test;
-import org.musicbrainz.mmd2.Artist;
-import org.musicbrainz.mmd2.ArtistCredit;
-import org.musicbrainz.mmd2.NameCredit;
-import org.musicbrainz.mmd2.ObjectFactory;
+import org.musicbrainz.mmd2.*;
import org.musicbrainz.search.LuceneVersion;
import org.musicbrainz.search.MbDocument;
-import org.musicbrainz.search.index.DatabaseIndex;
-import org.musicbrainz.search.index.Index;
-import org.musicbrainz.search.index.MMDSerializer;
-import org.musicbrainz.search.index.MetaIndexField;
-import org.musicbrainz.search.index.ReleaseGroupIndexField;
-import org.musicbrainz.search.index.ReleaseIndex;
-import org.musicbrainz.search.index.ReleaseIndexField;
+import org.musicbrainz.search.index.*;
import org.musicbrainz.search.servlet.mmd1.ReleaseGroupType;
import org.musicbrainz.search.servlet.mmd1.ReleaseMmd1XmlWriter;
@@ -42,304 +34,361 @@
*/
public class FindReleaseTest {
- private AbstractSearchServer ss;
- private AbstractDismaxSearchServer sd;
+ protected void checkTerm(IndexReader ir, IndexField field, String value) throws IOException {
- @Before
- public void setUp() throws Exception {
- RAMDirectory ramDir = new RAMDirectory();
- ObjectFactory of = new ObjectFactory();
+ Fields fields = MultiFields.getFields(ir);
+ Terms terms = fields.terms(field.getName());
+ TermsEnum termsEnum = terms.iterator(null);
+ termsEnum.next();
+ assertEquals(value, termsEnum.term().utf8ToString());
+ }
- Analyzer analyzer = DatabaseIndex.getAnalyzer(ReleaseIndexField.class);
- IndexWriterConfig writerConfig = new IndexWriterConfig(LuceneVersion.LUCENE_VERSION, analyzer);
- IndexWriter writer = new IndexWriter(ramDir, writerConfig);
+ private AbstractSearchServer ss;
+ private AbstractDismaxSearchServer sd;
- MbDocument doc = new MbDocument();
- doc.addField(ReleaseIndexField.RELEASE_ID, "1d9e8ed6-3893-4d3b-aa7d-6cd79609e386");
- doc.addField(ReleaseIndexField.RELEASEGROUP_ID, "1d9e8ed6-3893-4d3b-aa7d-6cd79609e333");
+ @Before
+ public void setUp() throws Exception {
+ RAMDirectory ramDir = new RAMDirectory();
+ ObjectFactory of = new ObjectFactory();
- doc.addField(ReleaseIndexField.RELEASE, "Our Glorious 5 Year Plan");
- doc.addField(ReleaseIndexField.SCRIPT, "Latn");
- doc.addField(ReleaseIndexField.LANGUAGE, "eng");
- doc.addField(ReleaseIndexField.ARTIST_ID, "4302e264-1cf0-4d1f-aca7-2a6f89e34b36");
- doc.addField(ReleaseIndexField.ARTIST, "Farming Incident");
- doc.addField(ReleaseIndexField.ARTIST_NAME, "Farming Incident");
- doc.addField(ReleaseIndexField.ARTIST_NAMECREDIT, "Farming Incident");
- doc.addField(ReleaseIndexField.COMMENT, "demo");
- doc.addField(ReleaseIndexField.SECONDARY_TYPE, "Live");
- doc.addField(ReleaseIndexField.SECONDARY_TYPE, "Compilation");
- doc.addField(ReleaseIndexField.TAG, "punk");
- doc.addField(ReleaseIndexField.TAGCOUNT, "10");
+ Analyzer analyzer = DatabaseIndex.getAnalyzer(ReleaseIndexField.class);
+ IndexWriterConfig writerConfig = new IndexWriterConfig(LuceneVersion.LUCENE_VERSION, analyzer);
+ IndexWriter writer = new IndexWriter(ramDir, writerConfig);
+ {
+ MbDocument doc = new MbDocument();
+ Release release = of.createRelease();
+ doc.addField(ReleaseIndexField.RELEASE_ID, "1d9e8ed6-3893-4d3b-aa7d-6cd79609e386");
+ release.setId("1d9e8ed6-3893-4d3b-aa7d-6cd79609e386");
+ doc.addField(ReleaseIndexField.RELEASEGROUP_ID, "1d9e8ed6-3893-4d3b-aa7d-6cd79609e333");
+ ReleaseGroup rg = of.createReleaseGroup();
+ rg.setId("1d9e8ed6-3893-4d3b-aa7d-6cd79609e333");
+ release.setReleaseGroup(rg);
- ArtistCredit ac = of.createArtistCredit();
- NameCredit nc = of.createNameCredit();
- Artist artist = of.createArtist();
- artist.setId("4302e264-1cf0-4d1f-aca7-2a6f89e34b36");
- artist.setName("Farming Incident");
- artist.setSortName("Incident, Farming");
- nc.setArtist(artist);
- ac.getNameCredit().add(nc);
- doc.addField(ReleaseIndexField.ARTIST_CREDIT, MMDSerializer.serialize(ac));
- doc.addField(ReleaseIndexField.PUID, "668f3a22-03e8-e3cd-55e4-2e9a0906419a");
- doc.addField(ReleaseIndexField.PUID, "1fa8aa07-c688-1f7c-734b-4d82e528b09a");
+ doc.addField(ReleaseIndexField.RELEASE, "Our Glorious 5 Year Plan");
+ release.setTitle("Our Glorious 5 Year Plan");
- //Medium 1
- doc.addNumericField(ReleaseIndexField.NUM_TRACKS_MEDIUM, 10);
- doc.addNumericField(ReleaseIndexField.NUM_DISCIDS_MEDIUM, 1);
- doc.addField(ReleaseIndexField.FORMAT, "Vinyl");
- //Medium 2
- doc.addNumericField(ReleaseIndexField.NUM_TRACKS_MEDIUM, 7);
- doc.addNumericField(ReleaseIndexField.NUM_DISCIDS_MEDIUM, 2);
- doc.addField(ReleaseIndexField.FORMAT, Index.NO_VALUE);
- doc.addNumericField(ReleaseIndexField.NUM_TRACKS, 17);
- doc.addNumericField(ReleaseIndexField.NUM_DISCIDS, 3);
+ doc.addField(ReleaseIndexField.SCRIPT, "Latn");
+ TextRepresentation tr = of.createTextRepresentation();
+ release.setTextRepresentation(tr);
+ tr.setScript("Latn");
+ doc.addField(ReleaseIndexField.LANGUAGE, "eng");
+ tr.setLanguage("eng");
- doc.addField(ReleaseIndexField.STATUS, "Official");
- doc.addField(ReleaseIndexField.PRIMARY_TYPE, "Album");
- doc.addField(ReleaseIndexField.TYPE, "Compilation");
+ doc.addField(ReleaseIndexField.ARTIST_ID, "4302e264-1cf0-4d1f-aca7-2a6f89e34b36");
- doc.addField(ReleaseIndexField.AMAZON_ID, "B00004Y6O9");
+ doc.addField(ReleaseIndexField.ARTIST, "Farming Incident");
+ doc.addField(ReleaseIndexField.ARTIST_NAME, "Farming Incident");
+ doc.addField(ReleaseIndexField.ARTIST_NAMECREDIT, "Farming Incident");
+ ArtistCredit ac = of.createArtistCredit();
+ NameCredit nc = of.createNameCredit();
+ Artist artist = of.createArtist();
+ artist.setId("4302e264-1cf0-4d1f-aca7-2a6f89e34b36");
+ artist.setName("Farming Incident");
+ artist.setSortName("Incident, Farming");
+ nc.setArtist(artist);
+ ac.getNameCredit().add(nc);
+ release.setArtistCredit(ac);
- doc.addField(ReleaseIndexField.COUNTRY, "GB");
+ doc.addField(ReleaseIndexField.COMMENT, "demo");
+ release.setDisambiguation("demo");
- doc.addField(ReleaseIndexField.DATE, "2005");
- doc.addField(ReleaseIndexField.BARCODE, "07599273202");
+ doc.addField(ReleaseIndexField.PRIMARY_TYPE, "Album");
+ release.getReleaseGroup().setType("Compilation");
+ release.getReleaseGroup().setPrimaryType("Album");
+ doc.addField(ReleaseIndexField.TYPE, "Compilation");
+ doc.addField(ReleaseIndexField.SECONDARY_TYPE, "Live");
+ doc.addField(ReleaseIndexField.SECONDARY_TYPE, "Compilation");
+ SecondaryTypeList stl = of.createSecondaryTypeList();
+ stl.getSecondaryType().add("Live");
+ stl.getSecondaryType().add("Compilation");
+ release.getReleaseGroup().setSecondaryTypeList(stl);
- //Multiples allowed of these
- doc.addField(ReleaseIndexField.CATALOG_NO, "WRATHCD-25");
- doc.addField(ReleaseIndexField.CATALOG_NO, "CAT WITH SPACE");
+ doc.addField(ReleaseIndexField.TAG, "punk");
+ TagList tagList = of.createTagList();
+ Tag tag = of.createTag();
+ tag.setName("punk");
+ tag.setCount(new BigInteger("10"));
+ tagList.getTag().add(tag);
+ release.setTagList(tagList);
- doc.addField(ReleaseIndexField.LABEL, "Wrath Records");
- doc.addField(ReleaseIndexField.LABEL_ID, Index.NO_VALUE);
+ doc.addField(ReleaseIndexField.PUID, "668f3a22-03e8-e3cd-55e4-2e9a0906419a");
+ doc.addField(ReleaseIndexField.PUID, "1fa8aa07-c688-1f7c-734b-4d82e528b09a");
- doc.addField(ReleaseIndexField.CATALOG_NO, "LP-001");
- doc.addField(ReleaseIndexField.LABEL, "Major Records");
- doc.addField(ReleaseIndexField.LABEL_ID, "c1dfaf9c-d498-4f6c-b040-f7714315fcea");
+ MediumList mediumList = of.createMediumList();
- doc.addNumericField(ReleaseIndexField.NUM_MEDIUMS, 2);
+ //Medium 1
+ {
+ doc.addNumericField(ReleaseIndexField.NUM_TRACKS_MEDIUM, 10);
+ doc.addNumericField(ReleaseIndexField.NUM_DISCIDS_MEDIUM, 1);
+ doc.addField(ReleaseIndexField.FORMAT, "Vinyl");
+ Medium medium = of.createMedium();
+ medium.setFormat("Vinyl");
+ org.musicbrainz.mmd2.Medium.TrackList trackList = of.createMediumTrackList();
+ trackList.setCount(BigInteger.valueOf(10));
+ medium.setTrackList(trackList);
+ DiscList discList = of.createDiscList();
+ discList.setCount(BigInteger.valueOf(1));
+ medium.setDiscList(discList);
+ mediumList.getMedium().add(medium);
+ }
+ //Medium 2
+ {
+ doc.addNumericField(ReleaseIndexField.NUM_TRACKS_MEDIUM, 7);
+ doc.addNumericField(ReleaseIndexField.NUM_DISCIDS_MEDIUM, 2);
+ doc.addField(ReleaseIndexField.FORMAT, Index.NO_VALUE);
+ Medium medium = of.createMedium();
+ org.musicbrainz.mmd2.Medium.TrackList trackList = of.createMediumTrackList();
+ trackList.setCount(BigInteger.valueOf(7));
+ medium.setTrackList(trackList);
+ DiscList discList = of.createDiscList();
+ discList.setCount(BigInteger.valueOf(2));
+ medium.setDiscList(discList);
+ mediumList.getMedium().add(medium);
+ }
- writer.addDocument(doc.getLuceneDocument());
+ doc.addNumericField(ReleaseIndexField.NUM_TRACKS, 17);
+ doc.addNumericField(ReleaseIndexField.NUM_DISCIDS, 3);
+ doc.addNumericField(ReleaseIndexField.NUM_MEDIUMS, 2);
+ mediumList.setTrackCount(BigInteger.valueOf(17));
+ mediumList.setCount(BigInteger.valueOf(2));
+ release.setMediumList(mediumList);
- //Release with Multiple Artists
- doc = new MbDocument();
- doc.addField(ReleaseIndexField.RELEASE_ID, "0011c128-b1f2-300e-88cc-c33c30dce704");
- doc.addField(ReleaseIndexField.RELEASE, "Epics");
- doc.addField(ReleaseIndexField.SCRIPT, "Taml");
- doc.addField(ReleaseIndexField.LANGUAGE, "fra");
- doc.addField(ReleaseIndexField.TYPE, ReleaseGroupType.SINGLE.getName());
- doc.addField(ReleaseIndexField.ARTIST, "Erich Kunzel and Cincinnati Pops");
- doc.addField(ReleaseIndexField.ARTIST_ID, "99845d0c-f239-4051-a6b1-4b5e9f7ede0b");
- doc.addField(ReleaseIndexField.ARTIST_NAME, "Erich Kunzel");
- doc.addField(ReleaseIndexField.ARTIST_NAMECREDIT, "Erich Kunzel");
+ doc.addField(ReleaseIndexField.STATUS, "Official");
+ release.setStatus("Official");
- doc.addField(ReleaseIndexField.ARTIST_ID, "d8fbd94c-cd06-4e8b-a559-761ad969d07e");
- doc.addField(ReleaseIndexField.ARTIST_NAME, "The Cincinnati Pops Orchestra");
- doc.addField(ReleaseIndexField.ARTIST_NAMECREDIT, "Cincinnati Pops");
+ doc.addField(ReleaseIndexField.AMAZON_ID, "B00004Y6O9");
+ release.setAsin("B00004Y6O9");
- ac = of.createArtistCredit();
- nc = of.createNameCredit();
- artist = of.createArtist();
- artist.setId("99845d0c-f239-4051-a6b1-4b5e9f7ede0b");
- artist.setName("Erich Kunzel");
- artist.setSortName("Kunzel, Eric");
- nc.setJoinphrase("and");
- nc.setArtist(artist);
- ac.getNameCredit().add(nc);
+ doc.addField(ReleaseIndexField.COUNTRY, "GB");
+ doc.addField(ReleaseIndexField.DATE, "2005");
+ ReleaseEventList rel = of.createReleaseEventList();
+ ReleaseEvent re = of.createReleaseEvent();
+ re.setDate("2005");
+ re.setCountry("GB");
+ rel.getReleaseEvent().add(re);
+ release.setReleaseEventList(rel);
+ release.setDate("2005");
+ release.setCountry("GB");
- nc = of.createNameCredit();
- artist = of.createArtist();
- artist.setId("d8fbd94c-cd06-4e8b-a559-761ad969d07e");
- artist.setName("The Cincinnati Pops Orchestra");
- artist.setSortName("Cincinnati Pops Orchestra, The");
- nc.setArtist(artist);
- nc.setName("Cincinnati Pops");
- ac.getNameCredit().add(nc);
+ doc.addField(ReleaseIndexField.BARCODE, "07599273202");
+ release.setBarcode("07599273202");
- doc.addField(ReleaseGroupIndexField.ARTIST_CREDIT, MMDSerializer.serialize(ac));
+ //Multiples allowed of these
+ LabelInfoList labelInfoList = of.createLabelInfoList();
- doc.addNumericField(ReleaseIndexField.NUM_TRACKS_MEDIUM, 14);
- doc.addNumericField(ReleaseIndexField.NUM_DISCIDS_MEDIUM, 1);
- doc.addField(ReleaseIndexField.STATUS, "Promotion");
- doc.addNumericField(ReleaseIndexField.NUM_TRACKS, 14);
- doc.addNumericField(ReleaseIndexField.NUM_DISCIDS, 1);
- doc.addField(ReleaseIndexField.FORMAT, "CD");
+ {
+ doc.addField(ReleaseIndexField.CATALOG_NO, "WRATHCD-25");
+ doc.addField(ReleaseIndexField.LABEL, "Wrath Records");
+ doc.addField(ReleaseIndexField.LABEL_ID, Index.NO_VALUE);
+ LabelInfo li = of.createLabelInfo();
+ Label label = of.createLabel();
+ li.setLabel(label);
+ li.setCatalogNumber("WRATHCD-25");
+ label.setName("Wrath Records");
+ labelInfoList.getLabelInfo().add(li);
+ }
- doc.addField(ReleaseIndexField.COUNTRY, "US");
- doc.addField(ReleaseIndexField.DATE, "2003-09-23");
- doc.addNumericField(ReleaseIndexField.NUM_MEDIUMS, 1);
- doc.addField(ReleaseIndexField.BARCODE, ReleaseIndex.BARCODE_NONE);
+ {
+ doc.addField(ReleaseIndexField.CATALOG_NO, "CAT WITH SPACE");
+ LabelInfo li = of.createLabelInfo();
+ li.setCatalogNumber("CAT WITH SPACE");
+ labelInfoList.getLabelInfo().add(li);
+ }
- writer.addDocument(doc.getLuceneDocument());
+ {
+ doc.addField(ReleaseIndexField.CATALOG_NO, "LP-001");
+ doc.addField(ReleaseIndexField.LABEL, "Major Records");
+ doc.addField(ReleaseIndexField.LABEL_ID, "c1dfaf9c-d498-4f6c-b040-f7714315fcea");
+ LabelInfo li = of.createLabelInfo();
+ Label label = of.createLabel();
+ li.setLabel(label);
+ li.setCatalogNumber("LP-001");
+ label.setName("Major Records");
+ label.setId("c1dfaf9c-d498-4f6c-b040-f7714315fcea");
+ labelInfoList.getLabelInfo().add(li);
+ }
+ release.setLabelInfoList(labelInfoList);
- {
- doc = new MbDocument();
- doc.addField(MetaIndexField.META, MetaIndexField.META_VALUE);
- doc.addNumericField(MetaIndexField.LAST_UPDATED, new Date().getTime());
- writer.addDocument(doc.getLuceneDocument());
- }
- writer.close();
- Map<ResourceType, IndexSearcher> searchers = new HashMap<ResourceType, IndexSearcher>();
- searchers.put(ResourceType.RELEASE, new IndexSearcher(DirectoryReader.open(ramDir)));
+ doc.addNumericField(ReleaseIndexField.NUM_MEDIUMS, 2);
- SearcherManager searcherManager = new SearcherManager(ramDir, new MusicBrainzSearcherFactory(ResourceType.RELEASE));
- ss = new ReleaseSearch(searcherManager);
- sd = new ReleaseDismaxSearch(ss);
- }
- @Test
- public void testFindReleaseById() throws Exception {
- Results res = ss.search("reid:\"1d9e8ed6-3893-4d3b-aa7d-6cd79609e386\"", 0, 10);
- assertEquals(1, res.getTotalHits());
- Result result = res.results.get(0);
- MbDocument doc = result.getDoc();
- assertEquals("Our Glorious 5 Year Plan", doc.get(ReleaseIndexField.RELEASE));
- assertEquals("Wrath Records", doc.get(ReleaseIndexField.LABEL));
- assertEquals(3, doc.getFields(ReleaseIndexField.CATALOG_NO).length);
- assertEquals("WRATHCD-25", doc.get(ReleaseIndexField.CATALOG_NO));
- assertEquals(1, doc.getFields(ReleaseIndexField.BARCODE).length);
- assertEquals("07599273202", doc.get(ReleaseIndexField.BARCODE));
- assertEquals(1, doc.getFields(ReleaseIndexField.AMAZON_ID).length);
- assertEquals("B00004Y6O9", doc.get(ReleaseIndexField.AMAZON_ID));
+ doc.addField(ReleaseIndexField.RELEASE_STORE, MMDSerializer.serialize(release));
+ writer.addDocument(doc.getLuceneDocument());
+ }
- assertEquals(1, doc.getFields(ReleaseIndexField.COUNTRY).length);
- assertEquals("GB", doc.get(ReleaseIndexField.COUNTRY));
- assertEquals(1, doc.getFields(ReleaseIndexField.DATE).length);
- assertEquals("2005", doc.get(ReleaseIndexField.DATE));
- assertEquals(2, doc.getFields(ReleaseIndexField.NUM_DISCIDS_MEDIUM).length);
- assertEquals(1, NumericUtils.prefixCodedToInt(new BytesRef(doc.get(ReleaseIndexField.NUM_DISCIDS_MEDIUM))));
- assertEquals("eng", doc.get(ReleaseIndexField.LANGUAGE));
- assertEquals("Latn", doc.get(ReleaseIndexField.SCRIPT));
- assertEquals("Official", doc.get(ReleaseIndexField.STATUS));
- assertEquals("Compilation", doc.get(ReleaseIndexField.TYPE));
- assertEquals("Album", doc.get(ReleaseIndexField.PRIMARY_TYPE));
- assertEquals("Vinyl", doc.get(ReleaseIndexField.FORMAT));
- assertEquals("B00004Y6O9", doc.get(ReleaseIndexField.AMAZON_ID));
+ //Another Release with Multiple Artists
+ {
+ MbDocument doc = new MbDocument();
+ Release release = of.createRelease();
+ doc.addField(ReleaseIndexField.RELEASE_ID, "0011c128-b1f2-300e-88cc-c33c30dce704");
+ release.setId("1d9e8ed6-3893-4d3b-aa7d-6cd79609e386");
+ doc.addField(ReleaseIndexField.RELEASE, "Epics");
- }
+ doc.addField(ReleaseIndexField.SCRIPT, "Taml");
+ doc.addField(ReleaseIndexField.LANGUAGE, "fra");
+ doc.addField(ReleaseIndexField.TYPE, ReleaseGroupType.SINGLE.getName());
+ doc.addField(ReleaseIndexField.ARTIST, "Erich Kunzel and Cincinnati Pops");
+ doc.addField(ReleaseIndexField.ARTIST_ID, "99845d0c-f239-4051-a6b1-4b5e9f7ede0b");
+ doc.addField(ReleaseIndexField.ARTIST_NAME, "Erich Kunzel");
+ doc.addField(ReleaseIndexField.ARTIST_NAMECREDIT, "Erich Kunzel");
- @Test
- public void testFindReleaseByName() throws Exception {
- Results res = ss.search("release:\"Our Glorious 5 Year Plan\"", 0, 10);
- assertEquals(1, res.getTotalHits());
- Result result = res.results.get(0);
- MbDocument doc = result.getDoc();
- assertEquals("Our Glorious 5 Year Plan", doc.get(ReleaseIndexField.RELEASE));
- assertEquals("Wrath Records", doc.get(ReleaseIndexField.LABEL));
- }
+ doc.addField(ReleaseIndexField.ARTIST_ID, "d8fbd94c-cd06-4e8b-a559-761ad969d07e");
+ doc.addField(ReleaseIndexField.ARTIST_NAME, "The Cincinnati Pops Orchestra");
+ doc.addField(ReleaseIndexField.ARTIST_NAMECREDIT, "Cincinnati Pops");
- @Test
- public void testFindReleaseByDismax1() throws Exception {
- Results res = sd.search("Wrath", 0, 10);
- assertEquals(1, res.getTotalHits());
- Result result = res.results.get(0);
- MbDocument doc = result.getDoc();
- assertEquals("Our Glorious 5 Year Plan", doc.get(ReleaseIndexField.RELEASE));
- assertEquals("Wrath Records", doc.get(ReleaseIndexField.LABEL));
- }
+ ArtistCredit ac = of.createArtistCredit();
+ NameCredit nc = of.createNameCredit();
+ Artist artist = of.createArtist();
+ artist = of.createArtist();
+ artist.setId("99845d0c-f239-4051-a6b1-4b5e9f7ede0b");
+ artist.setName("Erich Kunzel");
+ artist.setSortName("Kunzel, Eric");
+ nc.setJoinphrase("and");
+ nc.setArtist(artist);
+ ac.getNameCredit().add(nc);
- @Test
- public void testFindReleaseByDismax2() throws Exception {
- Results res = sd.search("Farming", 0, 10);
- assertEquals(1, res.getTotalHits());
- Result result = res.results.get(0);
- MbDocument doc = result.getDoc();
- assertEquals("Our Glorious 5 Year Plan", doc.get(ReleaseIndexField.RELEASE));
- assertEquals("Wrath Records", doc.get(ReleaseIndexField.LABEL));
- }
+ nc = of.createNameCredit();
+ artist = of.createArtist();
+ artist.setId("d8fbd94c-cd06-4e8b-a559-761ad969d07e");
+ artist.setName("The Cincinnati Pops Orchestra");
+ artist.setSortName("Cincinnati Pops Orchestra, The");
+ nc.setArtist(artist);
+ nc.setName("Cincinnati Pops");
+ ac.getNameCredit().add(nc);
- @Test
- public void testFindReleaseByDismax3() throws Exception {
- Results res = sd.search("Incident", 0, 10);
- assertEquals(1, res.getTotalHits());
- Result result = res.results.get(0);
- MbDocument doc = result.getDoc();
- assertEquals("Our Glorious 5 Year Plan", doc.get(ReleaseIndexField.RELEASE));
- assertEquals("Wrath Records", doc.get(ReleaseIndexField.LABEL));
- }
+ doc.addField(ReleaseGroupIndexField.ARTIST_CREDIT, MMDSerializer.serialize(ac));
- @Test
- public void testFindReleaseByDismax4() throws Exception {
- Results res = sd.search("Our Glorious", 0, 10);
- assertEquals(1, res.getTotalHits());
- Result result = res.results.get(0);
- MbDocument doc = result.getDoc();
- assertEquals("Our Glorious 5 Year Plan", doc.get(ReleaseIndexField.RELEASE));
- assertEquals("Wrath Records", doc.get(ReleaseIndexField.LABEL));
- }
+ doc.addNumericField(ReleaseIndexField.NUM_TRACKS_MEDIUM, 14);
+ doc.addNumericField(ReleaseIndexField.NUM_DISCIDS_MEDIUM, 1);
+ doc.addField(ReleaseIndexField.STATUS, "Promotion");
+ doc.addNumericField(ReleaseIndexField.NUM_TRACKS, 14);
+ doc.addNumericField(ReleaseIndexField.NUM_DISCIDS, 1);
+ doc.addField(ReleaseIndexField.FORMAT, "CD");
- @Test
- public void testFindReleaseByDefault() throws Exception {
- Results res = ss.search("\"Our Glorious 5 Year Plan\"", 0, 10);
- assertEquals(1, res.getTotalHits());
- Result result = res.results.get(0);
- MbDocument doc = result.getDoc();
- assertEquals("Our Glorious 5 Year Plan", doc.get(ReleaseIndexField.RELEASE));
- assertEquals("Wrath Records", doc.get(ReleaseIndexField.LABEL));
+ doc.addField(ReleaseIndexField.COUNTRY, "US");
+ doc.addField(ReleaseIndexField.DATE, "2003-09-23");
+ doc.addNumericField(ReleaseIndexField.NUM_MEDIUMS, 1);
+ doc.addField(ReleaseIndexField.BARCODE, ReleaseIndex.BARCODE_NONE);
- }
+ doc.addField(ReleaseIndexField.RELEASE_STORE, MMDSerializer.serialize(release));
+ writer.addDocument(doc.getLuceneDocument());
+ }
- @Test
- public void testFindReleaseByArtistName() throws Exception {
- Results res = ss.search("artist:\"Farming Incident\"", 0, 10);
- assertEquals(1, res.getTotalHits());
- Result result = res.results.get(0);
- MbDocument doc = result.getDoc();
- assertEquals("Our Glorious 5 Year Plan", doc.get(ReleaseIndexField.RELEASE));
- assertEquals("Wrath Records", doc.get(ReleaseIndexField.LABEL));
- }
+ {
+ MbDocument doc = new MbDocument();
+ doc.addField(MetaIndexField.META, MetaIndexField.META_VALUE);
+ doc.addNumericField(MetaIndexField.LAST_UPDATED, new Date().getTime());
+ writer.addDocument(doc.getLuceneDocument());
+ }
- @Test
- public void testFindReleaseByFormat() throws Exception {
- Results res = ss.search("format:Vinyl", 0, 10);
- assertEquals(1, res.getTotalHits());
- Result result = res.results.get(0);
- MbDocument doc = result.getDoc();
- assertEquals("Our Glorious 5 Year Plan", doc.get(ReleaseIndexField.RELEASE));
- assertEquals("Wrath Records", doc.get(ReleaseIndexField.LABEL));
+ writer.close();
+ Map<ResourceType, IndexSearcher> searchers = new HashMap<ResourceType, IndexSearcher>();
+ searchers.put(ResourceType.RELEASE, new IndexSearcher(DirectoryReader.open(ramDir)));
- }
+ SearcherManager searcherManager = new SearcherManager(ramDir, new MusicBrainzSearcherFactory(ResourceType.RELEASE));
+ ss = new ReleaseSearch(searcherManager);
+ sd = new ReleaseDismaxSearch(ss);
+ }
- @Test
- public void testFindReleaseByCatNo() throws Exception {
- Results res = ss.search("catno:WRATHCD-25", 0, 10);
- assertEquals(1, res.getTotalHits());
- Result result = res.results.get(0);
- MbDocument doc = result.getDoc();
- assertEquals("Our Glorious 5 Year Plan", doc.get(ReleaseIndexField.RELEASE));
- assertEquals("Wrath Records", doc.get(ReleaseIndexField.LABEL));
- }
+ protected String getReleaseId(MbDocument doc) {
+ Release release = (Release) MMDSerializer.unserialize(doc.get(ReleaseIndexField.RELEASE_STORE), Release.class);
+ return release.getId();
+ }
@Test
+ public void testFindReleaseById() throws Exception {
+ Results res = ss.search("reid:\"1d9e8ed6-3893-4d3b-aa7d-6cd79609e386\"", 0, 10);
+ assertEquals(1, res.getTotalHits());
+ assertEquals("1d9e8ed6-3893-4d3b-aa7d-6cd79609e386", getReleaseId(res.results.get(0).getDoc()));
+ }
+
+ @Test
+ public void testFindReleaseByName() throws Exception {
+ Results res = ss.search("release:\"Our Glorious 5 Year Plan\"", 0, 10);
+ assertEquals(1, res.getTotalHits());
+ assertEquals("1d9e8ed6-3893-4d3b-aa7d-6cd79609e386", getReleaseId(res.results.get(0).getDoc()));
+ }
+
+ @Test
+ public void testFindReleaseByDismax1() throws Exception {
+ Results res = sd.search("Wrath", 0, 10);
+ assertEquals(1, res.getTotalHits());
+ assertEquals("1d9e8ed6-3893-4d3b-aa7d-6cd79609e386", getReleaseId(res.results.get(0).getDoc()));
+ }
+
+ @Test
+ public void testFindReleaseByDismax2() throws Exception {
+ Results res = sd.search("Farming", 0, 10);
+ assertEquals(1, res.getTotalHits());
+ assertEquals("1d9e8ed6-3893-4d3b-aa7d-6cd79609e386", getReleaseId(res.results.get(0).getDoc()));
+ }
+
+ @Test
+ public void testFindReleaseByDismax3() throws Exception {
+ Results res = sd.search("Incident", 0, 10);
+ assertEquals(1, res.getTotalHits());
+ assertEquals("1d9e8ed6-3893-4d3b-aa7d-6cd79609e386", getReleaseId(res.results.get(0).getDoc()));
+ }
+
+ @Test
+ public void testFindReleaseByDismax4() throws Exception {
+ Results res = sd.search("Our Glorious", 0, 10);
+ assertEquals(1, res.getTotalHits());
+ assertEquals("1d9e8ed6-3893-4d3b-aa7d-6cd79609e386", getReleaseId(res.results.get(0).getDoc()));
+ }
+
+ @Test
+ public void testFindReleaseByDefault() throws Exception {
+ Results res = ss.search("\"Our Glorious 5 Year Plan\"", 0, 10);
+ assertEquals(1, res.getTotalHits());
+ assertEquals("1d9e8ed6-3893-4d3b-aa7d-6cd79609e386", getReleaseId(res.results.get(0).getDoc()));
+
+ }
+
+ @Test
+ public void testFindReleaseByArtistName() throws Exception {
+ Results res = ss.search("artist:\"Farming Incident\"", 0, 10);
+ assertEquals(1, res.getTotalHits());
+ assertEquals("1d9e8ed6-3893-4d3b-aa7d-6cd79609e386", getReleaseId(res.results.get(0).getDoc()));
+ }
+
+ @Test
+ public void testFindReleaseByFormat() throws Exception {
+ Results res = ss.search("format:Vinyl", 0, 10);
+ assertEquals(1, res.getTotalHits());
+ assertEquals("1d9e8ed6-3893-4d3b-aa7d-6cd79609e386", getReleaseId(res.results.get(0).getDoc()));
+
+ }
+
+ @Test
+ public void testFindReleaseByCatNo() throws Exception {
+ Results res = ss.search("catno:WRATHCD-25", 0, 10);
+ assertEquals(1, res.getTotalHits());
+ assertEquals("1d9e8ed6-3893-4d3b-aa7d-6cd79609e386", getReleaseId(res.results.get(0).getDoc()));
+ }
+
+ @Test
public void testFindReleaseByCatNoWithSpaces() throws Exception {
Results res = ss.search("catno:\"CAT WITH SPACE\"", 0, 10);
assertEquals(1, res.getTotalHits());
- Result result = res.results.get(0);
- MbDocument doc = result.getDoc();
- assertEquals("Our Glorious 5 Year Plan", doc.get(ReleaseIndexField.RELEASE));
- assertEquals("Wrath Records", doc.get(ReleaseIndexField.LABEL));
+ assertEquals("1d9e8ed6-3893-4d3b-aa7d-6cd79609e386", getReleaseId(res.results.get(0).getDoc()));
}
@Test
public void testFindReleaseByCatNoWithSpacesIgnoringingSpaces() throws Exception {
Results res = ss.search("catno:\"CATWITHSPACE\"", 0, 10);
assertEquals(1, res.getTotalHits());
- Result result = res.results.get(0);
- MbDocument doc = result.getDoc();
- assertEquals("Our Glorious 5 Year Plan", doc.get(ReleaseIndexField.RELEASE));
- assertEquals("Wrath Records", doc.get(ReleaseIndexField.LABEL));
+ assertEquals("1d9e8ed6-3893-4d3b-aa7d-6cd79609e386", getReleaseId(res.results.get(0).getDoc()));
}
@Test
public void testFindReleaseByCatNoWithSpacesIgnoringingSpacesWildcard() throws Exception {
Results res = ss.search("catno:CATWITHSPACE*", 0, 10);
assertEquals(1, res.getTotalHits());
- Result result = res.results.get(0);
- MbDocument doc = result.getDoc();
- assertEquals("Our Glorious 5 Year Plan", doc.get(ReleaseIndexField.RELEASE));
- assertEquals("Wrath Records", doc.get(ReleaseIndexField.LABEL));
+ assertEquals("1d9e8ed6-3893-4d3b-aa7d-6cd79609e386", getReleaseId(res.results.get(0).getDoc()));
}
/*
@@ -355,13 +404,10 @@
*/
@Test
- public void testFindReleaseByCatNoAsterisk() throws Exception {
+ public void testFindReleaseByCatNoAsterisk() throws Exception {
Results res = ss.search("catno:WRATHCD-25*", 0, 10);
assertEquals(1, res.getTotalHits());
- Result result = res.results.get(0);
- MbDocument doc = result.getDoc();
- assertEquals("Our Glorious 5 Year Plan", doc.get(ReleaseIndexField.RELEASE));
- assertEquals("Wrath Records", doc.get(ReleaseIndexField.LABEL));
+ assertEquals("1d9e8ed6-3893-4d3b-aa7d-6cd79609e386", getReleaseId(res.results.get(0).getDoc()));
}
/*
@@ -375,556 +421,448 @@
assertEquals("Wrath Records", doc.get(ReleaseIndexField.LABEL));
}
*/
- @Test
- public void testFindReleaseByBarcodeWithoutZero() throws Exception {
- Results res = ss.search("barcode:7599273202", 0, 10);
- assertEquals(1, res.getTotalHits());
- Result result = res.results.get(0);
- MbDocument doc = result.getDoc();
- assertEquals("Our Glorious 5 Year Plan", doc.get(ReleaseIndexField.RELEASE));
- assertEquals("Wrath Records", doc.get(ReleaseIndexField.LABEL));
- assertEquals(1, doc.getFields(ReleaseIndexField.BARCODE).length);
- assertEquals("07599273202", doc.get(ReleaseIndexField.BARCODE));
- }
+ @Test
+ public void testFindReleaseByBarcodeWithoutZero() throws Exception {
+ Results res = ss.search("barcode:7599273202", 0, 10);
+ assertEquals(1, res.getTotalHits());
+ assertEquals("1d9e8ed6-3893-4d3b-aa7d-6cd79609e386", getReleaseId(res.results.get(0).getDoc()));
+ }
- @Test
- public void testFindReleaseByBarcodeWithZero() throws Exception {
- Results res = ss.search("barcode:07599273202", 0, 10);
- assertEquals(1, res.getTotalHits());
- Result result = res.results.get(0);
- MbDocument doc = result.getDoc();
- assertEquals("Our Glorious 5 Year Plan", doc.get(ReleaseIndexField.RELEASE));
- assertEquals("Wrath Records", doc.get(ReleaseIndexField.LABEL));
- assertEquals(1, doc.getFields(ReleaseIndexField.BARCODE).length);
- assertEquals("07599273202", doc.get(ReleaseIndexField.BARCODE));
- }
+ @Test
+ public void testFindReleaseByBarcodeWithZero() throws Exception {
+ Results res = ss.search("barcode:07599273202", 0, 10);
+ assertEquals(1, res.getTotalHits());
+ assertEquals("1d9e8ed6-3893-4d3b-aa7d-6cd79609e386", getReleaseId(res.results.get(0).getDoc()));
+ }
- @Test
- public void testFindReleaseByAsin() throws Exception {
- Results res = ss.search("asin:B00004Y6O9", 0, 10);
- assertEquals(1, res.getTotalHits());
- Result result = res.results.get(0);
- MbDocument doc = result.getDoc();
- assertEquals("Our Glorious 5 Year Plan", doc.get(ReleaseIndexField.RELEASE));
- assertEquals("Wrath Records", doc.get(ReleaseIndexField.LABEL));
- }
+ @Test
+ public void testFindReleaseByAsin() throws Exception {
+ Results res = ss.search("asin:B00004Y6O9", 0, 10);
+ assertEquals(1, res.getTotalHits());
+ assertEquals("1d9e8ed6-3893-4d3b-aa7d-6cd79609e386", getReleaseId(res.results.get(0).getDoc()));
+ }
- @Test
- public void testFindReleaseByAsinLowercase() throws Exception {
- Results res = ss.search("asin:b00004y6O9", 0, 10);
- assertEquals(1, res.getTotalHits());
- Result result = res.results.get(0);
- MbDocument doc = result.getDoc();
- assertEquals("Our Glorious 5 Year Plan", doc.get(ReleaseIndexField.RELEASE));
- assertEquals("Wrath Records", doc.get(ReleaseIndexField.LABEL));
- }
+ @Test
+ public void testFindReleaseByAsinLowercase() throws Exception {
+ Results res = ss.search("asin:b00004y6O9", 0, 10);
+ assertEquals(1, res.getTotalHits());
+ assertEquals("1d9e8ed6-3893-4d3b-aa7d-6cd79609e386", getReleaseId(res.results.get(0).getDoc()));
+ }
- /**
- * Works as is even though lang code not analysed because lang code always lowercase
- *
- * @throws Exception
- */
- @Test
- public void testFindReleaseByLanguage() throws Exception {
- Results res = ss.search("lang:eng", 0, 10);
- assertEquals(1, res.getTotalHits());
- Result result = res.results.get(0);
- MbDocument doc = result.getDoc();
- assertEquals("Our Glorious 5 Year Plan", doc.get(ReleaseIndexField.RELEASE));
- assertEquals("Wrath Records", doc.get(ReleaseIndexField.LABEL));
- }
+ /**
+ * Works as is even though lang code not analysed because lang code always lowercase
+ *
+ * @throws Exception
+ */
+ @Test
+ public void testFindReleaseByLanguage() throws Exception {
+ Results res = ss.search("lang:eng", 0, 10);
+ assertEquals(1, res.getTotalHits());
+ assertEquals("1d9e8ed6-3893-4d3b-aa7d-6cd79609e386", getReleaseId(res.results.get(0).getDoc()));
+ }
- /**
- * Works as is even though lang code not analysed because lang code always lowercase
- *
- * @throws Exception
- */
- @Test
- public void testFindReleaseByLanguageUppercase() throws Exception {
- Results res = ss.search("lang:ENG", 0, 10);
- assertEquals(1, res.getTotalHits());
- Result result = res.results.get(0);
- MbDocument doc = result.getDoc();
- assertEquals("Our Glorious 5 Year Plan", doc.get(ReleaseIndexField.RELEASE));
- assertEquals("Wrath Records", doc.get(ReleaseIndexField.LABEL));
- }
+ /**
+ * Works as is even though lang code not analysed because lang code always lowercase
+ *
+ * @throws Exception
+ */
+ @Test
+ public void testFindReleaseByLanguageUppercase() throws Exception {
+ Results res = ss.search("lang:ENG", 0, 10);
+ assertEquals(1, res.getTotalHits());
+ assertEquals("1d9e8ed6-3893-4d3b-aa7d-6cd79609e386", getReleaseId(res.results.get(0).getDoc()));
+ }
- /**
- * @throws Exception
- */
- @Test
- public void testFindReleaseByScript() throws Exception {
- Results res = ss.search("script:latn", 0, 10);
- assertEquals(1, res.getTotalHits());
- Result result = res.results.get(0);
- MbDocument doc = result.getDoc();
- assertEquals("Our Glorious 5 Year Plan", doc.get(ReleaseIndexField.RELEASE));
- assertEquals("Wrath Records", doc.get(ReleaseIndexField.LABEL));
- }
+ /**
+ * @throws Exception
+ */
+ @Test
+ public void testFindReleaseByScript() throws Exception {
+ Results res = ss.search("script:latn", 0, 10);
+ assertEquals(1, res.getTotalHits());
+ assertEquals("1d9e8ed6-3893-4d3b-aa7d-6cd79609e386", getReleaseId(res.results.get(0).getDoc()));
+ }
- /**
- * @throws Exception
- */
- @Test
- public void testFindReleaseByComment() throws Exception {
- Results res = ss.search("comment:demo", 0, 10);
- assertEquals(1, res.getTotalHits());
- Result result = res.results.get(0);
- MbDocument doc = result.getDoc();
- assertEquals("Our Glorious 5 Year Plan", doc.get(ReleaseIndexField.RELEASE));
- assertEquals("demo", doc.get(ReleaseIndexField.COMMENT));
- }
+ /**
+ * @throws Exception
+ */
+ @Test
+ public void testFindReleaseByComment() throws Exception {
+ Results res = ss.search("comment:demo", 0, 10);
+ assertEquals(1, res.getTotalHits());
+ assertEquals("1d9e8ed6-3893-4d3b-aa7d-6cd79609e386", getReleaseId(res.results.get(0).getDoc()));
+ }
- /**
- * @throws Exception
- */
- @Test
- public void testFindReleaseByScriptUppercase() throws Exception {
- Results res = ss.search("script:LATN", 0, 10);
- assertEquals(1, res.getTotalHits());
- Result result = res.results.get(0);
- MbDocument doc = result.getDoc();
- assertEquals("Our Glorious 5 Year Plan", doc.get(ReleaseIndexField.RELEASE));
- assertEquals("Wrath Records", doc.get(ReleaseIndexField.LABEL));
- }
+ /**
+ * @throws Exception
+ */
+ @Test
+ public void testFindReleaseByScriptUppercase() throws Exception {
+ Results res = ss.search("script:LATN", 0, 10);
+ assertEquals(1, res.getTotalHits());
+ assertEquals("1d9e8ed6-3893-4d3b-aa7d-6cd79609e386", getReleaseId(res.results.get(0).getDoc()));
+ }
- /*
- * @throws Exception
- */
- @Test
- public void testFindReleaseByCountry() throws Exception {
- Results res = ss.search("country:gb", 0, 10);
- assertEquals(1, res.getTotalHits());
- Result result = res.results.get(0);
- MbDocument doc = result.getDoc();
- assertEquals("Our Glorious 5 Year Plan", doc.get(ReleaseIndexField.RELEASE));
- assertEquals("Wrath Records", doc.get(ReleaseIndexField.LABEL));
- }
+ /*
+ * @throws Exception
+ */
+ @Test
+ public void testFindReleaseByCountry() throws Exception {
+ Results res = ss.search("country:gb", 0, 10);
+ assertEquals(1, res.getTotalHits());
+ assertEquals("1d9e8ed6-3893-4d3b-aa7d-6cd79609e386", getReleaseId(res.results.get(0).getDoc()));
+ }
- /*
- * @throws Exception
- */
- @Test
- public void testFindReleaseWithNoBarcode() throws Exception {
- Results res = ss.search("barcode:none", 0, 10);
- assertEquals(1, res.getTotalHits());
- Result result = res.results.get(0);
- MbDocument doc = result.getDoc();
- assertEquals("Epics", doc.get(ReleaseIndexField.RELEASE));
- }
+ /*
+ * @throws Exception
+ */
+ @Test
+ public void testFindReleaseWithNoBarcode() throws Exception {
+ Results res = ss.search("barcode:none", 0, 10);
+ assertEquals(1, res.getTotalHits());
+ assertEquals("1d9e8ed6-3893-4d3b-aa7d-6cd79609e386", getReleaseId(res.results.get(0).getDoc()));
+ }
- /*
- * @throws Exception
- */
- @Test
- public void testFindReleaseWithNotKnownBarcode() throws Exception {
- Results res = ss.search("barcode:\\-", 0, 10);
- assertEquals(0, res.getTotalHits());
- }
+ /*
+ * @throws Exception
+ */
+ @Test
+ public void testFindReleaseWithNotKnownBarcode() throws Exception {
+ Results res = ss.search("barcode:\\-", 0, 10);
+ assertEquals(0, res.getTotalHits());
+ }
- /*
- * @throws Exception
- */
- @Test
- public void testFindReleaseByNumTracks() throws Exception {
- Results res = ss.search("tracks:17", 0, 10);
- assertEquals(1, res.getTotalHits());
- Result result = res.results.get(0);
- MbDocument doc = result.getDoc();
- assertEquals("Our Glorious 5 Year Plan", doc.get(ReleaseIndexField.RELEASE));
- assertEquals("Wrath Records", doc.get(ReleaseIndexField.LABEL));
- }
+ /*
+ * @throws Exception
+ */
+ @Test
+ public void testFindReleaseByNumTracks() throws Exception {
+ Results res = ss.search("tracks:17", 0, 10);
+ assertEquals(1, res.getTotalHits());
+ assertEquals("1d9e8ed6-3893-4d3b-aa7d-6cd79609e386", getReleaseId(res.results.get(0).getDoc()));
+ }
- /*
- * @throws Exception
- */
- @Test
- public void testFindReleaseByTracksOnMedium() throws Exception {
- Results res = ss.search("tracksmedium:10", 0, 10);
- assertEquals(1, res.getTotalHits());
- Result result = res.results.get(0);
- MbDocument doc = result.getDoc();
- assertEquals("Our Glorious 5 Year Plan", doc.get(ReleaseIndexField.RELEASE));
- assertEquals("Wrath Records", doc.get(ReleaseIndexField.LABEL));
- }
+ /*
+ * @throws Exception
+ */
+ @Test
+ public void testFindReleaseByTracksOnMedium() throws Exception {
+ Results res = ss.search("tracksmedium:10", 0, 10);
+ assertEquals(1, res.getTotalHits());
+ assertEquals("1d9e8ed6-3893-4d3b-aa7d-6cd79609e386", getReleaseId(res.results.get(0).getDoc()));
+ }
- /*
- * @throws Exception
- */
- @Test
- public void testFindReleaseByNumDiscOnMedium() throws Exception {
- Results res = ss.search("discidsmedium:2", 0, 10);
- assertEquals(1, res.getTotalHits());
- Result result = res.results.get(0);
- MbDocument doc = result.getDoc();
- assertEquals("Our Glorious 5 Year Plan", doc.get(ReleaseIndexField.RELEASE));
- assertEquals("Wrath Records", doc.get(ReleaseIndexField.LABEL));
- }
+ /*
+ * @throws Exception
+ */
+ @Test
+ public void testFindReleaseByNumDiscOnMedium() throws Exception {
+ Results res = ss.search("discidsmedium:2", 0, 10);
+ assertEquals(1, res.getTotalHits());
+ assertEquals("1d9e8ed6-3893-4d3b-aa7d-6cd79609e386", getReleaseId(res.results.get(0).getDoc()));
+ }
- /*
- * @throws Exception
- */
- @Test
- public void testFindReleaseByNumDisc() throws Exception {
- Results res = ss.search("discids:3", 0, 10);
- assertEquals(1, res.getTotalHits());
- Result result = res.results.get(0);
- MbDocument doc = result.getDoc();
- assertEquals("Our Glorious 5 Year Plan", doc.get(ReleaseIndexField.RELEASE));
- assertEquals("Wrath Records", doc.get(ReleaseIndexField.LABEL));
- }
+ /*
+ * @throws Exception
+ */
+ @Test
+ public void testFindReleaseByNumDisc() throws Exception {
+ Results res = ss.search("discids:3", 0, 10);
+ assertEquals(1, res.getTotalHits());
+ assertEquals("1d9e8ed6-3893-4d3b-aa7d-6cd79609e386", getReleaseId(res.results.get(0).getDoc()));
+ }
- /**
- * @throws Exception
- */
- @Test
- public void testFindReleaseByCountryUppercase() throws Exception {
- Results res = ss.search("country:GB", 0, 10);
- assertEquals(1, res.getTotalHits());
- Result result = res.results.get(0);
- MbDocument doc = result.getDoc();
- assertEquals("Our Glorious 5 Year Plan", doc.get(ReleaseIndexField.RELEASE));
- assertEquals("Wrath Records", doc.get(ReleaseIndexField.LABEL));
- }
+ /**
+ * @throws Exception
+ */
+ @Test
+ public void testFindReleaseByCountryUppercase() throws Exception {
+ Results res = ss.search("country:GB", 0, 10);
+ assertEquals(1, res.getTotalHits());
+ assertEquals("1d9e8ed6-3893-4d3b-aa7d-6cd79609e386", getReleaseId(res.results.get(0).getDoc()));
+ }
- @Test
- public void testFindReleaseByDate() throws Exception {
- Results res = ss.search("date:2005", 0, 10);
- assertEquals(1, res.getTotalHits());
- Result result = res.results.get(0);
- MbDocument doc = result.getDoc();
- assertEquals("Our Glorious 5 Year Plan", doc.get(ReleaseIndexField.RELEASE));
- assertEquals("Wrath Records", doc.get(ReleaseIndexField.LABEL));
- }
+ @Test
+ public void testFindReleaseByDate() throws Exception {
+ Results res = ss.search("date:2005", 0, 10);
+ assertEquals(1, res.getTotalHits());
+ assertEquals("1d9e8ed6-3893-4d3b-aa7d-6cd79609e386", getReleaseId(res.results.get(0).getDoc()));
+ }
- @Test
- public void testFindReleaseByTypeLowercase() throws Exception {
- Results res = ss.search("type:\"compilation\"", 0, 10);
- assertEquals(1, res.getTotalHits());
- Result result = res.results.get(0);
- MbDocument doc = result.getDoc();
- assertEquals("Our Glorious 5 Year Plan", doc.get(ReleaseIndexField.RELEASE));
- assertEquals("Wrath Records", doc.get(ReleaseIndexField.LABEL));
- assertEquals("Compilation", doc.get(ReleaseGroupIndexField.TYPE));
- }
+ @Test
+ public void testFindReleaseByTypeLowercase() throws Exception {
+ Results res = ss.search("type:\"compilation\"", 0, 10);
+ assertEquals(1, res.getTotalHits());
+ assertEquals("1d9e8ed6-3893-4d3b-aa7d-6cd79609e386", getReleaseId(res.results.get(0).getDoc()));
+ }
- @Test
- public void testFindReleaseBySecondaryTypeFirst() throws Exception {
- Results res = ss.search("secondarytype:\"Live\"", 0, 10);
- assertEquals(1, res.getTotalHits());
- Result result = res.results.get(0);
- MbDocument doc = result.getDoc();
- assertEquals("Our Glorious 5 Year Plan", doc.get(ReleaseIndexField.RELEASE));
- assertEquals("Wrath Records", doc.get(ReleaseIndexField.LABEL));
- assertEquals("Album", doc.get(ReleaseGroupIndexField.PRIMARY_TYPE));
- assertEquals("Compilation", doc.get(ReleaseGroupIndexField.TYPE));
- }
+ @Test
+ public void testFindReleaseBySecondaryTypeFirst() throws Exception {
+ Results res = ss.search("secondarytype:\"Live\"", 0, 10);
+ assertEquals(1, res.getTotalHits());
+ assertEquals("1d9e8ed6-3893-4d3b-aa7d-6cd79609e386", getReleaseId(res.results.get(0).getDoc()));
+ }
- @Test
- public void testFindReleaseBySecondaryTypeSecond() throws Exception {
- Results res = ss.search("secondarytype:\"Compilation\"", 0, 10);
- assertEquals(1, res.getTotalHits());
- Result result = res.results.get(0);
- MbDocument doc = result.getDoc();
- assertEquals("Our Glorious 5 Year Plan", doc.get(ReleaseIndexField.RELEASE));
- assertEquals("Wrath Records", doc.get(ReleaseIndexField.LABEL));
- assertEquals("Album", doc.get(ReleaseGroupIndexField.PRIMARY_TYPE));
- assertEquals("Compilation", doc.get(ReleaseGroupIndexField.TYPE));
- }
+ @Test
+ public void testFindReleaseBySecondaryTypeSecond() throws Exception {
+ Results res = ss.search("secondarytype:\"Compilation\"", 0, 10);
+ assertEquals(1, res.getTotalHits());
+ assertEquals("1d9e8ed6-3893-4d3b-aa7d-6cd79609e386", getReleaseId(res.results.get(0).getDoc()));
+ }
- @Test
- public void testFindReleaseByTypeTitleCase() throws Exception {
- Results res = ss.search("type:\"Compilation\"", 0, 10);
- assertEquals(1, res.getTotalHits());
- Result result = res.results.get(0);
- MbDocument doc = result.getDoc();
- assertEquals("Our Glorious 5 Year Plan", doc.get(ReleaseIndexField.RELEASE));
- assertEquals("Wrath Records", doc.get(ReleaseIndexField.LABEL));
- assertEquals("Album", doc.get(ReleaseIndexField.PRIMARY_TYPE));
- assertEquals("Compilation", doc.get(ReleaseIndexField.TYPE));
- }
+ @Test
+ public void testFindReleaseByTypeTitleCase() throws Exception {
+ Results res = ss.search("type:\"Compilation\"", 0, 10);
+ assertEquals(1, res.getTotalHits());
+ assertEquals("1d9e8ed6-3893-4d3b-aa7d-6cd79609e386", getReleaseId(res.results.get(0).getDoc()));
+ }
- @Test
- public void testFindReleaseByRgid() throws Exception {
- Results res = ss.search("rgid:1d9e8ed6-3893-4d3b-aa7d-6cd79609e333", 0, 10);
- assertEquals(1, res.getTotalHits());
- Result result = res.results.get(0);
- MbDocument doc = result.getDoc();
- assertEquals("Our Glorious 5 Year Plan", doc.get(ReleaseIndexField.RELEASE));
- assertEquals("Wrath Records", doc.get(ReleaseIndexField.LABEL));
- assertEquals("Album", doc.get(ReleaseGroupIndexField.PRIMARY_TYPE));
- assertEquals("Compilation", doc.get(ReleaseGroupIndexField.TYPE));
- }
+ @Test
+ public void testFindReleaseByRgid() throws Exception {
+ Results res = ss.search("rgid:1d9e8ed6-3893-4d3b-aa7d-6cd79609e333", 0, 10);
+ assertEquals(1, res.getTotalHits());
+ assertEquals("1d9e8ed6-3893-4d3b-aa7d-6cd79609e386", getReleaseId(res.results.get(0).getDoc()));
+ }
- @Test
- public void testFindReleaseByNumericType() throws Exception {
- Results res = ss.search("type:4", 0, 10);
- assertEquals(1, res.getTotalHits());
- Result result = res.results.get(0);
- MbDocument doc = result.getDoc();
- assertEquals("Our Glorious 5 Year Plan", doc.get(ReleaseIndexField.RELEASE));
- assertEquals("Wrath Records", doc.get(ReleaseIndexField.LABEL));
- assertEquals("Album", doc.get(ReleaseGroupIndexField.PRIMARY_TYPE));
- assertEquals("Compilation", doc.get(ReleaseGroupIndexField.TYPE));
- }
+ @Test
+ public void testFindReleaseByNumericType() throws Exception {
+ Results res = ss.search("type:4", 0, 10);
+ assertEquals(1, res.getTotalHits());
+ assertEquals("1d9e8ed6-3893-4d3b-aa7d-6cd79609e386", getReleaseId(res.results.get(0).getDoc()));
+ }
- @Test
- public void testFindReleaseByStatusLowercase() throws Exception {
- Results res = ss.search("status:\"official\"", 0, 10);
- assertEquals(1, res.getTotalHits());
- Result result = res.results.get(0);
- MbDocument doc = result.getDoc();
- assertEquals("Our Glorious 5 Year Plan", doc.get(ReleaseIndexField.RELEASE));
- assertEquals("Wrath Records", doc.get(ReleaseIndexField.LABEL));
- assertEquals("Album", doc.get(ReleaseGroupIndexField.PRIMARY_TYPE));
- assertEquals("Compilation", doc.get(ReleaseGroupIndexField.TYPE));
- }
+ @Test
+ public void testFindReleaseByStatusLowercase() throws Exception {
+ Results res = ss.search("status:\"official\"", 0, 10);
+ assertEquals(1, res.getTotalHits());
+ assertEquals("1d9e8ed6-3893-4d3b-aa7d-6cd79609e386", getReleaseId(res.results.get(0).getDoc()));
+ }
- @Test
- public void testFindReleaseByStatusTitleCase() throws Exception {
- Results res = ss.search("status:\"Official\"", 0, 10);
- assertEquals(1, res.getTotalHits());
- Result result = res.results.get(0);
- MbDocument doc = result.getDoc();
- assertEquals("Our Glorious 5 Year Plan", doc.get(ReleaseIndexField.RELEASE));
- assertEquals("Wrath Records", doc.get(ReleaseIndexField.LABEL));
- assertEquals("Album", doc.get(ReleaseGroupIndexField.PRIMARY_TYPE));
- assertEquals("Compilation", doc.get(ReleaseGroupIndexField.TYPE));
- }
+ @Test
+ public void testFindReleaseByStatusTitleCase() throws Exception {
+ Results res = ss.search("status:\"Official\"", 0, 10);
+ assertEquals(1, res.getTotalHits());
+ assertEquals("1d9e8ed6-3893-4d3b-aa7d-6cd79609e386", getReleaseId(res.results.get(0).getDoc()));
+ }
- @Test
- public void testFindReleaseByNumericstatus() throws Exception {
- Results res = ss.search("status:1", 0, 10);
- assertEquals(1, res.getTotalHits());
- Result result = res.results.get(0);
- MbDocument doc = result.getDoc();
- assertEquals("Our Glorious 5 Year Plan", doc.get(ReleaseIndexField.RELEASE));
- assertEquals("Wrath Records", doc.get(ReleaseIndexField.LABEL));
- assertEquals("Album", doc.get(ReleaseGroupIndexField.PRIMARY_TYPE));
- assertEquals("Compilation", doc.get(ReleaseGroupIndexField.TYPE));
- }
+ @Test
+ public void testFindReleaseByNumericstatus() throws Exception {
+ Results res = ss.search("status:1", 0, 10);
+ assertEquals(1, res.getTotalHits());
+ assertEquals("1d9e8ed6-3893-4d3b-aa7d-6cd79609e386", getReleaseId(res.results.get(0).getDoc()));
+ }
- @Test
- public void testFindReleaseGroupByArtist2() throws Exception {
- Results res = ss.search("artist:\"Erich Kunzel\"", 0, 10);
- assertEquals(1, res.getTotalHits());
- Result result = res.results.get(0);
- MbDocument doc = result.getDoc();
- assertEquals("0011c128-b1f2-300e-88cc-c33c30dce704", doc.get(ReleaseIndexField.RELEASE_ID));
- assertEquals("Epics", doc.get(ReleaseIndexField.RELEASE));
+ @Test
+ public void testFindReleaseGroupByArtist2() throws Exception {
+ Results res = ss.search("artist:\"Erich Kunzel\"", 0, 10);
+ assertEquals(1, res.getTotalHits());
+ assertEquals("1d9e8ed6-3893-4d3b-aa7d-6cd79609e386", getReleaseId(res.results.get(0).getDoc()));
- }
+ }
- @Test
- public void testFindReleaseGroupByAllArtist2() throws Exception {
- Results res = ss.search("artist:\"Erich Kunzel and Cincinnati Pops\"", 0, 10);
- assertEquals(1, res.getTotalHits());
- Result result = res.results.get(0);
- MbDocument doc = result.getDoc();
- assertEquals("0011c128-b1f2-300e-88cc-c33c30dce704", doc.get(ReleaseIndexField.RELEASE_ID));
- assertEquals("Epics", doc.get(ReleaseIndexField.RELEASE));
- }
+ @Test
+ public void testFindReleaseGroupByAllArtist2() throws Exception {
+ Results res = ss.search("artist:\"Erich Kunzel and Cincinnati Pops\"", 0, 10);
+ assertEquals(1, res.getTotalHits());
+ assertEquals("1d9e8ed6-3893-4d3b-aa7d-6cd79609e386", getReleaseId(res.results.get(0).getDoc()));
+ }
- @Test
- public void testFindReleaseByNumberofMediums() throws Exception {
- Results res = ss.search("mediums:2", 0, 10);
- assertEquals(1, res.getTotalHits());
- }
+ @Test
+ public void testFindReleaseByNumberofMediums() throws Exception {
+ Results res = ss.search("mediums:2", 0, 10);
+ assertEquals(1, res.getTotalHits());
+ }
- @Test
- public void testFindReleaseByLabelId() throws Exception {
- Results res = ss.search("laid:c1dfaf9c-d498-4f6c-b040-f7714315fcea", 0, 10);
- assertEquals(1, res.getTotalHits());
- }
+ @Test
+ public void testFindReleaseByLabelId() throws Exception {
+ Results res = ss.search("laid:c1dfaf9c-d498-4f6c-b040-f7714315fcea", 0, 10);
+ assertEquals(1, res.getTotalHits());
+ }
- @Test
- public void testNumericRangeQuery() throws Exception {
- Results res = ss.search("tracksmedium:[7 TO 17]", 0, 10);
- assertEquals(2, res.getTotalHits());
- }
+ @Test
+ public void testNumericRangeQuery() throws Exception {
+ Results res = ss.search("tracksmedium:[7 TO 17]", 0, 10);
+ assertEquals(2, res.getTotalHits());
+ }
- @Test
- public void testFindReleaseByPuid() throws Exception {
- Results res = ss.search("puid:668f3a22-03e8-e3cd-55e4-2e9a0906419a", 0, 10);
- assertEquals(1, res.getTotalHits());
- }
+ @Test
+ public void testFindReleaseByPuid() throws Exception {
+ Results res = ss.search("puid:668f3a22-03e8-e3cd-55e4-2e9a0906419a", 0, 10);
+ assertEquals(1, res.getTotalHits());
+ }
- /**
- * Tests get same results as
- * http://musicbrainz.org/ws/1/release/?type=xml&query=%22Our%20Glorious%205%20Year%20Plan%22
- *
- * @throws Exception
- */
- @Test
- public void testOutputAsMmdv1Xml() throws Exception {
+ /**
+ * Tests get same results as
+ * http://musicbrainz.org/ws/1/release/?type=xml&query=%22Our%20Glorious%205%20Year%20Plan%22
+ *
+ * @throws Exception
+ */
+ @Test
+ public void testOutputAsMmdv1Xml() throws Exception {
- Results res = ss.search("release:\"Our Glorious 5 Year Plan\"", 0, 1);
- ResultsWriter writer = new ReleaseMmd1XmlWriter();
- StringWriter sw = new StringWriter();
- PrintWriter pr = new PrintWriter(sw);
- writer.write(pr, res);
- pr.close();
- String output = sw.toString();
- System.out.println("Xml is" + output);
- assertTrue(output.contains("count=\"1\""));
- assertTrue(output.contains("offset=\"0\""));
- assertTrue(output.contains("id=\"1d9e8ed6-3893-4d3b-aa7d-6cd79609e386\""));
- assertTrue(output.contains("language=\"ENG\""));
- assertTrue(output.contains("script=\"Latn\""));
- assertTrue(output.contains("type=\"Compilation Official\""));
- assertTrue(output.contains("<title>Our Glorious 5 Year Plan</title>"));
- assertTrue(output.contains("<name>Farming Incident</name>"));
- assertTrue(output.contains("<sort-name>Incident, Farming</sort-name>"));
- assertTrue(output.contains("artist id=\"4302e264-1cf0-4d1f-aca7-2a6f89e34b36\""));
- assertTrue(output.contains("<disc-list count=\"3\""));
- assertTrue(output.contains("<track-list count=\"17\""));
- assertTrue(output.contains("date=\"2005\""));
- assertTrue(output.contains("country=\"GB\""));
- assertTrue(output.contains("format=\"Vinyl\""));
- assertTrue(output.contains("<asin>B00004Y6O9</asin>"));
+ Results res = ss.search("release:\"Our Glorious 5 Year Plan\"", 0, 1);
+ ResultsWriter writer = new ReleaseMmd1XmlWriter();
+ StringWriter sw = new StringWriter();
+ PrintWriter pr = new PrintWriter(sw);
+ writer.write(pr, res);
+ pr.close();
+ String output = sw.toString();
+ System.out.println("Xml is" + output);
+ assertTrue(output.contains("count=\"1\""));
+ assertTrue(output.contains("offset=\"0\""));
+ assertTrue(output.contains("id=\"1d9e8ed6-3893-4d3b-aa7d-6cd79609e386\""));
+ assertTrue(output.contains("language=\"ENG\""));
+ assertTrue(output.contains("script=\"Latn\""));
+ assertTrue(output.contains("type=\"Compilation Official\""));
+ assertTrue(output.contains("<title>Our Glorious 5 Year Plan</title>"));
+ assertTrue(output.contains("<name>Farming Incident</name>"));
+ assertTrue(output.contains("<sort-name>Incident, Farming</sort-name>"));
+ assertTrue(output.contains("artist id=\"4302e264-1cf0-4d1f-aca7-2a6f89e34b36\""));
+ assertTrue(output.contains("<disc-list count=\"3\""));
+ assertTrue(output.contains("<track-list count=\"17\""));
+ assertTrue(output.contains("date=\"2005\""));
+ assertTrue(output.contains("country=\"GB\""));
+ assertTrue(output.contains("format=\"Vinyl\""));
+ assertTrue(output.contains("<asin>B00004Y6O9</asin>"));
- assertTrue(output.contains("<label><name>Wrath Records</name></label>"));
- assertTrue(output.contains("catalog-number=\"WRATHCD-25\""));
+ assertTrue(output.contains("<label><name>Wrath Records</name></label>"));
+ assertTrue(output.contains("catalog-number=\"WRATHCD-25\""));
- }
+ }
- /**
- * Tests get same results as
- * http://musicbrainz.org/ws/1/release/?type=xml&query=%22Our%20Glorious%205%20Year%20Plan%22
- *
- * @throws Exception
- */
- @Test
- public void testOutputAsXml() throws Exception {
+ /**
+ * Tests get same results as
+ * http://musicbrainz.org/ws/1/release/?type=xml&query=%22Our%20Glorious%205%20Year%20Plan%22
+ *
+ * @throws Exception
+ */
+ @Test
+ public void testOutputAsXml() throws Exception {
- Results res = ss.search("release:\"Our Glorious 5 Year Plan\"", 0, 1);
- ResultsWriter writer = ss.getMmd2Writer();
- StringWriter sw = new StringWriter();
- PrintWriter pr = new PrintWriter(sw);
- writer.write(pr, res, SearchServerServlet.RESPONSE_XML, true);
- pr.close();
- String output = sw.toString();
- System.out.println("Xml is" + output);
- assertTrue(output.contains("count=\"1\""));
- assertTrue(output.contains("offset=\"0\""));
- assertTrue(output.contains("xmlns:ext=\"http://musicbrainz.org/ns/ext#-2.0\""));
- assertTrue(output.contains("id=\"1d9e8ed6-3893-4d3b-aa7d-6cd79609e386\""));
- assertTrue(output.contains("<language>eng</language>"));
- assertTrue(output.contains("<script>Latn</script>"));
- assertTrue(output.contains("type=\"Compilation\""));
- assertTrue(output.contains("<primary-type>Album</primary-type>"));
+ Results res = ss.search("release:\"Our Glorious 5 Year Plan\"", 0, 1);
+ ResultsWriter writer = ss.getMmd2Writer();
+ StringWriter sw = new StringWriter();
+ PrintWriter pr = new PrintWriter(sw);
+ writer.write(pr, res, SearchServerServlet.RESPONSE_XML, true);
+ pr.close();
+ String output = sw.toString();
+ System.out.println("Xml is" + output);
+ assertTrue(output.contains("count=\"1\""));
+ assertTrue(output.contains("offset=\"0\""));
+ assertTrue(output.contains("xmlns:ext=\"http://musicbrainz.org/ns/ext#-2.0\""));
+ assertTrue(output.contains("id=\"1d9e8ed6-3893-4d3b-aa7d-6cd79609e386\""));
+ assertTrue(output.contains("<language>eng</language>"));
+ assertTrue(output.contains("<script>Latn</script>"));
+ assertTrue(output.contains("type=\"Compilation\""));
+ assertTrue(output.contains("<primary-type>Album</primary-type>"));
- assertTrue(output.contains("id=\"1d9e8ed6-3893-4d3b-aa7d-6cd79609e333\""));
- assertTrue(output.contains("<title>Our Glorious 5 Year Plan</title>"));
- assertTrue(output.contains("<name>Farming Incident</name>"));
- assertTrue(output.contains("<sort-name>Incident, Farming</sort-name>"));
- assertTrue(output.contains("<disambiguation>demo</disambiguation>"));
- assertTrue(output.contains("artist id=\"4302e264-1cf0-4d1f-aca7-2a6f89e34b36\""));
- assertTrue(output.contains("<disc-list count=\"1\""));
- assertTrue(output.contains("<track-list count=\"10\""));
- assertTrue(output.contains("<date>2005</date>"));
- assertTrue(output.contains("<country>GB</country>"));
- assertTrue(output.contains("<format>Vinyl</format>"));
- assertTrue(output.contains("<asin>B00004Y6O9</asin>"));
- assertTrue(output.contains("<track-count>17</track-count>"));
- assertTrue(output.contains("<name>Wrath Records</name>"));
- assertTrue(output.contains("<label id=\"c1dfaf9c-d498-4f6c-b040-f7714315fcea\">"));
- assertTrue(output.contains("<name>Major Records</name>"));
- assertTrue(output.contains("<catalog-number>WRATHCD-25</catalog-number>"));
- assertTrue(output.contains("<medium-list count=\"2\">"));
- assertTrue(output.contains("<secondary-type>Live</secondary-type>"));
- assertTrue(output.contains("<secondary-type>Compilation</secondary-type>"));
- assertTrue(output.contains("<name>punk</name>"));
- }
+ assertTrue(output.contains("id=\"1d9e8ed6-3893-4d3b-aa7d-6cd79609e333\""));
+ assertTrue(output.contains("<title>Our Glorious 5 Year Plan</title>"));
+ assertTrue(output.contains("<name>Farming Incident</name>"));
+ assertTrue(output.contains("<sort-name>Incident, Farming</sort-name>"));
+ assertTrue(output.contains("<disambiguation>demo</disambiguation>"));
+ assertTrue(output.contains("artist id=\"4302e264-1cf0-4d1f-aca7-2a6f89e34b36\""));
+ assertTrue(output.contains("<disc-list count=\"1\""));
+ assertTrue(output.contains("<track-list count=\"10\""));
+ assertTrue(output.contains("<date>2005</date>"));
+ assertTrue(output.contains("<country>GB</country>"));
+ assertTrue(output.contains("<format>Vinyl</format>"));
+ assertTrue(output.contains("<asin>B00004Y6O9</asin>"));
+ assertTrue(output.contains("<track-count>17</track-count>"));
+ assertTrue(output.contains("<name>Wrath Records</name>"));
+ assertTrue(output.contains("<label id=\"c1dfaf9c-d498-4f6c-b040-f7714315fcea\">"));
+ assertTrue(output.contains("<name>Major Records</name>"));
+ assertTrue(output.contains("<catalog-number>WRATHCD-25</catalog-number>"));
+ assertTrue(output.contains("<medium-list count=\"2\">"));
+ assertTrue(output.contains("<secondary-type>Live</secondary-type>"));
+ assertTrue(output.contains("<secondary-type>Compilation</secondary-type>"));
+ assertTrue(output.contains("<name>punk</name>"));
+ }
- @Test
- public void testOutputJson() throws Exception {
+ @Test
+ public void testOutputJson() throws Exception {
- Results res = ss.search("release:\"Our Glorious 5 Year Plan\"", 0, 10);
- ResultsWriter writer = ss.getMmd2Writer();
- StringWriter sw = new StringWriter();
- PrintWriter pr = new PrintWriter(sw);
- writer.write(pr, res, SearchServerServlet.RESPONSE_JSON);
- pr.close();
+ Results res = ss.search("release:\"Our Glorious 5 Year Plan\"", 0, 10);
+ ResultsWriter writer = ss.getMmd2Writer();
+ StringWriter sw = new StringWriter();
+ PrintWriter pr = new PrintWriter(sw);
+ writer.write(pr, res, SearchServerServlet.RESPONSE_JSON);
+ pr.close();
- String output = sw.toString();
- System.out.println("Json is" + output);
+ String output = sw.toString();
+ System.out.println("Json is" + output);
- assertTrue(output.contains("id\":\"1d9e8ed6-3893-4d3b-aa7d-6cd79609e386\""));
- assertTrue(output.contains("\"count\":1"));
- assertTrue(output.contains("\"offset\":0,"));
- assertTrue(output.contains("\"type\":\"Compilation\""));
- assertTrue(output.contains("title\":\"Our Glorious 5 Year Plan\""));
- assertTrue(output.contains("\"status\":\"Official\""));
- assertTrue(output.contains("\"language\":\"eng\""));
- assertTrue(output.contains("\"script\":\"Latn\""));
- assertTrue(output.contains("\"barcode\":\"07599273202\""));
- assertTrue(output.contains("\"asin\":\"B00004Y6O9\""));
- assertTrue(output.contains("\"track-count\":17"));
- assertTrue(output.contains("\"secondary-type-list\":{\"secondary-type\":[\"Live\",\"Compilation\"]}}"));
+ assertTrue(output.contains("id\":\"1d9e8ed6-3893-4d3b-aa7d-6cd79609e386\""));
+ assertTrue(output.contains("\"count\":1"));
+ assertTrue(output.contains("\"offset\":0,"));
+ assertTrue(output.contains("\"type\":\"Compilation\""));
+ assertTrue(output.contains("title\":\"Our Glorious 5 Year Plan\""));
+ assertTrue(output.contains("\"status\":\"Official\""));
+ assertTrue(output.contains("\"language\":\"eng\""));
+ assertTrue(output.contains("\"script\":\"Latn\""));
+ assertTrue(output.contains("\"barcode\":\"07599273202\""));
+ assertTrue(output.contains("\"asin\":\"B00004Y6O9\""));
+ assertTrue(output.contains("\"track-count\":17"));
+ assertTrue(output.contains("\"secondary-type-list\":{\"secondary-type\":[\"Live\",\"Compilation\"]}}"));
- }
+ }
- @Test
- public void testOutputJsonNew() throws Exception {
+ @Test
+ public void testOutputJsonNew() throws Exception {
- Results res = ss.search("release:\"Our Glorious 5 Year Plan\"", 0, 10);
- ResultsWriter writer = ss.getMmd2Writer();
- StringWriter sw = new StringWriter();
- PrintWriter pr = new PrintWriter(sw);
- writer.write(pr, res, SearchServerServlet.RESPONSE_JSON_NEW);
- pr.close();
+ Results res = ss.search("release:\"Our Glorious 5 Year Plan\"", 0, 10);
+ ResultsWriter writer = ss.getMmd2Writer();
+ StringWriter sw = new StringWriter();
+ PrintWriter pr = new PrintWriter(sw);
+ writer.write(pr, res, SearchServerServlet.RESPONSE_JSON_NEW);
+ pr.close();
- String output = sw.toString();
- System.out.println("Json New is" + output);
+ String output = sw.toString();
+ System.out.println("Json New is" + output);
- assertTrue(output.contains("id\":\"1d9e8ed6-3893-4d3b-aa7d-6cd79609e386\""));
- assertTrue(output.contains("title\":\"Our Glorious 5 Year Plan\""));
- assertTrue(output.contains("\"status\":\"Official\""));
- assertTrue(output.contains("\"language\":\"eng\""));
- assertTrue(output.contains("\"script\":\"Latn\""));
- assertTrue(output.contains("\"barcode\":\"07599273202\""));
- assertTrue(output.contains("\"asin\":\"B00004Y6O9\""));
- assertTrue(output.contains("\"secondary-types\":[\"Live\",\"Compilation\"]"));
- assertTrue(output.contains("\"count\":1"));
- assertTrue(output.contains("\"offset\":0,"));
- assertTrue(output.contains("\"track-count\":17"));
- assertTrue(output.contains("\"media\""));
- assertTrue(output.contains("\"disc-count\":1"));
- assertTrue(output.contains("\"track-count\":7"));
- assertTrue(output.contains("\"label-info\""));
- assertTrue(output.contains("\"catalog-number\":\"WRATHCD-25\""));
- assertTrue(output.contains("\"primary-type\":\"Album\""));
- assertTrue(output.contains(""));
- }
+ assertTrue(output.contains("id\":\"1d9e8ed6-3893-4d3b-aa7d-6cd79609e386\""));
+ assertTrue(output.contains("title\":\"Our Glorious 5 Year Plan\""));
+ assertTrue(output.contains("\"status\":\"Official\""));
+ assertTrue(output.contains("\"language\":\"eng\""));
+ assertTrue(output.contains("\"script\":\"Latn\""));
+ assertTrue(output.contains("\"barcode\":\"07599273202\""));
+ assertTrue(output.contains("\"asin\":\"B00004Y6O9\""));
+ assertTrue(output.contains("\"secondary-types\":[\"Live\",\"Compilation\"]"));
+ assertTrue(output.contains("\"count\":1"));
+ assertTrue(output.contains("\"offset\":0,"));
+ assertTrue(output.contains("\"track-count\":17"));
+ assertTrue(output.contains("\"media\""));
+ assertTrue(output.contains("\"disc-count\":1"));
+ assertTrue(output.contains("\"track-count\":7"));
+ assertTrue(output.contains("\"label-info\""));
+ assertTrue(output.contains("\"catalog-number\":\"WRATHCD-25\""));
+ assertTrue(output.contains("\"primary-type\":\"Album\""));
+ assertTrue(output.contains(""));
+ }
- @Test
- public void testOutputJsonNewPretty() throws Exception {
+ @Test
+ public void testOutputJsonNewPretty() throws Exception {
- Results res = ss.search("release:\"Our Glorious 5 Year Plan\"", 0, 10);
- ResultsWriter writer = ss.getMmd2Writer();
- StringWriter sw = new StringWriter();
- PrintWriter pr = new PrintWriter(sw);
- writer.write(pr, res, SearchServerServlet.RESPONSE_JSON_NEW, true);
- pr.close();
+ Results res = ss.search("release:\"Our Glorious 5 Year Plan\"", 0, 10);
+ ResultsWriter writer = ss.getMmd2Writer();
+ StringWriter sw = new StringWriter();
+ PrintWriter pr = new PrintWriter(sw);
+ writer.write(pr, res, SearchServerServlet.RESPONSE_JSON_NEW, true);
+ pr.close();
- String output = sw.toString();
- System.out.println("Json New Pretty is" + output);
- assertTrue(output.contains("\"count\" : 1"));
- }
+ String output = sw.toString();
+ System.out.println("Json New Pretty is" + output);
+ assertTrue(output.contains("\"count\" : 1"));
+ }
- @Test
- public void testFindReleaseByTag() throws Exception {
+ @Test
+ public void testFindReleaseByTag() throws Exception {
Results res = ss.search("tag:punk", 0, 10);
assertEquals(1, res.getTotalHits());
- Result result = res.results.get(0);
- MbDocument doc = result.getDoc();
- assertEquals("1d9e8ed6-3893-4d3b-aa7d-6cd79609e386", doc.get(ReleaseIndexField.RELEASE_ID));
- assertEquals("punk", doc.get(ReleaseIndexField.TAG));
- assertEquals("10", doc.get(ReleaseIndexField.TAGCOUNT));
+ assertEquals("1d9e8ed6-3893-4d3b-aa7d-6cd79609e386", getReleaseId(res.results.get(0).getDoc()));
- }
+ }
}
\ No newline at end of file