[mb-commits] r13637 - in search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet: . mmd1 mmd2
[email protected] Wed, 27 Feb 2013 15:44:08 +0000
| Newsgroups | gmane.comp.audio.musicbrainz.cvs |
|---|---|
| Message-ID | <E1UAjAu-0004Ah-0L@wiley> |
Author: ijabz
Date: 2013-02-27 15:42:53 +0000 (Wed, 27 Feb 2013)
New Revision: 13637
Modified:
search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/AbstractSearchServer.java
search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/Results.java
search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/ResultsWriter.java
search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd1/ArtistMmd1XmlWriter.java
search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd1/LabelMmd1XmlWriter.java
search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd1/ReleaseGroupMmd1XmlWriter.java
search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd1/ReleaseMmd1XmlWriter.java
search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd1/TrackMmd1XmlWriter.java
search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd2/AllWriter.java
search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd2/AnnotationWriter.java
search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd2/ArtistWriter.java
search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd2/CDStubWriter.java
search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd2/FreeDBWriter.java
search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd2/LabelWriter.java
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/ReleaseGroupWriter.java
search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd2/ReleaseWriter.java
search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd2/ResultsWriter.java
search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd2/TagWriter.java
search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd2/WorkWriter.java
Log:
#SEARCH-77:Normalize results over each entity, rather than within each entity
Modified: search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/AbstractSearchServer.java
===================================================================
--- search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/AbstractSearchServer.java 2013-02-27 11:15:57 UTC (rev 13636)
+++ search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/AbstractSearchServer.java 2013-02-27 15:42:53 UTC (rev 13637)
@@ -241,11 +241,11 @@
results.offset = offset;
results.totalHits = topDocs.totalHits;
ScoreDoc docs[] = topDocs.scoreDocs;
- float maxScore = topDocs.getMaxScore();
+ results.maxScore=topDocs.getMaxScore();
for (int i = offset; i < docs.length; i++) {
- Result result = new Result();
- result.score = docs[i].score / maxScore;
- result.doc = new MbDocument(searcher.doc(docs[i].doc));
+ Result result = new Result();
+ result.score = docs[i].score;
+ result.doc = new MbDocument(searcher.doc(docs[i].doc));
results.results.add(result);
}
return results;
Modified: search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/Results.java
===================================================================
--- search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/Results.java 2013-02-27 11:15:57 UTC (rev 13636)
+++ search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/Results.java 2013-02-27 15:42:53 UTC (rev 13637)
@@ -31,8 +31,12 @@
import java.util.LinkedList;
import java.util.List;
-public class Results {
+/**
+ * Store the results of a search
+ */
+public class Results implements Comparable<Results>{
+ public float maxScore;
public int offset;
public int totalHits;
public List<Result> results;
@@ -41,4 +45,9 @@
results = new LinkedList<Result>();
}
+ public int compareTo(Results results)
+ {
+ return Float.compare(maxScore,results.maxScore);
+ }
+
}
Modified: search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/ResultsWriter.java
===================================================================
--- search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/ResultsWriter.java 2013-02-27 11:15:57 UTC (rev 13636)
+++ search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/ResultsWriter.java 2013-02-27 15:42:53 UTC (rev 13637)
@@ -77,4 +77,10 @@
{
return serverLastUpdatedDate;
}
+
+ protected String calculateNormalizedScore(Result result, float maxScore)
+ {
+ return String.valueOf((int)(((float)(result.score / maxScore)) * 100));
+ }
+
}
Modified: search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd1/ArtistMmd1XmlWriter.java
===================================================================
--- search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd1/ArtistMmd1XmlWriter.java 2013-02-27 11:15:57 UTC (rev 13636)
+++ search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd1/ArtistMmd1XmlWriter.java 2013-02-27 15:42:53 UTC (rev 13637)
@@ -60,8 +60,9 @@
artist.setType(StringUtils.capitalize(artype));
}
- artist.getOtherAttributes().put(getScore(), String.valueOf((int) (result.score * 100)));
+ artist.getOtherAttributes().put(getScore(), calculateNormalizedScore(result, results.maxScore));
+
String name = doc.get(ArtistIndexField.ARTIST);
if (name != null) {
artist.setName(name);
Modified: search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd1/LabelMmd1XmlWriter.java
===================================================================
--- search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd1/LabelMmd1XmlWriter.java 2013-02-27 11:15:57 UTC (rev 13636)
+++ search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd1/LabelMmd1XmlWriter.java 2013-02-27 15:42:53 UTC (rev 13637)
@@ -57,7 +57,7 @@
label.setType(StringUtils.capitalize(doc.get(LabelIndexField.TYPE)));
}
- label.getOtherAttributes().put(getScore(), String.valueOf((int) (result.score * 100)));
+ label.getOtherAttributes().put(getScore(), calculateNormalizedScore(result, results.maxScore));
String name = doc.get(LabelIndexField.LABEL);
if (name != null) {
Modified: search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd1/ReleaseGroupMmd1XmlWriter.java
===================================================================
--- search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd1/ReleaseGroupMmd1XmlWriter.java 2013-02-27 11:15:57 UTC (rev 13636)
+++ search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd1/ReleaseGroupMmd1XmlWriter.java 2013-02-27 15:42:53 UTC (rev 13637)
@@ -55,7 +55,7 @@
ReleaseGroup releaseGroup = of.createReleaseGroup();
releaseGroup.setId(doc.get(ReleaseGroupIndexField.RELEASEGROUP_ID));
- releaseGroup.getOtherAttributes().put(getScore(), String.valueOf((int) (result.score * 100)));
+ releaseGroup.getOtherAttributes().put(getScore(), calculateNormalizedScore(result, results.maxScore));
String name = doc.get(ReleaseGroupIndexField.RELEASEGROUP);
if (name != null) {
Modified: search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd1/ReleaseMmd1XmlWriter.java
===================================================================
--- search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd1/ReleaseMmd1XmlWriter.java 2013-02-27 11:15:57 UTC (rev 13636)
+++ search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd1/ReleaseMmd1XmlWriter.java 2013-02-27 15:42:53 UTC (rev 13637)
@@ -69,7 +69,7 @@
}
}
- release.getOtherAttributes().put(getScore(), String.valueOf((int) (result.score * 100)));
+ release.getOtherAttributes().put(getScore(), calculateNormalizedScore(result, results.maxScore));
String name = doc.get(ReleaseIndexField.RELEASE);
if (name != null) {
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-02-27 11:15:57 UTC (rev 13636)
+++ search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd1/TrackMmd1XmlWriter.java 2013-02-27 15:42:53 UTC (rev 13637)
@@ -58,7 +58,7 @@
track.setId(doc.get(RecordingIndexField.RECORDING_ID));
- track.getOtherAttributes().put(getScore(), String.valueOf((int) (result.score * 100)));
+ track.getOtherAttributes().put(getScore(), calculateNormalizedScore(result, results.maxScore));
String name = doc.get(RecordingIndexField.RECORDING_OUTPUT);
Modified: search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd2/AllWriter.java
===================================================================
--- search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd2/AllWriter.java 2013-02-27 11:15:57 UTC (rev 13636)
+++ search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd2/AllWriter.java 2013-02-27 15:42:53 UTC (rev 13637)
@@ -5,6 +5,9 @@
import org.musicbrainz.search.servlet.Results;
import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
/**
* Take the output from multiple results sets and merged into single output
@@ -37,7 +40,24 @@
public void write(Metadata metadata, Results results) throws IOException {
}
+
public Metadata write(Results results) throws IOException {
+
+ //Sort by best max score, then set this as the max score for each entity
+ List<Results> resultsList = new ArrayList<Results>();
+ resultsList.add(artistResults);
+ resultsList.add(releaseResults);
+ resultsList.add(releaseGroupResults);
+ resultsList.add(labelResults);
+ resultsList.add(recordingResults);
+ resultsList.add(workResults);
+ Collections.sort(resultsList);
+ Collections.reverse(resultsList);
+ float bestMaxScore=resultsList.get(0).maxScore;
+ for(Results next:resultsList)
+ {
+ next.maxScore=bestMaxScore;
+ }
ObjectFactory of = new ObjectFactory();
Metadata metadata = of.createMetadata();
Modified: search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd2/AnnotationWriter.java
===================================================================
--- search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd2/AnnotationWriter.java 2013-02-27 11:15:57 UTC (rev 13636)
+++ search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd2/AnnotationWriter.java 2013-02-27 15:42:53 UTC (rev 13637)
@@ -57,7 +57,7 @@
annotation.setText(doc.get(AnnotationIndexField.TEXT));
annotation.setType(doc.get(AnnotationIndexField.TYPE));
annotation.setEntity(doc.get(AnnotationIndexField.ENTITY));
- annotation.setScore(String.valueOf((int)(result.score * 100)));
+ annotation.setScore(calculateNormalizedScore(result, results.maxScore));
annotationList.getAnnotation().add(annotation);
}
Modified: search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd2/ArtistWriter.java
===================================================================
--- search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd2/ArtistWriter.java 2013-02-27 11:15:57 UTC (rev 13636)
+++ search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd2/ArtistWriter.java 2013-02-27 15:42:53 UTC (rev 13637)
@@ -51,7 +51,7 @@
Artist artist = of.createArtist();
artist.setId(doc.get(ArtistIndexField.ARTIST_ID));
- artist.setScore(String.valueOf((int) (result.score * 100)));
+ artist.setScore(calculateNormalizedScore(result, results.maxScore));
String artype = doc.get(ArtistIndexField.TYPE);
if (isNotUnknown(artype)) {
Modified: search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd2/CDStubWriter.java
===================================================================
--- search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd2/CDStubWriter.java 2013-02-27 11:15:57 UTC (rev 13636)
+++ search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd2/CDStubWriter.java 2013-02-27 15:42:53 UTC (rev 13637)
@@ -103,8 +103,8 @@
cdstub.setTrackList(trackList);
}
- cdstub.setScore(String.valueOf((int)(result.score * 100)));
+ cdstub.setScore(calculateNormalizedScore(result, results.maxScore));
cdstubList.getCdstub().add(cdstub);
}
Modified: search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd2/FreeDBWriter.java
===================================================================
--- search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd2/FreeDBWriter.java 2013-02-27 11:15:57 UTC (rev 13636)
+++ search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd2/FreeDBWriter.java 2013-02-27 15:42:53 UTC (rev 13637)
@@ -58,7 +58,7 @@
freeDB.setId(doc.get(FreeDBIndexField.DISCID));
freeDB.setCategory(doc.get(FreeDBIndexField.CATEGORY));
freeDB.setYear(doc.get(FreeDBIndexField.YEAR));
- freeDB.setScore(String.valueOf((int)(result.score * 100)));
+ freeDB.setScore(calculateNormalizedScore(result, results.maxScore));
org.musicbrainz.mmd2.FreedbDisc.TrackList trackList = of.createFreedbDiscTrackList();
trackList.setCount(new BigInteger(doc.get(FreeDBIndexField.TRACKS)));
Modified: search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd2/LabelWriter.java
===================================================================
--- search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd2/LabelWriter.java 2013-02-27 11:15:57 UTC (rev 13636)
+++ search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd2/LabelWriter.java 2013-02-27 15:42:53 UTC (rev 13637)
@@ -57,11 +57,11 @@
if (isNotUnknown(type)){
label.setType(type);
}
- label.setScore(String.valueOf((int)(result.score * 100)));
+ label.setScore(calculateNormalizedScore(result, results.maxScore));
String name = doc.get(LabelIndexField.LABEL);
if (name != null) {
label.setName(name);
-}
+ }
String[] ipiCodes = doc.getValues(LabelIndexField.IPI);
if (ipiCodes.length > 0) {
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-02-27 11:15:57 UTC (rev 13636)
+++ search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd2/RecordingWriter.java 2013-02-27 15:42:53 UTC (rev 13637)
@@ -75,7 +75,7 @@
Recording recording = of.createRecording();
recording.setId(doc.get(RecordingIndexField.RECORDING_ID));
- recording.setScore(String.valueOf((int)(result.score * 100)));
+ recording.setScore(calculateNormalizedScore(result, results.maxScore));
String name = doc.get(RecordingIndexField.RECORDING_OUTPUT);
if (name != null) {
Modified: search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd2/ReleaseGroupWriter.java
===================================================================
--- search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd2/ReleaseGroupWriter.java 2013-02-27 11:15:57 UTC (rev 13636)
+++ search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd2/ReleaseGroupWriter.java 2013-02-27 15:42:53 UTC (rev 13637)
@@ -49,7 +49,7 @@
MbDocument doc = result.doc;
ReleaseGroup releaseGroup = of.createReleaseGroup();
releaseGroup.setId(doc.get(ReleaseGroupIndexField.RELEASEGROUP_ID));
- releaseGroup.setScore(String.valueOf((int)(result.score * 100)));
+ releaseGroup.setScore(calculateNormalizedScore(result, results.maxScore));
String name = doc.get(ReleaseGroupIndexField.RELEASEGROUP);
if (name != null) {
releaseGroup.setTitle(name);
Modified: search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd2/ReleaseWriter.java
===================================================================
--- search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd2/ReleaseWriter.java 2013-02-27 11:15:57 UTC (rev 13636)
+++ search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd2/ReleaseWriter.java 2013-02-27 15:42:53 UTC (rev 13637)
@@ -56,7 +56,7 @@
MbDocument doc = result.doc;
Release release = of.createRelease();
release.setId(doc.get(ReleaseIndexField.RELEASE_ID));
- release.setScore(String.valueOf((int)(result.score * 100)));
+ release.setScore(calculateNormalizedScore(result, results.maxScore));
String name = doc.get(ReleaseIndexField.RELEASE);
if (name != null) {
Modified: search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd2/ResultsWriter.java
===================================================================
--- search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd2/ResultsWriter.java 2013-02-27 11:15:57 UTC (rev 13636)
+++ search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd2/ResultsWriter.java 2013-02-27 15:42:53 UTC (rev 13637)
@@ -38,6 +38,7 @@
import org.musicbrainz.mmd2.Metadata;
import org.musicbrainz.mmd2.ObjectFactory;
import org.musicbrainz.search.servlet.ErrorMessage;
+import org.musicbrainz.search.servlet.Result;
import org.musicbrainz.search.servlet.Results;
import org.musicbrainz.search.servlet.SearchServerServlet;
@@ -216,4 +217,7 @@
}
}
+
+
+
}
\ No newline at end of file
Modified: search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd2/TagWriter.java
===================================================================
--- search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd2/TagWriter.java 2013-02-27 11:15:57 UTC (rev 13636)
+++ search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd2/TagWriter.java 2013-02-27 15:42:53 UTC (rev 13637)
@@ -50,7 +50,7 @@
MbDocument doc = result.doc;
Tag tag = of.createTag();
tag.setName(doc.get(TagIndexField.TAG));;
- tag.setScore(String.valueOf((int)(result.score * 100)));
+ tag.setScore(calculateNormalizedScore(result, results.maxScore));
tagList.getTag().add(tag);
}
tagList.setCount(BigInteger.valueOf(results.totalHits));
Modified: search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd2/WorkWriter.java
===================================================================
--- search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd2/WorkWriter.java 2013-02-27 11:15:57 UTC (rev 13636)
+++ search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd2/WorkWriter.java 2013-02-27 15:42:53 UTC (rev 13637)
@@ -49,7 +49,7 @@
MbDocument doc = result.doc;
Work work = of.createWork();
work.setId(doc.get(WorkIndexField.WORK_ID));
- work.setScore(String.valueOf((int)(result.score * 100)));
+ work.setScore(calculateNormalizedScore(result, results.maxScore));
String name = doc.get(WorkIndexField.WORK);
if (name != null) {