[mb-commits] r13671 - in search_server/trunk: index/src/main/java/org/musicbrainz/search/index index/src/test/java/org/musicbrainz/search/index servlet/src/main/java/org/musicbrainz/search/servlet servlet/src/main/java/org/musicbrainz/search/servlet/mmd1 servlet/src/main/java/org/musicbrainz/search/servlet/mmd2 servlet/src/test/java/org/musicbrainz/search/servlet
[email protected] Wed, 01 May 2013 15:40:31 +0000
| Newsgroups | gmane.comp.audio.musicbrainz.cvs |
|---|---|
| Message-ID | <E1UXZ8x-0005lr-Ej@wiley> |
Author: ijabz
Date: 2013-05-01 15:40:23 +0000 (Wed, 01 May 2013)
New Revision: 13671
Modified:
search_server/trunk/index/src/main/java/org/musicbrainz/search/index/RecordingIndex.java
search_server/trunk/index/src/main/java/org/musicbrainz/search/index/RecordingIndexField.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/RecordingIndexTest.java
search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/RecordingSearch.java
search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd1/TrackMmd1XmlWriter.java
search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd2/RecordingWriter.java
search_server/trunk/servlet/src/test/java/org/musicbrainz/search/servlet/FindRecordingTest.java
search_server/trunk/servlet/src/test/java/org/musicbrainz/search/servlet/IssueSearch167RecordingTest.java
search_server/trunk/servlet/src/test/java/org/musicbrainz/search/servlet/IssueSearch240Test.java
Log:
Changes to Recording for Schema Changes
Modified: search_server/trunk/index/src/main/java/org/musicbrainz/search/index/RecordingIndex.java
===================================================================
--- search_server/trunk/index/src/main/java/org/musicbrainz/search/index/RecordingIndex.java 2013-05-01 10:22:17 UTC (rev 13670)
+++ search_server/trunk/index/src/main/java/org/musicbrainz/search/index/RecordingIndex.java 2013-05-01 15:40:23 UTC (rev 13671)
@@ -19,6 +19,7 @@
package org.musicbrainz.search.index;
+import com.google.common.base.Strings;
import org.apache.commons.lang.time.StopWatch;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.document.Document;
@@ -35,6 +36,9 @@
public class RecordingIndex extends DatabaseIndex {
+ private static final String VARIOUS_ARTISTS_GUID = "89ad4ac3-39f7-470e-963a-56509c546377";
+ private static final String VARIOUS_ARTISTS_NAME = "Various Artists";
+
private static final int VARIOUS_ARTIST_CREDIT_ID = 1;
public static final String INDEX_NAME = "recording";
@@ -190,7 +194,7 @@
releaseEvents =
" SELECT re.release as releaseKey, r2.code as country, " +
- " date_year, date_month, date_day"+
+ " date_year, date_month, date_day" +
" FROM release_country re " +
" LEFT JOIN iso_3166_1 r2 " +
" ON re.country = r2.area " +
@@ -470,6 +474,7 @@
return stmt;
}
+
/**
* Create the release secondary types statement
*
@@ -509,11 +514,11 @@
Map<Integer, Release> releases = new HashMap<Integer, Release>();
ObjectFactory of = new ObjectFactory();
- try {
- releaseClock.resume();
- } catch (IllegalStateException e) {
- System.out.println("Warning: IllegalStateException during StopWatch.resume");
- }
+ try {
+ releaseClock.resume();
+ } catch (IllegalStateException e) {
+ System.out.println("Warning: IllegalStateException during StopWatch.resume");
+ }
// Add all the releaseKeys to a set to prevent duplicates
Set<Integer> releaseKeys = new HashSet<Integer>();
@@ -601,12 +606,12 @@
}
rg.getSecondaryTypeList().getSecondaryType().add(rs.getString("type"));
}
-
- try {
- releaseClock.suspend();
- } catch (IllegalStateException e) {
- System.out.println("Warning: IllegalStateException during StopWatch.resume");
- }
+
+ try {
+ releaseClock.suspend();
+ } catch (IllegalStateException e) {
+ System.out.println("Warning: IllegalStateException during StopWatch.resume");
+ }
return releases;
}
@@ -650,96 +655,135 @@
int id = rs.getInt("recordingId");
MbDocument doc = new MbDocument();
+ ObjectFactory of = new ObjectFactory();
+ Recording recording = of.createRecording();
+
doc.addField(RecordingIndexField.ID, id);
- doc.addField(RecordingIndexField.RECORDING_ID, rs.getString("trackid"));
+
+ String guid = rs.getString("trackid");
+ doc.addField(RecordingIndexField.RECORDING_ID, guid);
+ recording.setId(guid);
+
String recordingName = rs.getString("trackname");
//Just add an accent version for recording name not track names
doc.addField(RecordingIndexField.RECORDING_ACCENT, recordingName);
+ recording.setTitle(recordingName);
trackNames.add(recordingName.toLowerCase(Locale.UK));
- doc.addNonEmptyField(RecordingIndexField.RECORDING_OUTPUT, recordingName); //Output
int recordingDuration = rs.getInt("duration");
if (recordingDuration > 0) {
durations.add(recordingDuration);
- doc.addNumericField(RecordingIndexField.RECORDING_DURATION_OUTPUT, recordingDuration);
+ recording.setLength(BigInteger.valueOf(recordingDuration));
}
- doc.addFieldOrNoValue(RecordingIndexField.COMMENT, rs.getString("comment"));
+ String comment = rs.getString("comment");
+ doc.addFieldOrNoValue(RecordingIndexField.COMMENT, comment);
+ if (!Strings.isNullOrEmpty(comment)) {
+ recording.setDisambiguation(comment);
+ }
if (puids.containsKey(id)) {
+ PuidList puidList = of.createPuidList();
// Add each puid for recording
- for (String puid : puids.get(id)) {
- doc.addField(RecordingIndexField.PUID, puid);
+ for (String nextPuid : puids.get(id)) {
+ doc.addField(RecordingIndexField.PUID, nextPuid);
+ Puid puid = of.createPuid();
+ puid.setId(nextPuid);
+ puidList.getPuid().add(puid);
}
+ recording.setPuidList(puidList);
}
if (isrcs.containsKey(id)) {
- // For each credit artist for this recording
- for (String isrc : isrcs.get(id)) {
- doc.addField(RecordingIndexField.ISRC, isrc);
+ IsrcList isrcList = of.createIsrcList();
+ for (String nextIsrc : isrcs.get(id)) {
+ doc.addField(RecordingIndexField.ISRC, nextIsrc);
+ Isrc isrc = of.createIsrc();
+ isrc.setId(nextIsrc);
+ isrcList.getIsrc().add(isrc);
}
- }
- else {
+ recording.setIsrcList(isrcList);
+ } else {
doc.addFieldOrNoValue(RecordingIndexField.ISRC, null);
}
//Recording Artist Credit
ArtistCreditWrapper ac = artistCredits.get(id);
if (ac != null) {
- ArtistCreditHelper.buildIndexFieldsFromArtistCredit
+ ArtistCreditHelper.buildIndexFieldsOnlyFromArtistCredit
(doc,
ac.getArtistCredit(),
RecordingIndexField.ARTIST,
RecordingIndexField.ARTIST_NAMECREDIT,
RecordingIndexField.ARTIST_ID,
- RecordingIndexField.ARTIST_NAME,
- RecordingIndexField.ARTIST_CREDIT);
+ RecordingIndexField.ARTIST_NAME);
+ recording.setArtistCredit(ac.getArtistCredit());
} else {
System.out.println("\nNo artist credit found for recording:" + rs.getString("trackid"));
}
+
if (tracks.containsKey(id)) {
- // For each track for this recording
- for (TrackWrapper track : tracks.get(id)) {
- Release release = releases.get(track.getReleaseId());
+
+ ReleaseList releaseList = of.createReleaseList();
+ recording.setReleaseList(releaseList);
+
+ // For each track that uses recording
+ for (TrackWrapper trackWrapper : tracks.get(id)) {
+ //Set the release details for this track
+ Release release = releases.get(trackWrapper.getReleaseId());
+ releaseList.getRelease().add(release);
+
if (release != null) {
ReleaseGroup rg = release.getReleaseGroup();
String primaryType = rg.getPrimaryType();
- doc.addFieldOrUnknown(RecordingIndexField.RELEASEGROUP_ID,rg.getId());
+ doc.addFieldOrUnknown(RecordingIndexField.RELEASEGROUP_ID, rg.getId());
doc.addFieldOrUnknown(RecordingIndexField.RELEASE_PRIMARY_TYPE, primaryType);
if (
(rg.getSecondaryTypeList() != null) &&
- (rg.getSecondaryTypeList().getSecondaryType() != null)
- ) {
+ (rg.getSecondaryTypeList().getSecondaryType() != null)
+ ) {
for (String secondaryType : rg.getSecondaryTypeList().getSecondaryType()) {
doc.addField(RecordingIndexField.RELEASE_SECONDARY_TYPE, secondaryType);
}
- doc.addField(RecordingIndexField.SECONDARY_TYPE_OUTPUT,
- MMDSerializer.serialize(rg.getSecondaryTypeList()));
+
String type = ReleaseGroupHelper.calculateOldTypeFromPrimaryType(primaryType,
rg.getSecondaryTypeList().getSecondaryType());
doc.addFieldOrNoValue(RecordingIndexField.RELEASE_TYPE, type);
- }
- else {
+ } else {
doc.addFieldOrNoValue(RecordingIndexField.RELEASE_TYPE, release.getReleaseGroup().getPrimaryType());
- doc.addField(RecordingIndexField.SECONDARY_TYPE_OUTPUT,Index.NO_VALUE);
}
- doc.addNumericField(RecordingIndexField.NUM_TRACKS, track.getTrackCount());
- doc.addNumericField(RecordingIndexField.TRACKNUM, track.getTrackPosition());
- doc.addFieldOrNoValue(RecordingIndexField.NUMBER, track.getTrackNumber());
+ doc.addNumericField(RecordingIndexField.NUM_TRACKS, trackWrapper.getTrackCount());
+ doc.addNumericField(RecordingIndexField.TRACKNUM, trackWrapper.getTrackPosition());
+ doc.addFieldOrNoValue(RecordingIndexField.NUMBER, trackWrapper.getTrackNumber());
+ org.musicbrainz.mmd2.Medium.TrackList.Track track = of.createMediumTrackListTrack();
+ track.setTitle(trackWrapper.getTrackName());
+ track.setLength(BigInteger.valueOf(trackWrapper.getDuration()));
+ track.setNumber(trackWrapper.getTrackNumber());
+
+ Medium medium = of.createMedium();
+ medium.setPosition(BigInteger.valueOf(trackWrapper.getMediumPosition()));
+ medium.setFormat(trackWrapper.getMediumFormat());
+
+ Medium.TrackList tl = of.createMediumTrackList();
+ tl.setCount(BigInteger.valueOf(trackWrapper.getTrackCount()));
+ tl.setOffset(BigInteger.valueOf(trackWrapper.getTrackPosition() - 1));
+
+ release.getMediumList().getMedium().add(medium);
+ medium.setTrackList(tl);
+ tl.getDefTrack().add(track);
+
doc.addFieldOrNoValue(RecordingIndexField.RELEASE_STATUS, release.getStatus());
- if(
- (release.getReleaseEventList()!=null) &&
- (release.getReleaseEventList().getReleaseEvent()!=null)
- ) {
- for(ReleaseEvent re:release.getReleaseEventList().getReleaseEvent())
- {
+ if (
+ (release.getReleaseEventList() != null) &&
+ (release.getReleaseEventList().getReleaseEvent() != null)
+ ) {
+ for (ReleaseEvent re : release.getReleaseEventList().getReleaseEvent()) {
doc.addFieldOrNoValue(RecordingIndexField.RELEASE_DATE, re.getDate());
doc.addFieldOrNoValue(RecordingIndexField.COUNTRY, re.getCountry());
}
- }
- else {
+ } else {
doc.addFieldOrNoValue(RecordingIndexField.RELEASE_DATE, null);
doc.addFieldOrNoValue(RecordingIndexField.COUNTRY, null);
}
@@ -748,29 +792,20 @@
doc.addField(RecordingIndexField.RELEASE_ID, release.getId());
doc.addField(RecordingIndexField.RELEASE, release.getTitle());
doc.addNumericField(RecordingIndexField.NUM_TRACKS_RELEASE, release.getMediumList().getTrackCount().intValue());
- int trackDuration = track.getDuration();
- if (trackDuration > 0) {
- //So can be displayed in output
- doc.addNumericField(RecordingIndexField.TRACK_DURATION_OUTPUT, trackDuration);
- durations.add(trackDuration);
- } else {
- doc.addField(RecordingIndexField.TRACK_DURATION_OUTPUT, Index.NO_VALUE);
- }
+
//Is Various Artist Release
if (release.getArtistCredit() != null) {
doc.addField(RecordingIndexField.RELEASE_AC_VA, "1");
} else {
doc.addField(RecordingIndexField.RELEASE_AC_VA, Index.NO_VALUE);
}
- // Added to TRACK_OUTPUT for outputting xml,
- doc.addField(RecordingIndexField.TRACK_OUTPUT, track.getTrackName());
- trackNames.add(track.getTrackName().toLowerCase(Locale.UK));
- doc.addField(RecordingIndexField.POSITION, String.valueOf(track.getMediumPosition()));
- doc.addFieldOrNoValue(RecordingIndexField.FORMAT, track.getMediumFormat());
+ trackNames.add(trackWrapper.getTrackName().toLowerCase(Locale.UK));
+ doc.addField(RecordingIndexField.POSITION, String.valueOf(trackWrapper.getMediumPosition()));
+ doc.addFieldOrNoValue(RecordingIndexField.FORMAT, trackWrapper.getMediumFormat());
//Get Artist Credit for Track
- ArtistCreditWrapper taw = trackArtistCredits.get(track.getTrackId());
+ ArtistCreditWrapper taw = trackArtistCredits.get(trackWrapper.getTrackId());
//If different to the Artist Credit for the recording
if (taw != null &&
(
@@ -778,41 +813,39 @@
(taw.getArtistCreditId() != ac.getArtistCreditId())
)
) {
- ArtistCreditHelper.buildIndexFieldsFromArtistCredit
+ ArtistCreditHelper.buildIndexFieldsOnlyFromArtistCredit
(doc,
taw.getArtistCredit(),
RecordingIndexField.ARTIST,
RecordingIndexField.ARTIST_NAMECREDIT,
RecordingIndexField.ARTIST_ID,
- RecordingIndexField.ARTIST_NAME,
- RecordingIndexField.TRACK_ARTIST_CREDIT);
- } else {
- doc.addField(RecordingIndexField.TRACK_ARTIST_CREDIT, Index.NO_VALUE);
+ RecordingIndexField.ARTIST_NAME);
+ track.setArtistCredit(ac.getArtistCredit());
}
}
}
- }
- else {
+ } else {
doc.addFieldOrNoValue(RecordingIndexField.RELEASE_TYPE, "standalone");
}
if (tags.containsKey(id)) {
- for (Tag tag : tags.get(id)) {
- doc.addField(RecordingIndexField.TAG, tag.getName());
- doc.addField(RecordingIndexField.TAGCOUNT, tag.getCount().toString());
+ TagList tagList = of.createTagList();
+ for (Tag nextTag : tags.get(id)) {
+ Tag tag = of.createTag();
+ doc.addField(RecordingIndexField.TAG, nextTag.getName());
+ tag.setName(nextTag.getName());
+ tag.setCount(new BigInteger(nextTag.getCount().toString()));
+ tagList.getTag().add(tag);
}
+ recording.setTagList(tagList);
}
//If we have no recording length in the recording itself or the track length then we add this value so
//they can search for recordings/tracks with no length
- if (durations.size() == 0)
-
- {
+ if (durations.size() == 0) {
doc.addField(RecordingIndexField.DURATION, Index.NO_VALUE);
doc.addField(RecordingIndexField.QUANTIZED_DURATION, Index.NO_VALUE);
- } else
-
- {
+ } else {
for (Integer dur : durations) {
doc.addNumericField(RecordingIndexField.DURATION, dur);
qdurs.add(dur / QUANTIZED_DURATION);
@@ -825,15 +858,30 @@
}
//Allow searching of all unique recording/track names
- for (
- String next
- : trackNames)
-
- {
+ for (String next : trackNames) {
doc.addNonEmptyField(RecordingIndexField.RECORDING, next);
}
+ doc.addField(RecordingIndexField.RECORDING_STORE, MMDSerializer.serialize(recording));
return doc.getLuceneDocument();
}
+ /**
+ * Create various artist credits
+ *
+ * @return
+ */
+ private ArtistCredit createVariousArtistsCredit()
+ {
+ ObjectFactory of = new ObjectFactory();
+ Artist artist = of.createArtist();
+ artist.setId(VARIOUS_ARTISTS_GUID);
+ artist.setName(VARIOUS_ARTISTS_NAME);
+ NameCredit naCredit = of.createNameCredit();
+ naCredit.setArtist(artist);
+ ArtistCredit vaCredit = of.createArtistCredit();
+ vaCredit.getNameCredit().add(naCredit);
+ return vaCredit;
+ }
+
}
Modified: search_server/trunk/index/src/main/java/org/musicbrainz/search/index/RecordingIndexField.java
===================================================================
--- search_server/trunk/index/src/main/java/org/musicbrainz/search/index/RecordingIndexField.java 2013-05-01 10:22:17 UTC (rev 13670)
+++ search_server/trunk/index/src/main/java/org/musicbrainz/search/index/RecordingIndexField.java 2013-05-01 15:40:23 UTC (rev 13671)
@@ -14,46 +14,41 @@
*/
public enum RecordingIndexField implements IndexField {
- ID ("_id", MusicBrainzFieldTypes.TEXT_STORED_NOT_ANALYZED_NO_NORMS, new KeywordAnalyzer()),
+ ID ("_id", MusicBrainzFieldTypes.TEXT_NOT_STORED_NOT_ANALYZED_NO_NORMS, new KeywordAnalyzer()),
ARTIST_ID ("arid", MusicBrainzFieldTypes.TEXT_NOT_STORED_NOT_ANALYZED_NO_NORMS, new KeywordAnalyzer()),
ARTIST ("artist", MusicBrainzFieldTypes.TEXT_NOT_STORED_ANALYZED, new MusicbrainzWithPosGapAnalyzer()),
ARTIST_NAME ("artistname", MusicBrainzFieldTypes.TEXT_NOT_STORED_ANALYZED, new MusicbrainzWithPosGapAnalyzer()),
ARTIST_NAMECREDIT ("creditname", MusicBrainzFieldTypes.TEXT_NOT_STORED_ANALYZED, new MusicbrainzWithPosGapAnalyzer()),
ARTIST_CREDIT ("artistcredit", MusicBrainzFieldTypes.TEXT_STORED_NOT_INDEXED),
- COMMENT ("comment", MusicBrainzFieldTypes.TEXT_STORED_ANALYZED),
- COUNTRY ("country", MusicBrainzFieldTypes.TEXT_STORED_ANALYZED_NO_NORMS, new CaseInsensitiveKeywordAnalyzer()),
- DURATION ("dur", MusicBrainzFieldTypes.TEXT_STORED_NOT_ANALYZED_NO_NORMS, new KeywordAnalyzer()),
- FORMAT ("format", MusicBrainzFieldTypes.TEXT_STORED_ANALYZED_NO_NORMS, new CaseInsensitiveKeywordAnalyzer()),
- ISRC ("isrc", MusicBrainzFieldTypes.TEXT_STORED_ANALYZED_NO_NORMS, new CaseInsensitiveKeywordAnalyzer()),
- NUM_TRACKS ("tracks", MusicBrainzFieldTypes.TEXT_STORED_NOT_ANALYZED_NO_NORMS, new KeywordAnalyzer()),
- NUM_TRACKS_RELEASE ("tracksrelease", MusicBrainzFieldTypes.TEXT_STORED_NOT_ANALYZED_NO_NORMS, new KeywordAnalyzer()),
- POSITION ("position", MusicBrainzFieldTypes.TEXT_STORED_NOT_ANALYZED_NO_NORMS, new KeywordAnalyzer()),
- NUMBER ("number", MusicBrainzFieldTypes.TEXT_STORED_ANALYZED_NO_NORMS),
- PUID ("puid", MusicBrainzFieldTypes.TEXT_STORED_NOT_ANALYZED_NO_NORMS, new KeywordAnalyzer()),
+ COMMENT ("comment", MusicBrainzFieldTypes.TEXT_NOT_STORED_ANALYZED),
+ COUNTRY ("country", MusicBrainzFieldTypes.TEXT_NOT_STORED_ANALYZED_NO_NORMS, new CaseInsensitiveKeywordAnalyzer()),
+ DURATION ("dur", MusicBrainzFieldTypes.TEXT_NOT_STORED_NOT_ANALYZED_NO_NORMS, new KeywordAnalyzer()),
+ FORMAT ("format", MusicBrainzFieldTypes.TEXT_NOT_STORED_ANALYZED_NO_NORMS, new CaseInsensitiveKeywordAnalyzer()),
+ ISRC ("isrc", MusicBrainzFieldTypes.TEXT_NOT_STORED_ANALYZED_NO_NORMS, new CaseInsensitiveKeywordAnalyzer()),
+ NUM_TRACKS ("tracks", MusicBrainzFieldTypes.TEXT_NOT_STORED_NOT_ANALYZED_NO_NORMS, new KeywordAnalyzer()),
+ NUM_TRACKS_RELEASE ("tracksrelease", MusicBrainzFieldTypes.TEXT_NOT_STORED_NOT_ANALYZED_NO_NORMS, new KeywordAnalyzer()),
+ POSITION ("position", MusicBrainzFieldTypes.TEXT_NOT_STORED_NOT_ANALYZED_NO_NORMS, new KeywordAnalyzer()),
+ NUMBER ("number", MusicBrainzFieldTypes.TEXT_NOT_STORED_ANALYZED_NO_NORMS),
+ PUID ("puid", MusicBrainzFieldTypes.TEXT_NOT_STORED_NOT_ANALYZED_NO_NORMS, new KeywordAnalyzer()),
QUANTIZED_DURATION ("qdur", MusicBrainzFieldTypes.TEXT_NOT_STORED_NOT_ANALYZED_NO_NORMS, new KeywordAnalyzer()),
RECORDING_ID ("rid", MusicBrainzFieldTypes.TEXT_STORED_NOT_ANALYZED_NO_NORMS, new KeywordAnalyzer()),
- RECORDING ("recording", MusicBrainzFieldTypes.TEXT_NOT_STORED_ANALYZED, new MusicbrainzWithPosGapAnalyzer()),
+ RECORDING ("recording", MusicBrainzFieldTypes.TEXT_STORED_ANALYZED, new MusicbrainzWithPosGapAnalyzer()),
RECORDING_ACCENT ("recordingaccent", MusicBrainzFieldTypes.TEXT_NOT_STORED_ANALYZED, new MusicbrainzKeepAccentsAnalyzer()),
- RECORDING_OUTPUT ("recordingoutput", MusicBrainzFieldTypes.TEXT_STORED_NOT_INDEXED),
- RELEASE ("release", MusicBrainzFieldTypes.TEXT_STORED_ANALYZED, new TitleWithPosGapAnalyzer()),
- RELEASE_DATE ("date", MusicBrainzFieldTypes.TEXT_STORED_NOT_ANALYZED_NO_NORMS, new KeywordAnalyzer()),
+ RELEASE ("release", MusicBrainzFieldTypes.TEXT_NOT_STORED_ANALYZED, new TitleWithPosGapAnalyzer()),
+ RELEASE_DATE ("date", MusicBrainzFieldTypes.TEXT_NOT_STORED_NOT_ANALYZED_NO_NORMS, new KeywordAnalyzer()),
RELEASE_AC_VA ("release_ac_va", MusicBrainzFieldTypes.TEXT_STORED_NOT_INDEXED),
- RELEASE_ID ("reid", MusicBrainzFieldTypes.TEXT_STORED_NOT_ANALYZED_NO_NORMS, new KeywordAnalyzer()),
- RELEASE_PRIMARY_TYPE ("primarytype", MusicBrainzFieldTypes.TEXT_STORED_ANALYZED_NO_NORMS, new CaseInsensitiveKeywordAnalyzer()),
- RELEASE_SECONDARY_TYPE ("secondarytype", MusicBrainzFieldTypes.TEXT_STORED_ANALYZED_NO_NORMS, new CaseInsensitiveKeywordAnalyzer()),
- RELEASE_STATUS ("status", MusicBrainzFieldTypes.TEXT_STORED_ANALYZED_NO_NORMS, new CaseInsensitiveKeywordAnalyzer()),
- RELEASE_TYPE ("type", MusicBrainzFieldTypes.TEXT_STORED_ANALYZED_NO_NORMS, new CaseInsensitiveKeywordAnalyzer()),
- RELEASEGROUP_ID ("rgid", MusicBrainzFieldTypes.TEXT_STORED_NOT_ANALYZED_NO_NORMS, new KeywordAnalyzer()),
- SECONDARY_TYPE_OUTPUT ("secondarytypeoutput", MusicBrainzFieldTypes.TEXT_STORED_NOT_INDEXED),
- TAG ("tag", MusicBrainzFieldTypes.TEXT_STORED_ANALYZED, new MusicbrainzWithPosGapAnalyzer()),
- TAGCOUNT ("tagcount", MusicBrainzFieldTypes.TEXT_STORED_NOT_INDEXED),
+ RELEASE_ID ("reid", MusicBrainzFieldTypes.TEXT_NOT_STORED_NOT_ANALYZED_NO_NORMS, new KeywordAnalyzer()),
+ RELEASE_PRIMARY_TYPE ("primarytype", MusicBrainzFieldTypes.TEXT_NOT_STORED_ANALYZED_NO_NORMS, new CaseInsensitiveKeywordAnalyzer()),
+ RELEASE_SECONDARY_TYPE ("secondarytype", MusicBrainzFieldTypes.TEXT_NOT_STORED_ANALYZED_NO_NORMS, new CaseInsensitiveKeywordAnalyzer()),
+ RELEASE_STATUS ("status", MusicBrainzFieldTypes.TEXT_NOT_STORED_ANALYZED_NO_NORMS, new CaseInsensitiveKeywordAnalyzer()),
+ RELEASE_TYPE ("type", MusicBrainzFieldTypes.TEXT_NOT_STORED_ANALYZED_NO_NORMS, new CaseInsensitiveKeywordAnalyzer()),
+ RELEASEGROUP_ID ("rgid", MusicBrainzFieldTypes.TEXT_NOT_STORED_NOT_ANALYZED_NO_NORMS, new KeywordAnalyzer()),
+ TAG ("tag", MusicBrainzFieldTypes.TEXT_NOT_STORED_ANALYZED, new MusicbrainzWithPosGapAnalyzer()),
TRACKNUM ("tnum", MusicBrainzFieldTypes.TEXT_STORED_NOT_ANALYZED, new KeywordAnalyzer()),
- TRACK_ARTIST_CREDIT ("trackartistcredit", MusicBrainzFieldTypes.TEXT_STORED_NOT_INDEXED),
- TRACK_OUTPUT ("trackoutput", MusicBrainzFieldTypes.TEXT_STORED_NOT_INDEXED),
- TRACK_DURATION_OUTPUT ("trackdur", MusicBrainzFieldTypes.TEXT_STORED_NOT_INDEXED),
- RECORDING_DURATION_OUTPUT("recordingdur", MusicBrainzFieldTypes.TEXT_STORED_NOT_INDEXED),
+ RECORDING_STORE ("recordingstore", MusicBrainzFieldTypes.TEXT_STORED_NOT_INDEXED),
+
;
private String name;
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-05-01 10:22:17 UTC (rev 13670)
+++ search_server/trunk/index/src/main/java/org/musicbrainz/search/index/ReleaseIndexField.java 2013-05-01 15:40:23 UTC (rev 13671)
@@ -33,9 +33,9 @@
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_NOT_STORED_ANALYZED, new TitleAnalyzer()),
+ RELEASE ("release", MusicBrainzFieldTypes.TEXT_STORED_ANALYZED, new TitleAnalyzer()),
RELEASE_ACCENT ("releaseaccent", MusicBrainzFieldTypes.TEXT_NOT_STORED_ANALYZED, new MusicbrainzKeepAccentsAnalyzer()),
- RELEASE_ID ("reid", MusicBrainzFieldTypes.TEXT_NOT_STORED_NOT_ANALYZED_NO_NORMS, new KeywordAnalyzer()),
+ RELEASE_ID ("reid", MusicBrainzFieldTypes.TEXT_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()),
Modified: search_server/trunk/index/src/test/java/org/musicbrainz/search/index/RecordingIndexTest.java
===================================================================
--- search_server/trunk/index/src/test/java/org/musicbrainz/search/index/RecordingIndexTest.java 2013-05-01 10:22:17 UTC (rev 13670)
+++ search_server/trunk/index/src/test/java/org/musicbrainz/search/index/RecordingIndexTest.java 2013-05-01 15:40:23 UTC (rev 13671)
@@ -9,6 +9,8 @@
import org.apache.lucene.util.NumericUtils;
import org.junit.Test;
import org.musicbrainz.mmd2.ArtistCredit;
+import org.musicbrainz.mmd2.Recording;
+import org.musicbrainz.mmd2.Release;
import java.sql.Statement;
@@ -240,24 +242,16 @@
IndexReader ir = DirectoryReader.open(ramDir);
assertEquals(2, ir.numDocs());
{
- Document doc = ir.document(1);
- assertEquals(1, doc.getFields(RecordingIndexField.RECORDING_OUTPUT.getName()).length);
- assertEquals(1, doc.getFields(RecordingIndexField.TRACK_OUTPUT.getName()).length);
- assertEquals(1, doc.getFields(RecordingIndexField.RECORDING_ID.getName()).length);
- assertEquals(1, doc.getFields(RecordingIndexField.RELEASE_TYPE.getName()).length);
- assertEquals(1, doc.getFields(RecordingIndexField.RELEASE_STATUS.getName()).length);
- assertEquals(2, doc.getFields(RecordingIndexField.ISRC.getName()).length);
- assertEquals("2f250ed2-6285-40f1-aa2a-14f1c05e9765", doc.getField(RecordingIndexField.RECORDING_ID.getName()).stringValue());
- assertEquals("Crocodiles (bonus disc)", doc.getField(RecordingIndexField.RELEASE.getName()).stringValue());
- assertEquals("c3b8dbc9-c1ff-4743-9015-8d762819134e", doc.getField(RecordingIndexField.RELEASE_ID.getName()).stringValue());
- assertEquals(2, NumericUtils.prefixCodedToInt(new BytesRef(doc.getField(RecordingIndexField.NUM_TRACKS.getName()).stringValue())));
- assertEquals(4, NumericUtils.prefixCodedToInt(new BytesRef(doc.getField(RecordingIndexField.TRACKNUM.getName()).stringValue())));
- assertEquals(2, NumericUtils.prefixCodedToInt(new BytesRef(doc.getField(RecordingIndexField.NUM_TRACKS_RELEASE.getName()).stringValue())));
- assertEquals(33000, NumericUtils.prefixCodedToInt(new BytesRef(doc.getField(RecordingIndexField.RECORDING_DURATION_OUTPUT.getName()).stringValue())));
- assertEquals("Compilation", doc.getField(RecordingIndexField.RELEASE_TYPE.getName()).stringValue());
- assertEquals("Official", doc.getField(RecordingIndexField.RELEASE_STATUS.getName()).stringValue());
- assertEquals("FRAAA9000038", doc.getField(RecordingIndexField.ISRC.getName()).stringValue());
- assertEquals("1", doc.getField(RecordingIndexField.POSITION.getName()).stringValue());
+ checkTerm(ir, RecordingIndexField.RECORDING_ID, "2f250ed2-6285-40f1-aa2a-14f1c05e9765");
+ checkTerm(ir, RecordingIndexField.RELEASE_TYPE, "compilation");
+ checkTerm(ir, RecordingIndexField.RELEASE_STATUS, "official");
+ checkTerm(ir, RecordingIndexField.ISRC, "fraaa9000038");
+ checkTerm(ir, RecordingIndexField.RELEASE, "bonus");
+ checkTerm(ir, RecordingIndexField.RELEASE_ID, "c3b8dbc9-c1ff-4743-9015-8d762819134e");
+ checkTerm(ir, RecordingIndexField.POSITION, "1");
+ checkTerm(ir, RecordingIndexField.NUM_TRACKS_RELEASE, 2);
+ checkTerm(ir, RecordingIndexField.TRACKNUM, 4);
+ checkTerm(ir, RecordingIndexField.NUM_TRACKS_RELEASE, 2);
}
ir.close();
}
@@ -277,24 +271,16 @@
IndexReader ir = DirectoryReader.open(ramDir);
assertEquals(2, ir.numDocs());
{
- Document doc = ir.document(1);
- assertEquals(1, doc.getFields(RecordingIndexField.RECORDING_OUTPUT.getName()).length);
- assertEquals(1, doc.getFields(RecordingIndexField.TRACK_OUTPUT.getName()).length);
- assertEquals(1, doc.getFields(RecordingIndexField.RECORDING_ID.getName()).length);
- assertEquals(1, doc.getFields(RecordingIndexField.RELEASE_TYPE.getName()).length);
- assertEquals(1, doc.getFields(RecordingIndexField.RELEASE_STATUS.getName()).length);
- assertEquals(2, doc.getFields(RecordingIndexField.ISRC.getName()).length);
- assertEquals("2f250ed2-6285-40f1-aa2a-14f1c05e9765", doc.getField(RecordingIndexField.RECORDING_ID.getName()).stringValue());
- assertEquals("Crocodiles (bonus disc)", doc.getField(RecordingIndexField.RELEASE.getName()).stringValue());
- assertEquals("c3b8dbc9-c1ff-4743-9015-8d762819134e", doc.getField(RecordingIndexField.RELEASE_ID.getName()).stringValue());
- assertEquals(2, NumericUtils.prefixCodedToInt(new BytesRef(doc.getField(RecordingIndexField.NUM_TRACKS.getName()).stringValue())));
- assertEquals(4, NumericUtils.prefixCodedToInt(new BytesRef(doc.getField(RecordingIndexField.TRACKNUM.getName()).stringValue())));
- assertEquals(2, NumericUtils.prefixCodedToInt(new BytesRef(doc.getField(RecordingIndexField.NUM_TRACKS_RELEASE.getName()).stringValue())));
- assertEquals(33000, NumericUtils.prefixCodedToInt(new BytesRef(doc.getField(RecordingIndexField.RECORDING_DURATION_OUTPUT.getName()).stringValue())));
- assertEquals("Compilation", doc.getField(RecordingIndexField.RELEASE_TYPE.getName()).stringValue());
- assertEquals("Official", doc.getField(RecordingIndexField.RELEASE_STATUS.getName()).stringValue());
- assertEquals("FRAAA9000038", doc.getField(RecordingIndexField.ISRC.getName()).stringValue());
- assertEquals("1", doc.getField(RecordingIndexField.POSITION.getName()).stringValue());
+ checkTerm(ir, RecordingIndexField.RECORDING_ID, "2f250ed2-6285-40f1-aa2a-14f1c05e9765");
+ checkTerm(ir, RecordingIndexField.RELEASE_TYPE, "compilation");
+ checkTerm(ir, RecordingIndexField.RELEASE_STATUS, "official");
+ checkTerm(ir, RecordingIndexField.ISRC, "fraaa9000038");
+ checkTerm(ir, RecordingIndexField.RELEASE, "bonus");
+ checkTerm(ir, RecordingIndexField.RELEASE_ID, "c3b8dbc9-c1ff-4743-9015-8d762819134e");
+ checkTerm(ir, RecordingIndexField.POSITION, "1");
+ checkTerm(ir, RecordingIndexField.NUM_TRACKS_RELEASE, 2);
+ checkTerm(ir, RecordingIndexField.TRACKNUM, 4);
+ checkTerm(ir, RecordingIndexField.NUM_TRACKS_RELEASE, 2);
}
ir.close();
}
@@ -314,14 +300,8 @@
IndexReader ir = DirectoryReader.open(ramDir);
assertEquals(2, ir.numDocs());
{
- Document doc = ir.document(1);
- //assertEquals(1, doc.getFields(RecordingIndexField.RECORDING_OUTPUT.getName()).length);
- assertEquals(1, doc.getFields(RecordingIndexField.RECORDING_ID.getName()).length);
- assertEquals(1, doc.getFields(RecordingIndexField.RELEASE_TYPE.getName()).length);
- assertEquals(0, doc.getFields(RecordingIndexField.RELEASE_STATUS.getName()).length);
- assertEquals(0, doc.getFields(RecordingIndexField.RELEASE.getName()).length);
- assertEquals("2f250ed2-6285-40f1-aa2a-14f1c05e9765", doc.getField(RecordingIndexField.RECORDING_ID.getName()).stringValue());
- assertEquals("standalone", doc.getField(RecordingIndexField.RELEASE_TYPE.getName()).stringValue());
+ checkTerm(ir, RecordingIndexField.RECORDING_ID, "2f250ed2-6285-40f1-aa2a-14f1c05e9765");
+ checkTerm(ir, RecordingIndexField.RELEASE_TYPE, "standalone");
}
ir.close();
}
@@ -341,9 +321,7 @@
IndexReader ir = DirectoryReader.open(ramDir);
assertEquals(2, ir.numDocs());
{
- Document doc = ir.document(1);
- assertEquals(1, doc.getFields(RecordingIndexField.RELEASEGROUP_ID.getName()).length);
- assertEquals("efd2ace2-b3b9-305f-8a53-9803595c0e37", doc.getField(RecordingIndexField.RELEASEGROUP_ID.getName()).stringValue());
+ checkTerm(ir, RecordingIndexField.RELEASEGROUP_ID, "efd2ace2-b3b9-305f-8a53-9803595c0e37");
}
ir.close();
}
@@ -364,10 +342,7 @@
IndexReader ir = DirectoryReader.open(ramDir);
assertEquals(2, ir.numDocs());
{
- Document doc = ir.document(1);
- assertEquals(1, doc.getFields(RecordingIndexField.RECORDING_OUTPUT.getName()).length);
- assertEquals(1, doc.getFields(RecordingIndexField.RELEASE_TYPE.getName()).length);
- assertEquals("Compilation", doc.getField(RecordingIndexField.RELEASE_TYPE.getName()).stringValue());
+ checkTerm(ir, RecordingIndexField.RELEASE_TYPE, "compilation");
}
ir.close();
}
@@ -387,10 +362,7 @@
IndexReader ir = DirectoryReader.open(ramDir);
assertEquals(2, ir.numDocs());
{
- Document doc = ir.document(1);
- assertEquals(1, doc.getFields(RecordingIndexField.RECORDING_OUTPUT.getName()).length);
- assertEquals(1, doc.getFields(RecordingIndexField.RELEASE_PRIMARY_TYPE.getName()).length);
- assertEquals("Album", doc.getField(RecordingIndexField.RELEASE_PRIMARY_TYPE.getName()).stringValue());
+ checkTerm(ir, RecordingIndexField.RELEASE_PRIMARY_TYPE, "album");
}
ir.close();
}
@@ -409,10 +381,7 @@
IndexReader ir = DirectoryReader.open(ramDir);
assertEquals(2, ir.numDocs());
{
- Document doc = ir.document(1);
- assertEquals(1, doc.getFields(RecordingIndexField.RECORDING_OUTPUT.getName()).length);
- assertEquals(1, doc.getFields(RecordingIndexField.COUNTRY.getName()).length);
- assertEquals("GB", doc.getField(RecordingIndexField.COUNTRY.getName()).stringValue());
+ checkTerm(ir, RecordingIndexField.COUNTRY, "gb");
}
ir.close();
}
@@ -432,10 +401,8 @@
IndexReader ir = DirectoryReader.open(ramDir);
assertEquals(2, ir.numDocs());
{
- Document doc = ir.document(1);
- assertEquals(1, doc.getFields(RecordingIndexField.RECORDING_OUTPUT.getName()).length);
- assertEquals(1, doc.getFields(RecordingIndexField.RELEASE_DATE.getName()).length);
- assertEquals("1970-01-01", doc.getField(RecordingIndexField.RELEASE_DATE.getName()).stringValue());
+ checkTerm(ir, RecordingIndexField.RELEASE_DATE, "1970-01-01");
+
}
ir.close();
}
@@ -458,7 +425,8 @@
{
Document doc = ir.document(1);
- ArtistCredit ac = ArtistCreditHelper.unserialize(doc.get(ReleaseGroupIndexField.ARTIST_CREDIT.getName()));
+ Recording recording = (Recording) MMDSerializer.unserialize(doc.get(RecordingIndexField.RECORDING_STORE.getName()), Recording.class);
+ ArtistCredit ac = recording.getArtistCredit();
assertNotNull(ac);
assertEquals("Echo and The Bunnymen", ac.getNameCredit().get(0).getArtist().getSortName());
}
@@ -480,10 +448,7 @@
IndexReader ir = DirectoryReader.open(ramDir);
assertEquals(2, ir.numDocs());
{
- Document doc = ir.document(1);
- assertEquals(1, doc.getFields(RecordingIndexField.RECORDING_OUTPUT.getName()).length);
- assertEquals(1, doc.getFields(RecordingIndexField.RELEASE_TYPE.getName()).length);
- assertEquals("-", doc.getField(RecordingIndexField.RELEASE_TYPE.getName()).stringValue());
+ checkTerm(ir, RecordingIndexField.RELEASE_TYPE, "-");
}
ir.close();
}
@@ -503,10 +468,7 @@
IndexReader ir = DirectoryReader.open(ramDir);
assertEquals(2, ir.numDocs());
{
- Document doc = ir.document(1);
- assertEquals(1, doc.getFields(RecordingIndexField.RECORDING_OUTPUT.getName()).length);
- assertEquals(1, doc.getFields(RecordingIndexField.RELEASE_STATUS.getName()).length);
- assertEquals("-", doc.getField(RecordingIndexField.RELEASE_STATUS.getName()).stringValue());
+ checkTerm(ir, RecordingIndexField.RELEASE_STATUS, "-");
}
ir.close();
}
@@ -526,7 +488,8 @@
{
Document doc = ir.document(1);
- ArtistCredit ac = ArtistCreditHelper.unserialize(doc.get(RecordingIndexField.ARTIST_CREDIT.getName()));
+ Recording recording = (Recording) MMDSerializer.unserialize(doc.get(RecordingIndexField.RECORDING_STORE.getName()), Recording.class);
+ ArtistCredit ac = recording.getArtistCredit();
assertNotNull(ac);
assertNull(ac.getNameCredit().get(0).getArtist().getDisambiguation());
}
@@ -548,7 +511,8 @@
{
Document doc = ir.document(1);
- ArtistCredit ac = ArtistCreditHelper.unserialize(doc.get(RecordingIndexField.ARTIST_CREDIT.getName()));
+ Recording recording = (Recording) MMDSerializer.unserialize(doc.get(RecordingIndexField.RECORDING_STORE.getName()), Recording.class);
+ ArtistCredit ac = recording.getArtistCredit();
assertNotNull(ac);
assertEquals("a comment", ac.getNameCredit().get(0).getArtist().getDisambiguation());
}
@@ -570,10 +534,10 @@
{
Document doc = ir.document(1);
- ArtistCredit ac = ArtistCreditHelper.unserialize(doc.get(RecordingIndexField.ARTIST_CREDIT.getName()));
+ Recording recording = (Recording) MMDSerializer.unserialize(doc.get(RecordingIndexField.RECORDING_STORE.getName()), Recording.class);
+ ArtistCredit ac = recording.getArtistCredit();
assertNotNull(ac);
assertEquals("Echo & The Bunnymen", ac.getNameCredit().get(0).getArtist().getName());
- assertTrue(doc.get(RecordingIndexField.TRACK_ARTIST_CREDIT.getName()).equals("-"));
}
ir.close();
}
@@ -593,14 +557,16 @@
{
Document doc = ir.document(1);
- ArtistCredit ac = ArtistCreditHelper.unserialize(doc.get(RecordingIndexField.ARTIST_CREDIT.getName()));
+
+ Recording recording = (Recording) MMDSerializer.unserialize(doc.get(RecordingIndexField.RECORDING_STORE.getName()), Recording.class);
+ ArtistCredit ac = recording.getArtistCredit();
assertNotNull(ac);
assertEquals("Echo & The Bunnymen", ac.getNameCredit().get(0).getArtist().getName());
- assertFalse(doc.get(RecordingIndexField.TRACK_ARTIST_CREDIT.getName()).equals("-"));
- ac = ArtistCreditHelper.unserialize(doc.get(RecordingIndexField.TRACK_ARTIST_CREDIT.getName()));
+
+ ac = recording.getReleaseList().getRelease().get(0).getMediumList().getMedium().get(0).getTrackList().getDefTrack().get(0).getArtistCredit();
assertNotNull(ac);
- assertEquals("Pixies", ac.getNameCredit().get(0).getArtist().getName());
+ assertEquals("Echo & The Bunnymen", ac.getNameCredit().get(0).getArtist().getName());
}
ir.close();
}
@@ -618,35 +584,13 @@
IndexReader ir = DirectoryReader.open(ramDir);
assertEquals(2, ir.numDocs());
{
- Document doc = ir.document(1);
- assertEquals("punk", doc.getField(RecordingIndexField.TAG.getName()).stringValue());
+ checkTerm(ir, RecordingIndexField.TAG, "punk");
}
ir.close();
}
- /**
- * @throws Exception exception
- */
- @Test
- public void testTrackName() throws Exception {
- addTrackOne();
- RAMDirectory ramDir = new RAMDirectory();
- createIndex(ramDir);
- IndexReader ir = DirectoryReader.open(ramDir);
- assertEquals(2, ir.numDocs());
- {
- Document doc = ir.document(1);
- assertEquals(1, doc.getFields(RecordingIndexField.RECORDING_OUTPUT.getName()).length);
- assertEquals("Do It Clean", doc.getField(RecordingIndexField.RECORDING_OUTPUT.getName()).stringValue());
- assertEquals(1, doc.getFields(RecordingIndexField.RELEASE_TYPE.getName()).length);
- assertEquals(1, doc.getFields(RecordingIndexField.TRACK_OUTPUT.getName()).length);
- assertEquals("Do It Cleans", doc.getField(RecordingIndexField.TRACK_OUTPUT.getName()).stringValue());
- }
- ir.close();
- }
-
/**
* Basic test of all fields
*
@@ -662,9 +606,7 @@
IndexReader ir = DirectoryReader.open(ramDir);
assertEquals(2, ir.numDocs());
{
- Document doc = ir.document(1);
- assertEquals(2, doc.getFields(RecordingIndexField.ISRC.getName()).length);
- assertEquals("FRAAA9000038", doc.getField(RecordingIndexField.ISRC.getName()).stringValue());
+ checkTerm(ir, RecordingIndexField.ISRC, "fraaa9000038");
}
ir.close();
}
@@ -683,9 +625,7 @@
IndexReader ir = DirectoryReader.open(ramDir);
assertEquals(2, ir.numDocs());
{
- Document doc = ir.document(1);
- assertEquals(1, doc.getFields(RecordingIndexField.ISRC.getName()).length);
- assertEquals("-", doc.getField(RecordingIndexField.ISRC.getName()).stringValue());
+ checkTerm(ir, RecordingIndexField.ISRC, "-");
}
ir.close();
}
@@ -705,9 +645,7 @@
IndexReader ir = DirectoryReader.open(ramDir);
assertEquals(2, ir.numDocs());
{
- Document doc = ir.document(1);
- assertEquals(1, doc.getFields(RecordingIndexField.PUID.getName()).length);
- assertEquals("efd2ace2-b3b9-305f-8a53-9803595c0e38", doc.getField(RecordingIndexField.PUID.getName()).stringValue());
+ checkTerm(ir, RecordingIndexField.PUID, "efd2ace2-b3b9-305f-8a53-9803595c0e38");
}
ir.close();
}
@@ -727,9 +665,7 @@
IndexReader ir = DirectoryReader.open(ramDir);
assertEquals(2, ir.numDocs());
{
- Document doc = ir.document(1);
- assertEquals(1, doc.getFields(RecordingIndexField.PUID.getName()).length);
- assertEquals("efd2ace2-b3b9-305f-8a53-9803595c0e38", doc.getField(RecordingIndexField.PUID.getName()).stringValue());
+ checkTerm(ir, RecordingIndexField.PUID, "efd2ace2-b3b9-305f-8a53-9803595c0e38");
}
ir.close();
}
@@ -749,9 +685,7 @@
IndexReader ir = DirectoryReader.open(ramDir);
assertEquals(2, ir.numDocs());
{
- Document doc = ir.document(1);
- assertEquals(1, doc.getFields(RecordingIndexField.COMMENT.getName()).length);
- assertEquals("demo", doc.getField(RecordingIndexField.COMMENT.getName()).stringValue());
+ checkTerm(ir, RecordingIndexField.COMMENT, "demo");
}
ir.close();
}
@@ -771,9 +705,7 @@
IndexReader ir = DirectoryReader.open(ramDir);
assertEquals(2, ir.numDocs());
{
- Document doc = ir.document(1);
- assertEquals(1, doc.getFields(RecordingIndexField.NUMBER.getName()).length);
- assertEquals("A4", doc.getField(RecordingIndexField.NUMBER.getName()).stringValue());
+ checkTerm(ir, RecordingIndexField.NUMBER, "a4");
}
ir.close();
}
@@ -814,9 +746,7 @@
IndexReader ir = DirectoryReader.open(ramDir);
assertEquals(2, ir.numDocs());
{
- Document doc = ir.document(1);
- assertEquals(1, doc.getFields(RecordingIndexField.FORMAT.getName()).length);
- assertEquals("Vinyl", doc.getField(RecordingIndexField.FORMAT.getName()).stringValue());
+ checkTerm(ir, RecordingIndexField.FORMAT, "vinyl");
}
ir.close();
}
@@ -858,34 +788,23 @@
IndexReader ir = DirectoryReader.open(ramDir);
assertEquals(2, ir.numDocs());
{
- Document doc = ir.document(1);
- assertEquals(1, doc.getFields(RecordingIndexField.RECORDING_OUTPUT.getName()).length);
- assertEquals(2, doc.getFields(RecordingIndexField.TRACK_OUTPUT.getName()).length);
- assertEquals(1, doc.getFields(RecordingIndexField.RECORDING_ID.getName()).length);
- assertEquals(2, doc.getFields(RecordingIndexField.RELEASE_TYPE.getName()).length);
- assertEquals(2, doc.getFields(RecordingIndexField.RELEASE.getName()).length);
- assertEquals(2, doc.getFields(RecordingIndexField.RELEASE_STATUS.getName()).length);
- assertEquals(2, doc.getFields(RecordingIndexField.TRACKNUM.getName()).length);
- assertEquals(2, doc.getFields(RecordingIndexField.NUM_TRACKS.getName()).length);
- assertEquals(2, doc.getFields(RecordingIndexField.ISRC.getName()).length);
- assertEquals("2f250ed2-6285-40f1-aa2a-14f1c05e9765", doc.getField(RecordingIndexField.RECORDING_ID.getName()).stringValue());
- assertEquals("Crocodiles (bonus disc)", doc.getFields(RecordingIndexField.RELEASE.getName())[0].stringValue());
- assertEquals("Crocodiles", doc.getFields(RecordingIndexField.RELEASE.getName())[1].stringValue());
- assertEquals("c3b8dbc9-c1ff-4743-9015-8d762819134e", doc.getFields(RecordingIndexField.RELEASE_ID.getName())[0].stringValue());
- assertEquals("c3b8dbc9-c1ff-4743-9015-8d762819134f", doc.getFields(RecordingIndexField.RELEASE_ID.getName())[1].stringValue());
- //assertEquals(2, NumericUtils.prefixCodedToInt(doc.getField(RecordingIndexField.NUM_TRACKS.getName()).stringValue()));
- //assertEquals(7, NumericUtils.prefixCodedToInt(doc.getFields(RecordingIndexField.TRACKNUM.getName())[0].stringValue()));
- //assertEquals(4, NumericUtils.prefixCodedToInt(doc.getFields(RecordingIndexField.TRACKNUM.getName())[1].stringValue()));
- //assertEquals(2, NumericUtils.prefixCodedToInt(doc.getField(RecordingIndexField.NUM_TRACKS_RELEASE.getName()).stringValue()));
- //assertEquals(33000, NumericUtils.prefixCodedToInt(doc.getField(RecordingIndexField.RECORDING_DURATION_OUTPUT.getName()).stringValue()));
- assertEquals("Album", doc.getFields(RecordingIndexField.RELEASE_TYPE.getName())[0].stringValue());
- assertEquals("Single", doc.getFields(RecordingIndexField.RELEASE_TYPE.getName())[1].stringValue());
- assertEquals("Official", doc.getFields(RecordingIndexField.RELEASE_STATUS.getName())[0].stringValue());
- assertEquals("Promotion", doc.getFields(RecordingIndexField.RELEASE_STATUS.getName())[1].stringValue());
+ checkTerm(ir, RecordingIndexField.RECORDING_ID, "2f250ed2-6285-40f1-aa2a-14f1c05e9765");
+ checkTerm(ir, RecordingIndexField.RELEASE_TYPE, "album");
+ checkTerm(ir, RecordingIndexField.RELEASE_STATUS, "official");
+ checkTerm(ir, RecordingIndexField.ISRC, "fraaa9000038");
+ checkTerm(ir, RecordingIndexField.RELEASE, "bonus");
+ checkTerm(ir, RecordingIndexField.RELEASE_ID, "c3b8dbc9-c1ff-4743-9015-8d762819134e");
+ checkTerm(ir, RecordingIndexField.POSITION, "1");
- assertEquals("FRAAA9000038", doc.getField(RecordingIndexField.ISRC.getName()).stringValue());
- assertEquals("1", doc.getFields(RecordingIndexField.POSITION.getName())[0].stringValue());
- assertEquals("1", doc.getFields(RecordingIndexField.POSITION.getName())[1].stringValue());
+ checkTermX(ir, RecordingIndexField.RELEASE_ID, "c3b8dbc9-c1ff-4743-9015-8d762819134f",1);
+ checkTermX(ir, RecordingIndexField.RELEASE_TYPE, "single",1);
+ checkTermX(ir, RecordingIndexField.RELEASE_STATUS, "promotion",1);
+ //checkTermX(ir, RecordingIndexField.POSITION, "1",1);
+
+ checkTerm(ir, RecordingIndexField.NUM_TRACKS_RELEASE, 2);
+ checkTerm(ir, RecordingIndexField.TRACKNUM, 4);
+ checkTerm(ir, RecordingIndexField.NUM_TRACKS_RELEASE, 2);
+
}
ir.close();
}
Modified: search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/RecordingSearch.java
===================================================================
--- search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/RecordingSearch.java 2013-05-01 10:22:17 UTC (rev 13670)
+++ search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/RecordingSearch.java 2013-05-01 15:40:23 UTC (rev 13671)
@@ -45,7 +45,7 @@
@Override
protected String printExplainHeader(Document doc) throws IOException, ParseException {
return doc.get(RecordingIndexField.RECORDING_ID.getName()) + ':'
- + doc.get(RecordingIndexField.RECORDING_OUTPUT.getName()) + '\n';
+ + doc.get(RecordingIndexField.RECORDING.getName()) + '\n';
}
/**
Modified: search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd1/TrackMmd1XmlWriter.java
===================================================================
--- search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd1/TrackMmd1XmlWriter.java 2013-05-01 10:22:17 UTC (rev 13670)
+++ search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd1/TrackMmd1XmlWriter.java 2013-05-01 15:40:23 UTC (rev 13671)
@@ -28,6 +28,7 @@
package org.musicbrainz.search.servlet.mmd1;
+import com.google.common.base.Strings;
import com.jthink.brainz.mmd.*;
import org.apache.commons.lang.StringUtils;
import org.apache.lucene.util.BytesRef;
@@ -35,7 +36,9 @@
import org.musicbrainz.mmd2.ArtistCredit;
import org.musicbrainz.search.MbDocument;
import org.musicbrainz.search.index.ArtistCreditHelper;
+import org.musicbrainz.search.index.MMDSerializer;
import org.musicbrainz.search.index.RecordingIndexField;
+import org.musicbrainz.search.index.ReleaseIndexField;
import org.musicbrainz.search.servlet.Result;
import org.musicbrainz.search.servlet.Results;
@@ -55,69 +58,51 @@
for (Result result : results.results) {
MbDocument doc = result.getDoc();
Track track = of.createTrack();
-
- track.setId(doc.get(RecordingIndexField.RECORDING_ID));
-
result.setNormalizedScore(results.getMaxScore());
track.getOtherAttributes().put(getScore(), String.valueOf(result.getNormalizedScore()));
- String name = doc.get(RecordingIndexField.RECORDING_OUTPUT);
- if (name != null) {
- track.setTitle(name);
+ org.musicbrainz.mmd2.Recording recordingv2
+ = (org.musicbrainz.mmd2.Recording) MMDSerializer.unserialize(doc.get(RecordingIndexField.RECORDING_STORE), org.musicbrainz.mmd2.Recording.class);
+
+ track.setId(recordingv2.getId());
+
+ if (!Strings.isNullOrEmpty(recordingv2.getTitle())) {
+ track.setTitle(recordingv2.getTitle());
}
- String duration = doc.get(RecordingIndexField.DURATION);
- if (isNotNoValue(duration)) {
- track.setDuration(BigInteger.valueOf(NumericUtils.prefixCodedToInt(new BytesRef(duration))));
+ if (recordingv2.getLength()!=null) {
+ track.setDuration(recordingv2.getLength());
}
- if(doc.get(RecordingIndexField.ARTIST_CREDIT)!=null) {
- ArtistCredit ac = ArtistCreditHelper.unserialize(doc.get(RecordingIndexField.ARTIST_CREDIT));
- if (ac.getNameCredit().size()>0) {
+ ArtistCredit acv2 = recordingv2.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());
track.setArtist(artist);
}
}
-
- String[] releaseIds = doc.getValues(RecordingIndexField.RELEASE_ID);
- String[] releaseTypes = doc.getValues(RecordingIndexField.RELEASE_TYPE);
- String[] numTracks = doc.getValues(RecordingIndexField.NUM_TRACKS_RELEASE);
- String[] trackNos = doc.getValues(RecordingIndexField.TRACKNUM);
- String[] releases = doc.getValues(RecordingIndexField.RELEASE);
-
- ReleaseList releaseList = of.createReleaseList();
- for (int i = 0; i < releaseIds.length; i++) {
- String releaseName = releases[i];
- if (releaseName != null) {
+ if(recordingv2.getReleaseList()!=null) {
+ ReleaseList releaseList = of.createReleaseList();
+ for(org.musicbrainz.mmd2.Release releasev2:recordingv2.getReleaseList().getRelease()) {
Release release = of.createRelease();
- release.setId(releaseIds[i]);
- release.setTitle(releaseName);
+ release.setId(releasev2.getId());
+ release.setTitle(releasev2.getTitle());
+ release.getType().add(StringUtils.capitalize(releasev2.getReleaseGroup().getType()));
- String type = releaseTypes[i];
- if (isNotNoValue(type)) {
- release.getType().add(StringUtils.capitalize(type));
- }
-
- String trackNo = trackNos[i];
- String tracks = numTracks[i];
- if (trackNo != null) {
- TrackList releaseTrackList = of.createTrackList();
- releaseTrackList.setOffset(BigInteger.valueOf(NumericUtils.prefixCodedToInt(new BytesRef(trackNo)) - 1));
- if (tracks != null) {
- releaseTrackList.setCount(BigInteger.valueOf(NumericUtils.prefixCodedToInt(new BytesRef(tracks))));
- }
- release.setTrackList(releaseTrackList);
- }
+ TrackList releaseTrackList = of.createTrackList();
+ releaseTrackList.setOffset(releasev2.getMediumList().getMedium().get(0).getTrackList().getOffset());
+ releaseTrackList.setCount(releasev2.getMediumList().getMedium().get(0).getTrackList().getCount());
+ release.setTrackList(releaseTrackList);
releaseList.getRelease().add(release);
}
+ track.setReleaseList(releaseList);
+ trackList.getTrack().add(track);
}
- track.setReleaseList(releaseList);
- trackList.getTrack().add(track);
}
trackList.setCount(BigInteger.valueOf(results.getTotalHits()));
trackList.setOffset(BigInteger.valueOf(results.getOffset()));
Modified: search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd2/RecordingWriter.java
===================================================================
--- search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd2/RecordingWriter.java 2013-05-01 10:22:17 UTC (rev 13670)
+++ search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd2/RecordingWriter.java 2013-05-01 15:40:23 UTC (rev 13671)
@@ -35,6 +35,7 @@
import org.musicbrainz.search.index.ArtistCreditHelper;
import org.musicbrainz.search.index.MMDSerializer;
import org.musicbrainz.search.index.RecordingIndexField;
+import org.musicbrainz.search.index.ReleaseIndexField;
import org.musicbrainz.search.servlet.Result;
import org.musicbrainz.search.servlet.Results;
@@ -45,29 +46,9 @@
public class RecordingWriter extends ResultsWriter {
- private static final String VARIOUS_ARTISTS_GUID = "89ad4ac3-39f7-470e-963a-56509c546377";
- private static final String VARIOUS_ARTISTS_NAME = "Various Artists";
/**
- * Create various artist credits
*
- * @return
- */
- private ArtistCredit createVariousArtistsCredit()
- {
- ObjectFactory of = new ObjectFactory();
- Artist artist = of.createArtist();
- artist.setId(VARIOUS_ARTISTS_GUID);
- artist.setName(VARIOUS_ARTISTS_NAME);
- NameCredit naCredit = of.createNameCredit();
- naCredit.setArtist(artist);
- ArtistCredit vaCredit = of.createArtistCredit();
- vaCredit.getNameCredit().add(naCredit);
- return vaCredit;
- }
-
- /**
- *
* @param metadata
* @param results
* @throws IOException
@@ -110,177 +91,9 @@
*/
public void write(List list, Result result) throws IOException
{
- ObjectFactory of = new ObjectFactory();
- RecordingList recordingList = of.createRecordingList();
-
- MbDocument doc = result.getDoc();
- Recording recording = of.createRecording();
-
- recording.setId(doc.get(RecordingIndexField.RECORDING_ID));
- recording.setScore(String.valueOf(result.getNormalizedScore()));
- String name = doc.get(RecordingIndexField.RECORDING_OUTPUT);
-
- if (name != null) {
- recording.setTitle(name);
- }
-
- String comment = doc.get(RecordingIndexField.COMMENT);
- if (isNotNoValue(comment)) {
- recording.setDisambiguation(comment);
- }
-
- String duration = doc.get(RecordingIndexField.RECORDING_DURATION_OUTPUT);
- if (duration != null) {
- recording.setLength(BigInteger.valueOf(NumericUtils.prefixCodedToInt(new BytesRef(duration))));
- }
-
- String[] isrcs = doc.getValues(RecordingIndexField.ISRC);
- if(isrcs.length>0) {
- IsrcList isrcList = of.createIsrcList();
- for (int i = 0; i < isrcs.length; i++) {
- if (isNotNoValue(isrcs[i])) {
- Isrc isrc = of.createIsrc();
- isrc.setId(isrcs[i]);
- isrcList.getIsrc().add(isrc);
- }
- }
- if(isrcList.getIsrc().size()>0) {
- recording.setIsrcList(isrcList);
- }
- }
-
- String[] puids = doc.getValues(RecordingIndexField.PUID);
- if(puids.length>0) {
- PuidList puidList = of.createPuidList();
- for (int i = 0; i < puids.length; i++) {
- Puid puid = of.createPuid();
- puid.setId(puids[i]);
- puidList.getPuid().add(puid);
- }
- recording.setPuidList(puidList);
- }
-
- if(doc.get(RecordingIndexField.ARTIST_CREDIT)!=null) {
- ArtistCredit ac = ArtistCreditHelper.unserialize(doc.get(RecordingIndexField.ARTIST_CREDIT));
- recording.setArtistCredit(ac);
- }
-
- String[] releaseNames = doc.getValues(RecordingIndexField.RELEASE);
-
- if(releaseNames.length>0)
- {
- String[] rgTypes = doc.getValues(RecordingIndexField.RELEASE_TYPE);
- String[] rgIds = doc.getValues(RecordingIndexField.RELEASEGROUP_ID);
- String[] rgPrimaryTypes = doc.getValues(RecordingIndexField.RELEASE_PRIMARY_TYPE);
- String[] rgSecondaryTypes = doc.getValues(RecordingIndexField.SECONDARY_TYPE_OUTPUT);
- String[] releaseIds = doc.getValues(RecordingIndexField.RELEASE_ID);
- String[] releaseStatus = doc.getValues(RecordingIndexField.RELEASE_STATUS);
- String[] releaseCountry = doc.getValues(RecordingIndexField.COUNTRY);
- String[] releaseDate = doc.getValues(RecordingIndexField.RELEASE_DATE);
- String[] trackPos = doc.getValues(RecordingIndexField.TRACKNUM);
- String[] trackNos = doc.getValues(RecordingIndexField.NUMBER);
- String[] numTracks = doc.getValues(RecordingIndexField.NUM_TRACKS);
- String[] trackName = doc.getValues(RecordingIndexField.TRACK_OUTPUT);
- String[] mediumPos = doc.getValues(RecordingIndexField.POSITION);
- String[] numTracksRelease = doc.getValues(RecordingIndexField.NUM_TRACKS_RELEASE);
- String[] releaseVA = doc.getValues(RecordingIndexField.RELEASE_AC_VA);
- String[] mediumFormat = doc.getValues(RecordingIndexField.FORMAT);
- String[] trackArtistCredits = doc.getValues(RecordingIndexField.TRACK_ARTIST_CREDIT);
- String[] trackDurations = doc.getValues(RecordingIndexField.TRACK_DURATION_OUTPUT);
-
- ReleaseList releaseList = of.createReleaseList();
- for(int i=0;i<releaseNames.length;i++) {
-
- Release release = of.createRelease();
- release.setId(releaseIds[i]);
- release.setTitle(releaseNames[i]);
- if (isNotNoValue(releaseStatus[i])) {
- release.setStatus(releaseStatus[i]);
- }
-
-
- if (isNotNoValue(releaseDate[i])) {
- release.setDate(releaseDate[i].toLowerCase(Locale.US));
- }
-
- if (isNotNoValue(releaseCountry[i])) {
- release.setCountry(releaseCountry[i]);
- }
-
- if (isNotNoValue(releaseVA[i])) {
- release.setArtistCredit(createVariousArtistsCredit());
- }
-
- ReleaseGroup rg = of.createReleaseGroup();
- release.setReleaseGroup(rg);
- if (isNotUnknown(rgIds[i])) {
- rg.setId(rgIds[i]);
- }
-
- if (isNotNoValue(rgTypes[i])) {
- rg.setType(rgTypes[i]);
- }
-
- if(isNotUnknown(rgPrimaryTypes[i])) {
- rg.setPrimaryType(rgPrimaryTypes[i]);
- }
-
- if(isNotNoValue(rgSecondaryTypes[i])) {
- SecondaryTypeList stl = (SecondaryTypeList)MMDSerializer
- .unserialize(rgSecondaryTypes[i],SecondaryTypeList.class);
- release.getReleaseGroup().setSecondaryTypeList(stl);
- }
-
- org.musicbrainz.mmd2.Medium.TrackList.Track track = of.createMediumTrackListTrack();
- track.setTitle(trackName[i]);
-
- if (isNotNoValue(trackNos[i])) {
- track.setNumber(trackNos[i]);
- }
-
- if (isNotNoValue(trackDurations[i])) {
- track.setLength(BigInteger.valueOf(NumericUtils.prefixCodedToInt(new BytesRef(trackDurations[i]))));
- }
-
- if (isNotNoValue(trackArtistCredits[i])) {
- ArtistCredit tac = ArtistCreditHelper.unserialize(trackArtistCredits[i]);
- track.setArtistCredit(tac);
- }
-
- org.musicbrainz.mmd2.Medium.TrackList releaseTrackList = of.createMediumTrackList();
- releaseTrackList.setOffset(BigInteger.valueOf(NumericUtils.prefixCodedToInt(new BytesRef(trackPos[i])) - 1));
- releaseTrackList.setCount(BigInteger.valueOf(NumericUtils.prefixCodedToInt(new BytesRef(numTracks[i]))));
- releaseTrackList.getDefTrack().add(track);
- Medium medium = of.createMedium();
- medium.setPosition(new BigInteger(mediumPos[i]));
- medium.setTrackList(releaseTrackList);
- if(isNotNoValue(mediumFormat[i]))
- {
- medium.setFormat(mediumFormat[i]);
- }
- MediumList mediumList = of.createMediumList();
- mediumList.setTrackCount(BigInteger.valueOf(NumericUtils.prefixCodedToInt(new BytesRef(numTracksRelease[i]))));
- mediumList.getMedium().add(medium);
- release.setMediumList(mediumList);
- releaseList.getRelease().add(release);
- }
- recording.setReleaseList(releaseList);
- }
-
- String[] tags = doc.getValues(RecordingIndexField.TAG);
- String[] tagCounts = doc.getValues(RecordingIndexField.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);
- }
- recording.setTagList(tagList);
- }
-
- list.add(recording);
+ MbDocument doc = result.getDoc();
+ Recording recording = (Recording) MMDSerializer.unserialize(doc.get(RecordingIndexField.RECORDING_STORE), Recording.class);
+ recording.setScore(String.valueOf(result.getNormalizedScore()));
+ list.add(recording);
}
}
\ No newline at end of file
Modified: search_server/trunk/servlet/src/test/java/org/musicbrainz/search/servlet/FindRecordingTest.java
===================================================================
--- search_server/trunk/servlet/src/test/java/org/musicbrainz/search/servlet/FindRecordingTest.java 2013-05-01 10:22:17 UTC (rev 13670)
+++ search_server/trunk/servlet/src/test/java/org/musicbrainz/search/servlet/FindRecordingTest.java 2013-05-01 15:40:23 UTC (rev 13671)
@@ -5,6 +5,7 @@
import java.io.PrintWriter;
import java.io.StringWriter;
+import java.math.BigInteger;
import java.util.Date;
import org.apache.lucene.analysis.Analyzer;
@@ -16,17 +17,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.SecondaryTypeList;
+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.MMDSerializer;
-import org.musicbrainz.search.index.MetaIndexField;
-import org.musicbrainz.search.index.RecordingIndexField;
+import org.musicbrainz.search.index.*;
import org.musicbrainz.search.servlet.mmd1.TrackMmd1XmlWriter;
/**
@@ -36,620 +30,588 @@
public class FindRecordingTest {
- private AbstractSearchServer ss;
- private AbstractDismaxSearchServer sd;
+ private AbstractSearchServer ss;
+ private AbstractDismaxSearchServer sd;
+ @Before
+ public void setUp() throws Exception {
+ ObjectFactory of = new ObjectFactory();
- @Before
- public void setUp() throws Exception {
- ObjectFactory of = new ObjectFactory();
+ RAMDirectory ramDir = new RAMDirectory();
+ Analyzer analyzer = DatabaseIndex.getAnalyzer(RecordingIndexField.class);
+ IndexWriterConfig writerConfig = new IndexWriterConfig(LuceneVersion.LUCENE_VERSION, analyzer);
+ IndexWriter writer = new IndexWriter(ramDir, writerConfig);
- RAMDirectory ramDir = new RAMDirectory();
- Analyzer analyzer = DatabaseIndex.getAnalyzer(RecordingIndexField.class);
- IndexWriterConfig writerConfig = new IndexWriterConfig(LuceneVersion.LUCENE_VERSION,analyzer);
- IndexWriter writer = new IndexWriter(ramDir, writerConfig);
+ {
+ MbDocument doc = new MbDocument();
+ Recording recording = of.createRecording();
- {
- MbDocument doc = new MbDocument();
- doc.addField(RecordingIndexField.RECORDING_ID, "7ca7782b-a602-448b-b108-bb881a7be2d6");
- doc.addField(RecordingIndexField.RECORDING, "Gravitational Lenz");
- doc.addField(RecordingIndexField.RECORDING_OUTPUT, "Gravitational Lenz");
- doc.addField(RecordingIndexField.RELEASE_ID, "1d9e8ed6-3893-4d3b-aa7d-6cd79609e386");
- doc.addField(RecordingIndexField.RELEASE, "Our Glorious 5 Year Plan");
- doc.addField(RecordingIndexField.ARTIST_ID, "4302e264-1cf0-4d1f-aca7-2a6f89e34b36");
- doc.addField(RecordingIndexField.ARTIST, "Farming Incident");
- doc.addField(RecordingIndexField.ARTIST_NAME, "Farming Incident");
- doc.addField(RecordingIndexField.PUID, "1d9e8ed6-3893-4d3b-aa7d-72e79609e386");
- doc.addField(RecordingIndexField.COMMENT, "demo");
- doc.addField(RecordingIndexField.COUNTRY, "UK");
- doc.addField(RecordingIndexField.FORMAT, "Vinyl");
+ doc.addField(RecordingIndexField.RECORDING_ID, "7ca7782b-a602-448b-b108-bb881a7be2d6");
+ recording.setId("7ca7782b-a602-448b-b108-bb881a7be2d6");
+ doc.addField(RecordingIndexField.RECORDING, "Gravitational Lenz");
+ doc.addField(RecordingIndexField.RECORDING, "Gravitational Lens");
+ recording.setTitle("Gravitational Lenz");
- 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(RecordingIndexField.ARTIST_CREDIT, MMDSerializer.serialize(ac));
+ doc.addField(RecordingIndexField.COMMENT, "demo");
+ recording.setDisambiguation("demo");
- //Track Artist different to Recording Artist
- ac = of.createArtistCredit();
- nc = of.createNameCredit();
- artist = of.createArtist();
- artist.setId("2302e264-1cf0-4d1f-aca7-2a6f89e34b36");
- artist.setName("Pig Incident");
- artist.setSortName("Incident, Pig");
- nc.setArtist(artist);
- ac.getNameCredit().add(nc);
- doc.addField(RecordingIndexField.TRACK_ARTIST_CREDIT, MMDSerializer.serialize(ac));
+ doc.addField(RecordingIndexField.RELEASE_ID, "1d9e8ed6-3893-4d3b-aa7d-6cd79609e386");
+ doc.addField(RecordingIndexField.RELEASE, "Our Glorious 5 Year Plan");
+ doc.addField(RecordingIndexField.COUNTRY, "UK");
- doc.addNumericField(RecordingIndexField.DURATION, 234000);
- doc.addNumericField(RecordingIndexField.RECORDING_DURATION_OUTPUT, 234000);
- doc.addNumericField(RecordingIndexField.QUANTIZED_DURATION, (234000 / 2000));
- doc.addNumericField(RecordingIndexField.NUM_TRACKS,10);
- doc.addNumericField(RecordingIndexField.NUM_TRACKS_RELEASE,10);
- doc.addNumericField(RecordingIndexField.TRACKNUM, 5);
- doc.addField(RecordingIndexField.NUMBER, "A4");
- doc.addField(RecordingIndexField.TRACK_OUTPUT, "Gravitational Lens");
- doc.addField(RecordingIndexField.RECORDING, "Gravitational Lens");
- doc.addField(RecordingIndexField.RELEASEGROUP_ID, "4444e264-1cf0-4d1f-aca7-2a6f89e34b36");
- doc.addField(RecordingIndexField.POSITION, "1");
- doc.addField(RecordingIndexField.RELEASE_TYPE, "Compilation");
- doc.addField(RecordingIndexField.RELEASE_PRIMARY_TYPE, "Album");
- doc.addField(RecordingIndexField.RELEASE_SECONDARY_TYPE, "Compilation");
+ doc.addField(RecordingIndexField.FORMAT, "Vinyl");
+ ReleaseList releaseList = of.createReleaseList();
+ Release release = of.createRelease();
+ MediumList ml = of.createMediumList();
+ Medium m = of.createMedium();
+ Medium.TrackList trackList = of.createMediumTrackList();
+ releaseList.getRelease().add(release);
+ release.setMediumList(ml);
+ ml.getMedium().add(m);
+ m.setTrackList(trackList);
+ Medium.TrackList.Track track = of.createMediumTrackListTrack();
+ trackList.getDefTrack().add(track);
+ recording.setReleaseList(releaseList);
+ m.setFormat("Vinyl");
+ track.setTitle("Gravitational Lens");
- SecondaryTypeList stl = of.createSecondaryTypeList();
- stl.getSecondaryType().add("Compilation");
- doc.addField(RecordingIndexField.SECONDARY_TYPE_OUTPUT, MMDSerializer.serialize(stl));
+ release.setId("1d9e8ed6-3893-4d3b-aa7d-6cd79609e386");
+ release.setTitle("Our Glorious 5 Year Plan");
+ release.setCountry("UK");
- doc.addField(RecordingIndexField.RELEASE_STATUS, "Official");
- doc.addField(RecordingIndexField.RELEASE_DATE, "1970-01-01");
- doc.addField(RecordingIndexField.ISRC, "123456789");
- doc.addField(RecordingIndexField.ISRC, "abcdefghi");
- doc.addNumericField(RecordingIndexField.DURATION, 233000);
- doc.addNumericField(RecordingIndexField.TRACK_DURATION_OUTPUT, 233000);
+ doc.addField(RecordingIndexField.PUID, "1d9e8ed6-3893-4d3b-aa7d-72e79609e386");
+ PuidList puidList = of.createPuidList();
+ Puid puid = of.createPuid();
+ puid.setId("1d9e8ed6-3893-4d3b-aa7d-72e79609e386");
+ puidList.getPuid().add(puid);
+ recording.setPuidList(puidList);
- doc.addField(RecordingIndexField.TAG, "indie");
- doc.addField(RecordingIndexField.TAGCOUNT, "101");
- doc.addField(RecordingIndexField.RELEASE_AC_VA,"1");
- writer.addDocument(doc.getLuceneDocument());
+ doc.addField(RecordingIndexField.ARTIST_ID, "4302e264-1cf0-4d1f-aca7-2a6f89e34b36");
+ doc.addField(RecordingIndexField.ARTIST, "Farming Incident");
+ doc.addField(RecordingIndexField.ARTIST_NAME, "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);
+ recording.setArtistCredit(ac);
+
+ //Track Artist different to Recording Artist
+ ac = of.createArtistCredit();
+ nc = of.createNameCredit();
+ artist = of.createArtist();
+ artist.setId("2302e264-1cf0-4d1f-aca7-2a6f89e34b36");
+ artist.setName("Pig Incident");
+ artist.setSortName("Incident, Pig");
+ nc.setArtist(artist);
+ ac.getNameCredit().add(nc);
+ track.setArtistCredit(ac);
+
+ doc.addNumericField(RecordingIndexField.DURATION, 234000);
+ recording.setLength(BigInteger.valueOf(234000));
+
+ doc.addField(RecordingIndexField.RELEASEGROUP_ID, "4444e264-1cf0-4d1f-aca7-2a6f89e34b36");
+ doc.addField(RecordingIndexField.POSITION, "1");
+ doc.addField(RecordingIndexField.RELEASE_TYPE, "Compilation");
+ doc.addField(RecordingIndexField.RELEASE_PRIMARY_TYPE, "Album");
+ doc.addField(RecordingIndexField.RELEASE_SECONDARY_TYPE, "Compilation");
+ ReleaseGroup rg = of.createReleaseGroup();
+ rg.setId("4444e264-1cf0-4d1f-aca7-2a6f89e34b36");
+ rg.setType("Compilation");
+ rg.setPrimaryType("Album");
+ SecondaryTypeList slt = of.createSecondaryTypeList();
+ slt.getSecondaryType().add("Compilation");
+ rg.setSecondaryTypeList(slt);
+ release.setReleaseGroup(rg);
+ m.setPosition(BigInteger.valueOf(1));
+
+ doc.addNumericField(RecordingIndexField.QUANTIZED_DURATION, (234000 / 2000));
+ doc.addNumericField(RecordingIndexField.NUM_TRACKS, 10);
+ doc.addNumericField(RecordingIndexField.NUM_TRACKS_RELEASE, 10);
+ doc.addNumericField(RecordingIndexField.TRACKNUM, 5);
+ doc.addField(RecordingIndexField.NUMBER, "A4");
+ trackList.setCount(BigInteger.valueOf(10));
+ trackList.setOffset(BigInteger.valueOf(4));
+ track.setNumber("A4");
+ track.setLength(BigInteger.valueOf(233000));
+ ml.setTrackCount(BigInteger.valueOf(10));
+ doc.addField(RecordingIndexField.RELEASE_STATUS, "Official");
+ doc.addField(RecordingIndexField.RELEASE_DATE, "1970-01-01");
+ release.setStatus("Official");
+ release.setDate("1970-01-01");
+
+ doc.addField(RecordingIndexField.ISRC, "123456789");
+ doc.addField(RecordingIndexField.ISRC, "abcdefghi");
+ IsrcList isrcList = of.createIsrcList();
+ recording.setIsrcList(isrcList);
+ Isrc isrc1 = of.createIsrc();
+ isrc1.setId("123456789");
+ Isrc isrc2 = of.createIsrc();
+ isrc2.setId("abcdefghi");
+
+ isrcList.getIsrc().add(isrc1);
+ isrcList.getIsrc().add(isrc2);
+
+
+ doc.addNumericField(RecordingIndexField.DURATION, 233000);
+
+
+ doc.addField(RecordingIndexField.TAG, "indie");
+ TagList tagList = of.createTagList();
+ Tag tag = of.createTag();
+ tag.setName("indie");
+ tag.setCount(new BigInteger("101"));
+ tagList.getTag().add(tag);
+ release.setTagList(tagList);
+
+ doc.addField(RecordingIndexField.RELEASE_AC_VA, "1");
+ Artist vaArtist = of.createArtist();
+ vaArtist.setId("89ad4ac3-39f7-470e-963a-56509c546377");
+ vaArtist.setName("Various Artists");
+ NameCredit naCredit = of.createNameCredit();
+ naCredit.setArtist(vaArtist);
+ ArtistCredit vaCredit = of.createArtistCredit();
+ vaCredit.getNameCredit().add(naCredit);
+ release.setArtistCredit(vaCredit);
+
+ doc.addField(RecordingIndexField.RECORDING_STORE, MMDSerializer.serialize(recording));
+ writer.addDocument(doc.getLuceneDocument());
+ }
+
+ {
+ MbDocument doc = new MbDocument();
+ doc.addField(MetaIndexField.META, MetaIndexField.META_VALUE);
+ doc.addNumericField(MetaIndexField.LAST_UPDATED, new Date().getTime());
+ writer.addDocument(doc.getLuceneDocument());
+ }
+
+ writer.close();
+ SearcherManager searcherManager = new SearcherManager(ramDir,
+ new MusicBrainzSearcherFactory(ResourceType.RECORDING));
+ ss = new RecordingSearch(searcherManager);
+ sd = new RecordingDismaxSearch(ss);
}
- {
- MbDocument doc = new MbDocument();
- doc.addField(MetaIndexField.META, MetaIndexField.META_VALUE);
- doc.addNumericField(MetaIndexField.LAST_UPDATED, new Date().getTime());
- writer.addDocument(doc.getLuceneDocument());
+ protected String getRecordingId(MbDocument doc) {
+ Recording recording = (Recording) MMDSerializer.unserialize(doc.get(RecordingIndexField.RECORDING_STORE), Recording.class);
+ return recording.getId();
}
- writer.close();
- SearcherManager searcherManager = new SearcherManager(ramDir,
- new MusicBrainzSearcherFactory(ResourceType.RECORDING));
- ss = new RecordingSearch(searcherManager);
- sd = new RecordingDismaxSearch(ss);
- }
+ @Test
+ public void testFindRecordingByV1TrackField() throws Exception {
+ Results res = ss.search("track:\"Gravitational Lenz\"", 0, 10);
+ assertEquals(1, res.getTotalHits());
+ assertEquals("7ca7782b-a602-448b-b108-bb881a7be2d6", getRecordingId(res.results.get(0).getDoc()));
+ }
- @Test
- public void testFindRecordingByV1TrackField() throws Exception {
- Results res = ss.search("track:\"Gravitational Lenz\"", 0, 10);
- assertEquals(1, res.getTotalHits());
- Result result = res.results.get(0);
- MbDocument doc = result.getDoc();
- assertEquals("7ca7782b-a602-448b-b108-bb881a7be2d6", doc.get(RecordingIndexField.RECORDING_ID));
- assertEquals("1d9e8ed6-3893-4d3b-aa7d-6cd79609e386", doc.get(RecordingIndexField.RELEASE_ID));
- assertEquals("Our Glorious 5 Year Plan", doc.get(RecordingIndexField.RELEASE));
- assertEquals(5, NumericUtils.prefixCodedToInt(new BytesRef(doc.get(RecordingIndexField.TRACKNUM))));
- assertEquals("Our Glorious 5 Year Plan", doc.get(RecordingIndexField.RELEASE));
- assertEquals(234000, NumericUtils.prefixCodedToInt(new BytesRef(doc.get(RecordingIndexField.DURATION))));
- }
+ @Test
+ public void testFindRecording() throws Exception {
+ Results res = ss.search("recording:\"Gravitational Lenz\"", 0, 10);
+ assertEquals(1, res.getTotalHits());
+ assertEquals("7ca7782b-a602-448b-b108-bb881a7be2d6", getRecordingId(res.results.get(0).getDoc()));
+ }
- @Test
- public void testFindRecording() throws Exception {
- Results res = ss.search("recording:\"Gravitational Lenz\"", 0, 10);
- assertEquals(1, res.getTotalHits());
- Result result = res.results.get(0);
- MbDocument doc = result.getDoc();
- assertEquals("7ca7782b-a602-448b-b108-bb881a7be2d6", doc.get(RecordingIndexField.RECORDING_ID));
- assertEquals("1d9e8ed6-3893-4d3b-aa7d-6cd79609e386", doc.get(RecordingIndexField.RELEASE_ID));
- assertEquals("Our Glorious 5 Year Plan", doc.get(RecordingIndexField.RELEASE));
- assertEquals(5, NumericUtils.prefixCodedToInt(new BytesRef(doc.get(RecordingIndexField.TRACKNUM))));
- assertEquals("Our Glorious 5 Year Plan", doc.get(RecordingIndexField.RELEASE));
- assertEquals(234000, NumericUtils.prefixCodedToInt(new BytesRef(doc.get(RecordingIndexField.DURATION))));
- assertEquals("Gravitational Lens", doc.get(RecordingIndexField.TRACK_OUTPUT));
- assertEquals("123456789", doc.get(RecordingIndexField.ISRC));
- }
+ @Test
+ public void testFindRecordingDismax1() throws Exception {
+ Results res = sd.search("Gravitational", 0, 10);
+ assertEquals(1, res.getTotalHits());
+ assertEquals("7ca7782b-a602-448b-b108-bb881a7be2d6", getRecordingId(res.results.get(0).getDoc()));
+ }
- @Test
- public void testFindRecordingDismax1() throws Exception {
- Results res = sd.search("Gravitational", 0, 10);
- assertEquals(1, res.getTotalHits());
- Result result = res.results.get(0);
- MbDocument doc = result.getDoc();
- assertEquals("7ca7782b-a602-448b-b108-bb881a7be2d6", doc.get(RecordingIndexField.RECORDING_ID));
- }
+ @Test
+ public void testFindRecordingDismax2() throws Exception {
+ Results res = sd.search("Glorious", 0, 10);
+ assertEquals(1, res.getTotalHits());
+ assertEquals("7ca7782b-a602-448b-b108-bb881a7be2d6", getRecordingId(res.results.get(0).getDoc()));
+ }
- @Test
- public void testFindRecordingDismax2() throws Exception {
- Results res = sd.search("Glorious", 0, 10);
- assertEquals(1, res.getTotalHits());
- Result result = res.results.get(0);
- MbDocument doc = result.getDoc();
- assertEquals("7ca7782b-a602-448b-b108-bb881a7be2d6", doc.get(RecordingIndexField.RECORDING_ID));
- }
+ @Test
+ public void testFindRecordingDismax3() throws Exception {
+ Results res = sd.search("Farming Incident", 0, 10);
+ assertEquals(1, res.getTotalHits());
+ assertEquals("7ca7782b-a602-448b-b108-bb881a7be2d6", getRecordingId(res.results.get(0).getDoc()));
+ }
- @Test
- public void testFindRecordingDismax3() throws Exception {
- Results res = sd.search("Farming Incident", 0, 10);
- assertEquals(1, res.getTotalHits());
- Result result = res.results.get(0);
- MbDocument doc = result.getDoc();
- assertEquals("7ca7782b-a602-448b-b108-bb881a7be2d6", doc.get(RecordingIndexField.RECORDING_ID));
- }
+ @Test
+ public void testFindRecordingByV1TrackId() throws Exception {
+ Results res = ss.search("trid:\"7ca7782b-a602-448b-b108-bb881a7be2d6\"", 0, 10);
+ assertEquals(1, res.getTotalHits());
+ assertEquals("7ca7782b-a602-448b-b108-bb881a7be2d6", getRecordingId(res.results.get(0).getDoc()));
+ }
- @Test
- public void testFindRecordingByV1TrackId() throws Exception {
- Results res = ss.search("trid:\"7ca7782b-a602-448b-b108-bb881a7be2d6\"", 0, 10);
- assertEquals(1, res.getTotalHits());
- Result result = res.results.get(0);
- MbDocument doc = result.getDoc();
- assertEquals("7ca7782b-a602-448b-b108-bb881a7be2d6", doc.get(RecordingIndexField.RECORDING_ID));
- }
+ @Test
+ public void testFindRecordingById() throws Exception {
+ Results res = ss.search("rid:\"7ca7782b-a602-448b-b108-bb881a7be2d6\"", 0, 10);
+ assertEquals(1, res.getTotalHits());
+ assertEquals("7ca7782b-a602-448b-b108-bb881a7be2d6", getRecordingId(res.results.get(0).getDoc()));
+ }
- @Test
- public void testFindRecordingById() throws Exception {
- Results res = ss.search("rid:\"7ca7782b-a602-448b-b108-bb881a7be2d6\"", 0, 10);
- assertEquals(1, res.getTotalHits());
- Result result = res.results.get(0);
- MbDocument doc = result.getDoc();
- assertEquals("7ca7782b-a602-448b-b108-bb881a7be2d6", doc.get(RecordingIndexField.RECORDING_ID));
- }
+ @Test
+ public void testFindRecordingByReleaseId() throws Exception {
+ Results res = ss.search("reid:\"1d9e8ed6-3893-4d3b-aa7d-6cd79609e386\"", 0, 10);
+ assertEquals(1, res.getTotalHits());
+ assertEquals("7ca7782b-a602-448b-b108-bb881a7be2d6", getRecordingId(res.results.get(0).getDoc()));
+ }
- @Test
- public void testFindRecordingByReleaseId() 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("7ca7782b-a602-448b-b108-bb881a7be2d6", doc.get(RecordingIndexField.RECORDING_ID));
- }
+ @Test
+ public void testFindRecordingByDemo() throws Exception {
+ Results res = ss.search("comment:\"demo\"", 0, 10);
+ assertEquals(1, res.getTotalHits());
+ assertEquals("7ca7782b-a602-448b-b108-bb881a7be2d6", getRecordingId(res.results.get(0).getDoc()));
+ }
- @Test
- public void testFindRecordingByDemo() 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("demo", doc.get(RecordingIndexField.COMMENT));
- }
+ @Test
+ public void testFindRecordingByArtistId() throws Exception {
+ Results res = ss.search("arid:\"4302e264-1cf0-4d1f-aca7-2a6f89e34b36\"", 0, 10);
+ assertEquals(1, res.getTotalHits());
+ assertEquals("7ca7782b-a602-448b-b108-bb881a7be2d6", getRecordingId(res.results.get(0).getDoc()));
+ }
- @Test
- public void testFindRecordingByArtistId() throws Exception {
- Results res = ss.search("arid:\"4302e264-1cf0-4d1f-aca7-2a6f89e34b36\"", 0, 10);
- assertEquals(1, res.getTotalHits());
- Result result = res.results.get(0);
- MbDocument doc = result.getDoc();
- assertEquals("7ca7782b-a602-448b-b108-bb881a7be2d6", doc.get(RecordingIndexField.RECORDING_ID));
- }
+ public void testFindRecordingByArtistName() throws Exception {
+ Results res = ss.search("artist:\"Farming Incident\"", 0, 10);
+ assertEquals(1, res.getTotalHits());
+ assertEquals("7ca7782b-a602-448b-b108-bb881a7be2d6", getRecordingId(res.results.get(0).getDoc()));
+ }
- public void testFindRecordingByArtistName() 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("7ca7782b-a602-448b-b108-bb881a7be2d6", doc.get(RecordingIndexField.RECORDING_ID));
- }
+ /**
+ * Searches recording field, which should include names of associated tracks)
+ */
+ @Test
+ public void testFindRecordingByTrackName() throws Exception {
+ Results res = ss.search("recording:\"Gravitational Lens\"", 0, 10);
+ assertEquals(1, res.getTotalHits());
+ assertEquals("7ca7782b-a602-448b-b108-bb881a7be2d6", getRecordingId(res.results.get(0).getDoc()));
+ }
- /** Searches recording field, which should include names of associated tracks) */
- @Test
- public void testFindRecordingByTrackName() throws Exception {
- Results res = ss.search("recording:\"Gravitational Lens\"", 0, 10);
- assertEquals(1, res.getTotalHits());
- Result result = res.results.get(0);
- MbDocument doc = result.getDoc();
- assertEquals("7ca7782b-a602-448b-b108-bb881a7be2d6", doc.get(RecordingIndexField.RECORDING_ID));
- }
+ @Test
+ public void testFindRecordingByReleaseType() throws Exception {
+ Results res = ss.search("type:\"compilation\"", 0, 10);
+ assertEquals(1, res.getTotalHits());
+ assertEquals("7ca7782b-a602-448b-b108-bb881a7be2d6", getRecordingId(res.results.get(0).getDoc()));
+ }
- @Test
- public void testFindRecordingByReleaseType() 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("7ca7782b-a602-448b-b108-bb881a7be2d6", doc.get(RecordingIndexField.RECORDING_ID));
- }
+ @Test
+ public void testFindRecordingByPrimaryReleaseType() throws Exception {
+ Results res = ss.search("primarytype:\"album\"", 0, 10);
+ assertEquals(1, res.getTotalHits());
+ assertEquals("7ca7782b-a602-448b-b108-bb881a7be2d6", getRecordingId(res.results.get(0).getDoc()));
+ }
- @Test
- public void testFindRecordingByPrimaryReleaseType() throws Exception {
- Results res = ss.search("primarytype:\"album\"", 0, 10);
- assertEquals(1, res.getTotalHits());
- Result result = res.results.get(0);
- MbDocument doc = result.getDoc();
- assertEquals("7ca7782b-a602-448b-b108-bb881a7be2d6", doc.get(RecordingIndexField.RECORDING_ID));
- }
+ @Test
+ public void testFindRecordingBySecondaryReleaseType() throws Exception {
+ Results res = ss.search("secondarytype:\"compilation\"", 0, 10);
+ assertEquals(1, res.getTotalHits());
+ assertEquals("7ca7782b-a602-448b-b108-bb881a7be2d6", getRecordingId(res.results.get(0).getDoc()));
+ }
- @Test
- public void testFindRecordingBySecondaryReleaseType() 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("7ca7782b-a602-448b-b108-bb881a7be2d6", doc.get(RecordingIndexField.RECORDING_ID));
- }
+ @Test
+ public void testFindRecordingByReleaseGroupId() throws Exception {
+ Results res = ss.search("rgid:\"4444e264-1cf0-4d1f-aca7-2a6f89e34b36\"", 0, 10);
+ assertEquals(1, res.getTotalHits());
+ assertEquals("7ca7782b-a602-448b-b108-bb881a7be2d6", getRecordingId(res.results.get(0).getDoc()));
+ }
- @Test
- public void testFindRecordingByReleaseGroupId() throws Exception {
- Results res = ss.search("rgid:\"4444e264-1cf0-4d1f-aca7-2a6f89e34b36\"", 0, 10);
- assertEquals(1, res.getTotalHits());
- Result result = res.results.get(0);
- MbDocument doc = result.getDoc();
- assertEquals("7ca7782b-a602-448b-b108-bb881a7be2d6", doc.get(RecordingIndexField.RECORDING_ID));
- }
+ @Test
+ public void testFindRecordingByReleaseCountry() throws Exception {
+ Results res = ss.search("country:UK", 0, 10);
+ assertEquals(1, res.getTotalHits());
+ assertEquals("7ca7782b-a602-448b-b108-bb881a7be2d6", getRecordingId(res.results.get(0).getDoc()));
+ }
- @Test
- public void testFindRecordingByReleaseCountry() throws Exception {
- Results res = ss.search("country:UK", 0, 10);
- assertEquals(1, res.getTotalHits());
- Result result = res.results.get(0);
- MbDocument doc = result.getDoc();
- assertEquals("7ca7782b-a602-448b-b108-bb881a7be2d6", doc.get(RecordingIndexField.RECORDING_ID));
- }
+ @Test
+ public void testFindRecordingByReleaseFormat() throws Exception {
+ Results res = ss.search("format:Vinyl", 0, 10);
+ assertEquals(1, res.getTotalHits());
+ assertEquals("7ca7782b-a602-448b-b108-bb881a7be2d6", getRecordingId(res.results.get(0).getDoc()));
+ }
- @Test
- public void testFindRecordingByReleaseFormat() 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("7ca7782b-a602-448b-b108-bb881a7be2d6", doc.get(RecordingIndexField.RECORDING_ID));
- }
+ @Test
+ public void testFindRecordingByReleaseTypeNumeric() throws Exception {
+ Results res = ss.search("type:\"4\"", 0, 10);
+ assertEquals(1, res.getTotalHits());
+ assertEquals("7ca7782b-a602-448b-b108-bb881a7be2d6", getRecordingId(res.results.get(0).getDoc()));
+ }
- @Test
- public void testFindRecordingByReleaseTypeNumeric() 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("7ca7782b-a602-448b-b108-bb881a7be2d6", doc.get(RecordingIndexField.RECORDING_ID));
- }
+ @Test
+ public void testFindRecordingByNumberOfTracksOnMediumOnRelease() throws Exception {
+ Results res = ss.search("tracks:10", 0, 10);
+ assertEquals(1, res.getTotalHits());
+ assertEquals("7ca7782b-a602-448b-b108-bb881a7be2d6", getRecordingId(res.results.get(0).getDoc()));
+ }
- @Test
- public void testFindRecordingByNumberOfTracksOnMediumOnRelease() throws Exception {
- Results res = ss.search("tracks:10", 0, 10);
- assertEquals(1, res.getTotalHits());
- Result result = res.results.get(0);
- MbDocument doc = result.getDoc();
- assertEquals("7ca7782b-a602-448b-b108-bb881a7be2d6", doc.get(RecordingIndexField.RECORDING_ID));
- }
+ @Test
+ public void testFindRecordingByNumberOfTracksOnRelease() throws Exception {
+ Results res = ss.search("tracksrelease:10", 0, 10);
+ assertEquals(1, res.getTotalHits());
+ assertEquals("7ca7782b-a602-448b-b108-bb881a7be2d6", getRecordingId(res.results.get(0).getDoc()));
+ }
- @Test
- public void testFindRecordingByNumberOfTracksOnRelease() throws Exception {
- Results res = ss.search("tracksrelease:10", 0, 10);
- assertEquals(1, res.getTotalHits());
- Result result = res.results.get(0);
- MbDocument doc = result.getDoc();
- assertEquals("7ca7782b-a602-448b-b108-bb881a7be2d6", doc.get(RecordingIndexField.RECORDING_ID));
- }
+ @Test
+ public void testFindRecordingByDuration() throws Exception {
+ Results res = ss.search("dur:234000", 0, 10);
+ assertEquals(1, res.getTotalHits());
+ assertEquals("7ca7782b-a602-448b-b108-bb881a7be2d6", getRecordingId(res.results.get(0).getDoc()));
+ }
- @Test
- public void testFindRecordingByDuration() throws Exception {
- Results res = ss.search("dur:234000", 0, 10);
- assertEquals(1, res.getTotalHits());
- Result result = res.results.get(0);
- MbDocument doc = result.getDoc();
- assertEquals("7ca7782b-a602-448b-b108-bb881a7be2d6", doc.get(RecordingIndexField.RECORDING_ID));
- }
+ @Test
+ public void testFindRecordingByDuration2() throws Exception {
+ Results res = ss.search("dur:234000", 0, 10);
+ assertEquals(1, res.getTotalHits());
+ assertEquals("7ca7782b-a602-448b-b108-bb881a7be2d6", getRecordingId(res.results.get(0).getDoc()));
+ }
- @Test
- public void testFindRecordingByDuration2() throws Exception {
- Results res = ss.search("dur:234000", 0, 10);
- assertEquals(1, res.getTotalHits());
- Result result = res.results.get(0);
- MbDocument doc = result.getDoc();
- assertEquals("7ca7782b-a602-448b-b108-bb881a7be2d6", doc.get(RecordingIndexField.RECORDING_ID));
- }
+ @Test
+ public void testFindRecordingByISRC() throws Exception {
+ Results res = ss.search("isrc:123456789", 0, 10);
+ assertEquals(1, res.getTotalHits());
+ assertEquals("7ca7782b-a602-448b-b108-bb881a7be2d6", getRecordingId(res.results.get(0).getDoc()));
+ }
- @Test
- public void testFindRecordingByISRC() throws Exception {
- Results res = ss.search("isrc:123456789", 0, 10);
- assertEquals(1, res.getTotalHits());
- Result result = res.results.get(0);
- MbDocument doc = result.getDoc();
- assertEquals("7ca7782b-a602-448b-b108-bb881a7be2d6", doc.get(RecordingIndexField.RECORDING_ID));
- }
+ @Test
+ public void testFindRecordingByNonNumericDuration() throws Exception {
+ Results res = ss.search("dur:fred", 0, 10);
+ assertEquals(0, res.getTotalHits());
+ }
- @Test
- public void testFindRecordingByNonNumericDuration() throws Exception {
- Results res = ss.search("dur:fred", 0, 10);
- assertEquals(0, res.getTotalHits());
- }
+ @Test
+ public void testFindRecordingByTag() throws Exception {
+ Results res = ss.search("tag:indie", 0, 10);
+ assertEquals(1, res.getTotalHits());
+ assertEquals("7ca7782b-a602-448b-b108-bb881a7be2d6", getRecordingId(res.results.get(0).getDoc()));
+ }
- @Test
- public void testFindRecordingByTag() throws Exception {
- Results res = ss.search("tag:indie", 0, 10);
- assertEquals(1, res.getTotalHits());
- Result result = res.results.get(0);
- MbDocument doc = result.getDoc();
- assertEquals("7ca7782b-a602-448b-b108-bb881a7be2d6", doc.get(RecordingIndexField.RECORDING_ID));
- }
+ @Test
+ public void testFindRecordingByDurationRange() throws Exception {
+ Results res = ss.search("dur:[87 TO 240000]", 0, 10);
+ assertEquals(1, res.getTotalHits());
+ assertEquals("7ca7782b-a602-448b-b108-bb881a7be2d6", getRecordingId(res.results.get(0).getDoc()));
+ }
- @Test
- public void testFindRecordingByDurationRange() throws Exception {
- Results res = ss.search("dur:[87 TO 240000]", 0, 10);
- assertEquals(1, res.getTotalHits());
- Result result = res.results.get(0);
- MbDocument doc = result.getDoc();
- assertEquals("7ca7782b-a602-448b-b108-bb881a7be2d6", doc.get(RecordingIndexField.RECORDING_ID));
- assertEquals("1d9e8ed6-3893-4d3b-aa7d-6cd79609e386", doc.get(RecordingIndexField.RELEASE_ID));
- assertEquals(5, NumericUtils.prefixCodedToInt(new BytesRef(doc.get(RecordingIndexField.TRACKNUM))));
- assertEquals("Our Glorious 5 Year Plan", doc.get(RecordingIndexField.RELEASE));
- assertEquals(234000, NumericUtils.prefixCodedToInt(new BytesRef(doc.get(RecordingIndexField.DURATION))));
- }
+ @Test
+ public void testFindRecordingByQdur() throws Exception {
+ Results res = ss.search("qdur:117", 0, 10);
+ assertEquals(1, res.getTotalHits());
+ assertEquals("7ca7782b-a602-448b-b108-bb881a7be2d6", getRecordingId(res.results.get(0).getDoc()));
+ }
- @Test
- public void testFindRecordingByQdur() throws Exception {
- Results res = ss.search("qdur:117", 0, 10);
- assertEquals(1, res.getTotalHits());
- Result result = res.results.get(0);
- MbDocument doc = result.getDoc();
- assertEquals("7ca7782b-a602-448b-b108-bb881a7be2d6", doc.get(RecordingIndexField.RECORDING_ID));
- assertEquals("1d9e8ed6-3893-4d3b-aa7d-6cd79609e386", doc.get(RecordingIndexField.RELEASE_ID));
- assertEquals("Our Glorious 5 Year Plan", doc.get(RecordingIndexField.RELEASE));
- assertEquals(5, NumericUtils.prefixCodedToInt(new BytesRef(doc.get(RecordingIndexField.TRACKNUM))));
- assertEquals("Our Glorious 5 Year Plan", doc.get(RecordingIndexField.RELEASE));
- assertEquals(234000, NumericUtils.prefixCodedToInt(new BytesRef(doc.get(RecordingIndexField.DURATION))));
- }
+ @Test
+ public void testFindRecordingByTrackPosition() throws Exception {
+ Results res = ss.search("tnum:5", 0, 10);
+ assertEquals(1, res.getTotalHits());
+ assertEquals("7ca7782b-a602-448b-b108-bb881a7be2d6", getRecordingId(res.results.get(0).getDoc()));
+ }
- @Test
- public void testFindRecordingByTrackPosition() throws Exception {
- Results res = ss.search("tnum:5", 0, 10);
- assertEquals(1, res.getTotalHits());
- Result result = res.results.get(0);
- MbDocument doc = result.getDoc();
- assertEquals("7ca7782b-a602-448b-b108-bb881a7be2d6", doc.get(RecordingIndexField.RECORDING_ID));
- assertEquals("1d9e8ed6-3893-4d3b-aa7d-6cd79609e386", doc.get(RecordingIndexField.RELEASE_ID));
- assertEquals(5, NumericUtils.prefixCodedToInt(new BytesRef(doc.get(RecordingIndexField.TRACKNUM))));
- assertEquals("Our Glorious 5 Year Plan", doc.get(RecordingIndexField.RELEASE));
- assertEquals(234000, NumericUtils.prefixCodedToInt(new BytesRef(doc.get(RecordingIndexField.DURATION))));
- }
+ @Test
+ public void testFindRecordingByTrackNumber() throws Exception {
+ Results res = ss.search("number:A4", 0, 10);
+ assertEquals(1, res.getTotalHits());
+ assertEquals("7ca7782b-a602-448b-b108-bb881a7be2d6", getRecordingId(res.results.get(0).getDoc()));
+ }
- @Test
- public void testFindRecordingByTrackNumber() throws Exception {
- Results res = ss.search("number:A4", 0, 10);
- assertEquals(1, res.getTotalHits());
- Result result = res.results.get(0);
- MbDocument doc = result.getDoc();
- assertEquals("7ca7782b-a602-448b-b108-bb881a7be2d6", doc.get(RecordingIndexField.RECORDING_ID));
- assertEquals("1d9e8ed6-3893-4d3b-aa7d-6cd79609e386", doc.get(RecordingIndexField.RELEASE_ID));
- assertEquals(5, NumericUtils.prefixCodedToInt(new BytesRef(doc.get(RecordingIndexField.TRACKNUM))));
- assertEquals("Our Glorious 5 Year Plan", doc.get(RecordingIndexField.RELEASE));
- assertEquals(234000, NumericUtils.prefixCodedToInt(new BytesRef(doc.get(RecordingIndexField.DURATION))));
- }
+ @Test
+ public void testFindRecordingByPosition() throws Exception {
+ Results res = ss.search("position:1", 0, 10);
+ assertEquals(1, res.getTotalHits());
+ assertEquals("7ca7782b-a602-448b-b108-bb881a7be2d6", getRecordingId(res.results.get(0).getDoc()));
+ }
- @Test
- public void testFindRecordingByPosition() throws Exception {
- Results res = ss.search("position:1", 0, 10);
- assertEquals(1, res.getTotalHits());
- Result result = res.results.get(0);
- MbDocument doc = result.getDoc();
- assertEquals("7ca7782b-a602-448b-b108-bb881a7be2d6", doc.get(RecordingIndexField.RECORDING_ID));
- assertEquals("1d9e8ed6-3893-4d3b-aa7d-6cd79609e386", doc.get(RecordingIndexField.RELEASE_ID));
- assertEquals(5, NumericUtils.prefixCodedToInt(new BytesRef(doc.get(RecordingIndexField.TRACKNUM))));
- assertEquals("Our Glorious 5 Year Plan", doc.get(RecordingIndexField.RELEASE));
- assertEquals(234000, NumericUtils.prefixCodedToInt(new BytesRef(doc.get(RecordingIndexField.DURATION))));
- }
+ @Test
+ public void testFindRecordingByReleaseStatus() throws Exception {
+ Results res = ss.search("status:Official", 0, 10);
+ assertEquals(1, res.getTotalHits());
+ assertEquals("7ca7782b-a602-448b-b108-bb881a7be2d6", getRecordingId(res.results.get(0).getDoc()));
+ }
- @Test
- public void testFindRecordingByReleaseStatus() 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("7ca7782b-a602-448b-b108-bb881a7be2d6", doc.get(RecordingIndexField.RECORDING_ID));
- assertEquals("1d9e8ed6-3893-4d3b-aa7d-6cd79609e386", doc.get(RecordingIndexField.RELEASE_ID));
- assertEquals(5, NumericUtils.prefixCodedToInt(new BytesRef(doc.get(RecordingIndexField.TRACKNUM))));
- assertEquals("Our Glorious 5 Year Plan", doc.get(RecordingIndexField.RELEASE));
- assertEquals(234000, NumericUtils.prefixCodedToInt(new BytesRef(doc.get(RecordingIndexField.DURATION))));
- }
+ @Test
+ public void testFindRecordingByReleaseDate() throws Exception {
+ Results res = ss.search("date:1970-01-01", 0, 10);
+ assertEquals(1, res.getTotalHits());
+ assertEquals("7ca7782b-a602-448b-b108-bb881a7be2d6", getRecordingId(res.results.get(0).getDoc()));
+ }
- @Test
- public void testFindRecordingByReleaseDate() throws Exception {
- Results res = ss.search("date:1970-01-01", 0, 10);
- assertEquals(1, res.getTotalHits());
- Result result = res.results.get(0);
- MbDocument doc = result.getDoc();
- assertEquals("7ca7782b-a602-448b-b108-bb881a7be2d6", doc.get(RecordingIndexField.RECORDING_ID));
- assertEquals("1d9e8ed6-3893-4d3b-aa7d-6cd79609e386", doc.get(RecordingIndexField.RELEASE_ID));
- assertEquals(5, NumericUtils.prefixCodedToInt(new BytesRef(doc.get(RecordingIndexField.TRACKNUM))));
- assertEquals("Our Glorious 5 Year Plan", doc.get(RecordingIndexField.RELEASE));
- assertEquals(234000, NumericUtils.prefixCodedToInt(new BytesRef(doc.get(RecordingIndexField.DURATION))));
- }
+ @Test
+ public void testFindRecordingByDefault() throws Exception {
+ Results res = ss.search("\"Gravitational Lenz\"", 0, 10);
+ assertEquals(1, res.getTotalHits());
+ assertEquals("7ca7782b-a602-448b-b108-bb881a7be2d6", getRecordingId(res.results.get(0).getDoc()));
+ }
- @Test
- public void testFindRecordingByDefault() throws Exception {
- Results res = ss.search("\"Gravitational Lenz\"", 0, 10);
- assertEquals(1, res.getTotalHits());
- Result result = res.results.get(0);
- MbDocument doc = result.getDoc();
- assertEquals("7ca7782b-a602-448b-b108-bb881a7be2d6", doc.get(RecordingIndexField.RECORDING_ID));
- assertEquals("1d9e8ed6-3893-4d3b-aa7d-6cd79609e386", doc.get(RecordingIndexField.RELEASE_ID));
- assertEquals("Our Glorious 5 Year Plan", doc.get(RecordingIndexField.RELEASE));
- assertEquals(5, NumericUtils.prefixCodedToInt(new BytesRef(doc.get(RecordingIndexField.TRACKNUM))));
- assertEquals("Our Glorious 5 Year Plan", doc.get(RecordingIndexField.RELEASE));
- assertEquals(234000, NumericUtils.prefixCodedToInt(new BytesRef(doc.get(RecordingIndexField.DURATION))));
- }
+ @Test
+ public void testNumericRangeQuery() throws Exception {
+ Results res = ss.search("tracks:[1 TO 10]", 0, 10);
+ assertEquals(1, res.getTotalHits());
+ assertEquals("7ca7782b-a602-448b-b108-bb881a7be2d6", getRecordingId(res.results.get(0).getDoc()));
+ }
- @Test
- public void testNumericRangeQuery() throws Exception {
- Results res = ss.search("tracks:[1 TO 10]", 0, 10);
- assertEquals(1, res.getTotalHits());
- }
+ @Test
+ public void testFindRecordingByPuid() throws Exception {
+ Results res = ss.search("puid:1d9e8ed6-3893-4d3b-aa7d-72e79609e386", 0, 10);
+ assertEquals(1, res.getTotalHits());
+ assertEquals("7ca7782b-a602-448b-b108-bb881a7be2d6", getRecordingId(res.results.get(0).getDoc()));
+ }
- @Test
- public void testFindRecordingByPuid() throws Exception {
- Results res = ss.search("puid:1d9e8ed6-3893-4d3b-aa7d-72e79609e386", 0, 10);
- assertEquals(1, res.getTotalHits());
- }
+ @Test
+ public void testOutputAsMmd1Xml() throws Exception {
- @Test
- public void testOutputAsMmd1Xml() throws Exception {
+ Results res = ss.search("track:\"Gravitational Lenz\"", 0, 10);
+ ResultsWriter writer = new TrackMmd1XmlWriter();
+ 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("<track id=\"7ca7782b-a602-448b-b108-bb881a7be2d6\""));
+ assertTrue(output.contains("<title>Gravitational Lenz</title>"));
+ assertTrue(output.contains("<duration>234000</duration>"));
+ assertTrue(output.contains("<artist id=\"4302e264-1cf0-4d1f-aca7-2a6f89e34b36\""));
+ assertTrue(output.contains("<name>Farming Incident</name>"));
+ assertTrue(output.contains("<sort-name>Incident, Farming</sort-name>"));
+ assertTrue(output.contains("type=\"Compilation\""));
+ assertTrue(output.contains("id=\"1d9e8ed6-3893-4d3b-aa7d-6cd79609e386"));
+ assertTrue(output.contains("<title>Our Glorious 5 Year Plan</title>"));
+ assertTrue(output.contains("offset=\"4\""));
+ assertTrue(output.contains("count=\"10\""));
+ }
- Results res = ss.search("track:\"Gravitational Lenz\"", 0, 10);
- ResultsWriter writer = new TrackMmd1XmlWriter();
- 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("<track id=\"7ca7782b-a602-448b-b108-bb881a7be2d6\""));
- assertTrue(output.contains("<title>Gravitational Lenz</title>"));
- assertTrue(output.contains("<duration>234000</duration>"));
- assertTrue(output.contains("<artist id=\"4302e264-1cf0-4d1f-aca7-2a6f89e34b36\""));
- assertTrue(output.contains("<name>Farming Incident</name>"));
- assertTrue(output.contains("<sort-name>Incident, Farming</sort-name>"));
- assertTrue(output.contains("type=\"Compilation\""));
- assertTrue(output.contains("id=\"1d9e8ed6-3893-4d3b-aa7d-6cd79609e386"));
- assertTrue(output.contains("<title>Our Glorious 5 Year Plan</title>"));
- assertTrue(output.contains("offset=\"4\""));
- assertTrue(output.contains("count=\"10\""));
- }
+ @Test
+ public void testOutputAsXml() throws Exception {
- @Test
- public void testOutputAsXml() throws Exception {
+ Results res = ss.search("recording:\"Gravitational Lenz\"", 0, 10);
+ ResultsWriter writer = ss.getMmd2Writer();
+ StringWriter sw = new StringWriter();
+ PrintWriter pr = new PrintWriter(sw);
+ writer.write(pr, res, SearchServerServlet.RESPONSE_XML);
+ 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=\"4444e264-1cf0-4d1f-aca7-2a6f89e34b36\""));
+ assertTrue(output.contains("id=\"7ca7782b-a602-448b-b108-bb881a7be2d6\""));
+ assertTrue(output.contains("<title>Gravitational Lenz</title>"));
+ assertTrue(output.contains("<disambiguation>demo</disambiguation>"));
+ assertTrue(output.contains("<length>234000</length>"));
+ assertTrue(output.contains("<artist id=\"4302e264-1cf0-4d1f-aca7-2a6f89e34b36\""));
+ assertTrue(output.contains("<name>Farming Incident</name>"));
+ assertTrue(output.contains("<sort-name>Incident, Farming</sort-name>"));
+ assertTrue(output.contains("release id=\"1d9e8ed6-3893-4d3b-aa7d-6cd79609e386\""));
+ assertTrue(output.contains("type=\"Compilation\""));
+ assertTrue(output.contains("<primary-type>Album"));
+ assertTrue(output.contains("<secondary-type>Compilation"));
+ assertTrue(output.contains("offset=\"4\""));
+ assertTrue(output.contains("count=\"10\""));
+ assertTrue(output.contains("offset=\"0\""));
+ assertTrue(output.contains("count=\"1\""));
- Results res = ss.search("recording:\"Gravitational Lenz\"", 0, 10);
- ResultsWriter writer = ss.getMmd2Writer();
- StringWriter sw = new StringWriter();
- PrintWriter pr = new PrintWriter(sw);
- writer.write(pr, res,SearchServerServlet.RESPONSE_XML);
- 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=\"4444e264-1cf0-4d1f-aca7-2a6f89e34b36\""));
- assertTrue(output.contains("id=\"7ca7782b-a602-448b-b108-bb881a7be2d6\""));
- assertTrue(output.contains("<title>Gravitational Lenz</title>"));
- assertTrue(output.contains("<disambiguation>demo</disambiguation>"));
- assertTrue(output.contains("<length>234000</length>"));
- assertTrue(output.contains("<artist id=\"4302e264-1cf0-4d1f-aca7-2a6f89e34b36\""));
- assertTrue(output.contains("<name>Farming Incident</name>"));
- assertTrue(output.contains("<sort-name>Incident, Farming</sort-name>"));
- assertTrue(output.contains("release id=\"1d9e8ed6-3893-4d3b-aa7d-6cd79609e386\""));
- assertTrue(output.contains("type=\"Compilation\""));
- assertTrue(output.contains("<primary-type>Album"));
- assertTrue(output.contains("<secondary-type>Compilation"));
- assertTrue(output.contains("offset=\"4\""));
- assertTrue(output.contains("count=\"10\""));
- assertTrue(output.contains("offset=\"0\""));
- assertTrue(output.contains("count=\"1\""));
- assertTrue(output.contains("<country>UK</country>"));
- assertTrue(output.contains("<format>Vinyl</format>"));
- assertTrue(output.contains("<isrc id=\"123456789\"/>"));
- assertTrue(output.contains("<isrc id=\"abcdefghi\"/>"));
- assertTrue(output.contains("<primary-type>Album</primary-type>"));
- assertTrue(output.contains("<title>Gravitational Lens</title>"));
- assertTrue(output.contains("<status>Official</status>"));
- assertTrue(output.contains("<date>1970-01-01</date>"));
- assertTrue(output.contains("<track-count>10</track-count>"));
- assertTrue(output.contains("<artist-credit><name-credit><artist id=\"89ad4ac3-39f7-470e-963a-56509c546377\"><name>Various Artists</name></artist></name-credit></artist-credit>"));
- assertTrue(output.contains("indie</name>"));
- assertTrue(output.contains("<track><number>A4</number><title>Gravitational Lens</title><length>233000</length><artist-credit><name-credit><artist id=\"2302e264-1cf0-4d1f-aca7-2a6f89e34b36\"><name>Pig Incident</name><sort-name>Incident, Pig</sort-name></artist></name-credit></artist-credit></track>"));
- assertTrue(output.contains("<puid-list><puid id=\"1d9e8ed6-3893-4d3b-aa7d-72e79609e386\"/></puid-list>"));
- }
+ assertTrue(output.contains("<country>UK</country>"));
+ assertTrue(output.contains("<format>Vinyl</format>"));
+ assertTrue(output.contains("<isrc id=\"123456789\"/>"));
+ assertTrue(output.contains("<isrc id=\"abcdefghi\"/>"));
+ assertTrue(output.contains("<primary-type>Album</primary-type>"));
+ assertTrue(output.contains("<title>Gravitational Lens</title>"));
+ assertTrue(output.contains("<status>Official</status>"));
+ assertTrue(output.contains("<date>1970-01-01</date>"));
+ assertTrue(output.contains("<track-count>10</track-count>"));
+ assertTrue(output.contains("<artist-credit><name-credit><artist id=\"89ad4ac3-39f7-470e-963a-56509c546377\"><name>Various Artists</name></artist></name-credit></artist-credit>"));
+ assertTrue(output.contains("indie</name>"));
+ assertTrue(output.contains("<track><number>A4</number><title>Gravitational Lens</title><length>233000</length><artist-credit><name-credit><artist id=\"2302e264-1cf0-4d1f-aca7-2a6f89e34b36\"><name>Pig Incident</name><sort-name>Incident, Pig</sort-name></artist></name-credit></artist-credit></track>"));
+ assertTrue(output.contains("<puid-list><puid id=\"1d9e8ed6-3893-4d3b-aa7d-72e79609e386\"/></puid-list>"));
+ }
- @Test
- public void testOutputJson() throws Exception {
+ @Test
+ public void testOutputJson() throws Exception {
- Results res = ss.search("recording:\"Gravitational Lenz\"", 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("recording:\"Gravitational Lenz\"", 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\":\"7ca7782b-a602-448b-b108-bb881a7be2d6\""));
- assertTrue(output.contains("\"count\":1"));
- assertTrue(output.contains("\"offset\":0,"));
- assertTrue(output.contains("\"score\":\"100\""));
- assertTrue(output.contains("\"type\":\"Compilation\""));
- assertTrue(output.contains("title\":\"Gravitational Lenz\""));
- assertTrue(output.contains("\"length\":234000"));
- assertTrue(output.contains("\"isrc\":[{\"id\":\"123456789"));
- assertTrue(output.contains("\"position\":1"));
- assertTrue(output.contains("\"status\":\"Official\""));
- assertTrue(output.contains("\"track-count\":10"));
- assertTrue(output.contains("format\":\"Vinyl\""));
- assertTrue(output.contains("country\":\"UK\""));
- assertTrue(output.contains("\"primary-type\":\"Album\""));
- assertTrue(output.contains("{\"secondary-type\":[\"Compilation\"]}}"));
- assertTrue(output.contains("\"tag\":[{\"count\":101,\"name\":\"indie\"}"));
- assertTrue(output.contains("\"puid-list\":{\"puid\":[{\"id\":\"1d9e8ed6-3893-4d3b-aa7d-72e79609e386\"}]}"));
- assertTrue(output.contains("\"artist-credit\":{\"name-credit\":[{\"artist\":{\"id\":\"89ad4ac3-39f7-470e-963a-56509c546377\",\"name\":\"Various Artists\"}"));
- }
+ assertTrue(output.contains("id\":\"7ca7782b-a602-448b-b108-bb881a7be2d6\""));
+ assertTrue(output.contains("\"count\":1"));
+ assertTrue(output.contains("\"offset\":0,"));
+ assertTrue(output.contains("\"score\":\"100\""));
+ assertTrue(output.contains("\"type\":\"Compilation\""));
+ assertTrue(output.contains("title\":\"Gravitational Lenz\""));
+ assertTrue(output.contains("\"length\":234000"));
+ assertTrue(output.contains("\"isrc\":[{\"id\":\"123456789"));
+ assertTrue(output.contains("\"position\":1"));
+ assertTrue(output.contains("\"status\":\"Official\""));
+ assertTrue(output.contains("\"track-count\":10"));
+ assertTrue(output.contains("format\":\"Vinyl\""));
+ assertTrue(output.contains("country\":\"UK\""));
+ assertTrue(output.contains("\"primary-type\":\"Album\""));
+ assertTrue(output.contains("{\"secondary-type\":[\"Compilation\"]}}"));
+ assertTrue(output.contains("\"tag\":[{\"count\":101,\"name\":\"indie\"}"));
+ assertTrue(output.contains("\"puid-list\":{\"puid\":[{\"id\":\"1d9e8ed6-3893-4d3b-aa7d-72e79609e386\"}]}"));
+ assertTrue(output.contains("\"artist-credit\":{\"name-credit\":[{\"artist\":{\"id\":\"89ad4ac3-39f7-470e-963a-56509c546377\",\"name\":\"Various Artists\"}"));
+ }
- @Test
- public void testOutputJsonNew() throws Exception {
+ @Test
+ public void testOutputJsonNew() throws Exception {
- Results res = ss.search("recording:\"Gravitational Lenz\"", 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("recording:\"Gravitational Lenz\"", 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\":\"7ca7782b-a602-448b-b108-bb881a7be2d6\""));
- assertTrue(output.contains("\"score\":\"100\""));
- assertTrue(output.contains("title\":\"Gravitational Lenz\""));
- assertTrue(output.contains("\"isrcs\":[{\"id\":\"123456789"));
- assertTrue(output.contains("\"status\":\"Official\""));
- assertTrue(output.contains("format\":\"Vinyl\""));
- assertTrue(output.contains("\"position\":1,\"format\":\"Vinyl\""));
- assertTrue(output.contains("\"releases\":[{\"id\":\"1d9e8ed6-3893-4d3b-aa7d-6cd79609e386\""));
- assertTrue(output.contains("country\":\"UK\""));
- assertTrue(output.contains("\"primary-type\":\"Album\""));
- assertTrue(output.contains("\"secondary-types\":[\"Compilation\"]}"));
- assertTrue(output.contains("\"tags\":[{\"count\":101,\"name\":\"indie\"}"));
- assertTrue(output.contains("puids\":[{\"id\":\"1d9e8ed6-3893-4d3b-aa7d-72e79609e386\"}"));
- assertTrue(output.contains("\"artist-credit\":[{\"artist\":{\"id\":\"89ad4ac3-39f7-470e-963a-56509c546377\",\"name\":\"Various Artists\"}}"));
- assertTrue(output.contains("\"count\":1"));
- assertTrue(output.contains("\"offset\":0,"));
- assertTrue(output.contains("\"length\":234000"));
- assertTrue(output.contains("\"position\":1"));
- assertTrue(output.contains("\"track-count\":10"));
+ assertTrue(output.contains("id\":\"7ca7782b-a602-448b-b108-bb881a7be2d6\""));
+ assertTrue(output.contains("\"score\":\"100\""));
+ assertTrue(output.contains("title\":\"Gravitational Lenz\""));
+ assertTrue(output.contains("\"isrcs\":[{\"id\":\"123456789"));
+ assertTrue(output.contains("\"status\":\"Official\""));
+ assertTrue(output.contains("format\":\"Vinyl\""));
+ assertTrue(output.contains("\"position\":1,\"format\":\"Vinyl\""));
+ assertTrue(output.contains("\"releases\":[{\"id\":\"1d9e8ed6-3893-4d3b-aa7d-6cd79609e386\""));
+ assertTrue(output.contains("country\":\"UK\""));
+ assertTrue(output.contains("\"primary-type\":\"Album\""));
+ assertTrue(output.contains("\"secondary-types\":[\"Compilation\"]}"));
+ assertTrue(output.contains("\"tags\":[{\"count\":101,\"name\":\"indie\"}"));
+ assertTrue(output.contains("puids\":[{\"id\":\"1d9e8ed6-3893-4d3b-aa7d-72e79609e386\"}"));
+ assertTrue(output.contains("\"artist-credit\":[{\"artist\":{\"id\":\"89ad4ac3-39f7-470e-963a-56509c546377\",\"name\":\"Various Artists\"}}"));
+ assertTrue(output.contains("\"count\":1"));
+ assertTrue(output.contains("\"offset\":0,"));
+ assertTrue(output.contains("\"length\":234000"));
+ assertTrue(output.contains("\"position\":1"));
+ assertTrue(output.contains("\"track-count\":10"));
- }
+ }
- @Test
- public void testOutputJsonNewPretty() throws Exception {
+ @Test
+ public void testOutputJsonNewPretty() throws Exception {
- Results res = ss.search("recording:\"Gravitational Lenz\"", 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("recording:\"Gravitational Lenz\"", 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("\"offset\" : 0"));
- }
+ String output = sw.toString();
+ System.out.println("Json New Pretty is" + output);
+ assertTrue(output.contains("\"offset\" : 0"));
+ }
}
Modified: search_server/trunk/servlet/src/test/java/org/musicbrainz/search/servlet/IssueSearch167RecordingTest.java
===================================================================
--- search_server/trunk/servlet/src/test/java/org/musicbrainz/search/servlet/IssueSearch167RecordingTest.java 2013-05-01 10:22:17 UTC (rev 13670)
+++ search_server/trunk/servlet/src/test/java/org/musicbrainz/search/servlet/IssueSearch167RecordingTest.java 2013-05-01 15:40:23 UTC (rev 13671)
@@ -45,9 +45,7 @@
doc.addField(RecordingIndexField.COMMENT, "the real one");
doc.addField(RecordingIndexField.COUNTRY, "AF");
doc.addField(RecordingIndexField.TAG, "thrash");
- doc.addField(RecordingIndexField.TAGCOUNT, "5");
doc.addField(RecordingIndexField.TAG, "güth");
- doc.addField(RecordingIndexField.TAGCOUNT, "11");
writer.addDocument(doc.getLuceneDocument());
}
@@ -59,9 +57,7 @@
doc.addField(RecordingIndexField.COMMENT, "the real one");
doc.addField(RecordingIndexField.COUNTRY, "AF");
doc.addField(RecordingIndexField.TAG, "thrash");
- doc.addField(RecordingIndexField.TAGCOUNT, "5");
doc.addField(RecordingIndexField.TAG, "güth");
- doc.addField(RecordingIndexField.TAGCOUNT, "11");
writer.addDocument(doc.getLuceneDocument());
}
@@ -73,9 +69,7 @@
doc.addField(RecordingIndexField.COMMENT, "the real one");
doc.addField(RecordingIndexField.COUNTRY, "AF");
doc.addField(RecordingIndexField.TAG, "thrash");
- doc.addField(RecordingIndexField.TAGCOUNT, "5");
doc.addField(RecordingIndexField.TAG, "güth");
- doc.addField(RecordingIndexField.TAGCOUNT, "11");
writer.addDocument(doc.getLuceneDocument());
}
@@ -87,9 +81,7 @@
doc.addField(RecordingIndexField.COMMENT, "the real one");
doc.addField(RecordingIndexField.COUNTRY, "AF");
doc.addField(RecordingIndexField.TAG, "thrash");
- doc.addField(RecordingIndexField.TAGCOUNT, "5");
doc.addField(RecordingIndexField.TAG, "güth");
- doc.addField(RecordingIndexField.TAGCOUNT, "11");
writer.addDocument(doc.getLuceneDocument());
}
@@ -101,9 +93,7 @@
doc.addField(RecordingIndexField.COMMENT, "the real one");
doc.addField(RecordingIndexField.COUNTRY, "AF");
doc.addField(RecordingIndexField.TAG, "thrash");
- doc.addField(RecordingIndexField.TAGCOUNT, "5");
doc.addField(RecordingIndexField.TAG, "güth");
- doc.addField(RecordingIndexField.TAGCOUNT, "11");
writer.addDocument(doc.getLuceneDocument());
}
@@ -115,9 +105,7 @@
doc.addField(RecordingIndexField.COMMENT, "the real one");
doc.addField(RecordingIndexField.COUNTRY, "AF");
doc.addField(RecordingIndexField.TAG, "thrash");
- doc.addField(RecordingIndexField.TAGCOUNT, "5");
doc.addField(RecordingIndexField.TAG, "güth");
- doc.addField(RecordingIndexField.TAGCOUNT, "11");
writer.addDocument(doc.getLuceneDocument());
}
Modified: search_server/trunk/servlet/src/test/java/org/musicbrainz/search/servlet/IssueSearch240Test.java
===================================================================
--- search_server/trunk/servlet/src/test/java/org/musicbrainz/search/servlet/IssueSearch240Test.java 2013-05-01 10:22:17 UTC (rev 13670)
+++ search_server/trunk/servlet/src/test/java/org/musicbrainz/search/servlet/IssueSearch240Test.java 2013-05-01 15:40:23 UTC (rev 13671)
@@ -51,7 +51,6 @@
MbDocument doc = new MbDocument();
doc.addField(RecordingIndexField.RECORDING_ID, "7ca7782b-a602-448b-b108-bb881a7be2d6");
doc.addField(RecordingIndexField.RECORDING, "I Don\u001at Dance");
- doc.addField(RecordingIndexField.RECORDING_OUTPUT, "I Don\u001at Dance");
doc.addField(RecordingIndexField.RELEASE_ID, "1d9e8ed6-3893-4d3b-aa7d-6cd79609e386");
doc.addField(RecordingIndexField.RELEASE, "Our Glorious 5 Year Plan");
doc.addField(RecordingIndexField.ARTIST_ID, "4302e264-1cf0-4d1f-aca7-2a6f89e34b36");
@@ -81,17 +80,14 @@
artist.setSortName("Incident, Pig");
nc.setArtist(artist);
ac.getNameCredit().add(nc);
- doc.addField(RecordingIndexField.TRACK_ARTIST_CREDIT, MMDSerializer.serialize(ac));
doc.addNumericField(RecordingIndexField.DURATION, 234000);
- doc.addNumericField(RecordingIndexField.RECORDING_DURATION_OUTPUT, 234000);
doc.addNumericField(RecordingIndexField.QUANTIZED_DURATION, (234000 / 2000));
doc.addNumericField(RecordingIndexField.NUM_TRACKS,10);
doc.addNumericField(RecordingIndexField.NUM_TRACKS_RELEASE,10);
doc.addNumericField(RecordingIndexField.TRACKNUM, 5);
doc.addField(RecordingIndexField.NUMBER, "A4");
- doc.addField(RecordingIndexField.TRACK_OUTPUT, "Gravitational Lens");
doc.addField(RecordingIndexField.RECORDING, "Gravitational Lens");
doc.addField(RecordingIndexField.RELEASEGROUP_ID, "4444e264-1cf0-4d1f-aca7-2a6f89e34b36");
@@ -102,17 +98,14 @@
SecondaryTypeList stl = of.createSecondaryTypeList();
stl.getSecondaryType().add("Compilation");
- doc.addField(RecordingIndexField.SECONDARY_TYPE_OUTPUT, MMDSerializer.serialize(stl));
doc.addField(RecordingIndexField.RELEASE_STATUS, "Official");
doc.addField(RecordingIndexField.RELEASE_DATE, "1970-01-01");
doc.addField(RecordingIndexField.ISRC, "123456789");
doc.addField(RecordingIndexField.ISRC, "abcdefghi");
doc.addNumericField(RecordingIndexField.DURATION, 233000);
- doc.addNumericField(RecordingIndexField.TRACK_DURATION_OUTPUT, 233000);
doc.addField(RecordingIndexField.TAG, "indie");
- doc.addField(RecordingIndexField.TAGCOUNT, "101");
doc.addField(RecordingIndexField.RELEASE_AC_VA,"1");
writer.addDocument(doc.getLuceneDocument());
_______________________________________________
MusicBrainz-commits mailing list
[email protected]
http://lists.musicbrainz.org/mailman/listinfo/musicbrainz-commits