[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