[mb-commits] r13676 - in search_server/trunk: index/src/main/java/org/musicbrainz/search/index index/src/test/java/org/musicbrainz/search/index servlet/src/test/java/org/musicbrainz/search/servlet
[email protected] Thu, 02 May 2013 16:10:44 +0000
| Newsgroups | gmane.comp.audio.musicbrainz.cvs |
|---|---|
| Message-ID | <E1UXw5k-0004pJ-4D@wiley> |
Author: ijabz
Date: 2013-05-02 16:10:43 +0000 (Thu, 02 May 2013)
New Revision: 13676
Modified:
search_server/trunk/index/src/main/java/org/musicbrainz/search/index/CommonTables.java
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/TrackWrapper.java
search_server/trunk/index/src/test/java/org/musicbrainz/search/index/RecordingIndexTest.java
search_server/trunk/servlet/src/test/java/org/musicbrainz/search/servlet/FindRecordingTest.java
Log:
SEARCH-285:Added support for searching recording index by trackid (fieldname:tid)
Modified: search_server/trunk/index/src/main/java/org/musicbrainz/search/index/CommonTables.java
===================================================================
--- search_server/trunk/index/src/main/java/org/musicbrainz/search/index/CommonTables.java 2013-05-02 15:26:25 UTC (rev 13675)
+++ search_server/trunk/index/src/main/java/org/musicbrainz/search/index/CommonTables.java 2013-05-02 16:10:43 UTC (rev 13676)
@@ -205,7 +205,7 @@
getDbConnection().createStatement().execute(
"CREATE TEMPORARY TABLE tmp_track AS " +
- "SELECT t.id, t.recording, t.length, tn.name as track_name, t.position as track_position, t.number as track_number, m.track_count, " +
+ "SELECT t.id, t.gid, t.recording, t.length, tn.name as track_name, t.position as track_position, t.number as track_number, m.track_count, " +
" m.release as release_id, m.position as medium_position, mf.name as format " +
" FROM track t " +
" INNER JOIN track_name tn ON t.name=tn.id" +
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-02 15:26:25 UTC (rev 13675)
+++ search_server/trunk/index/src/main/java/org/musicbrainz/search/index/RecordingIndex.java 2013-05-02 16:10:43 UTC (rev 13676)
@@ -126,7 +126,7 @@
" WHERE recording between ? AND ?");
addPreparedStatement("TRACKS",
- "SELECT id, track_name, length as duration, recording, track_position, track_number, track_count, " +
+ "SELECT id, gid, track_name, length as duration, recording, track_position, track_number, track_count, " +
" release_id, medium_position, format " +
" FROM tmp_track " +
" WHERE recording between ? AND ?");
@@ -138,7 +138,7 @@
" AND recording between ? AND ?");
addPreparedStatement("TRACKS",
- "SELECT t.id, tn.name as track_name, t.length as duration, t.recording, t.position as track_position, t.number as track_number, m.track_count, " +
+ "SELECT t.id, t.gid, tn.name as track_name, t.length as duration, t.recording, t.position as track_position, t.number as track_number, m.track_count, " +
" m.release as release_id, m.position as medium_position,mf.name as format " +
" FROM track t " +
" INNER JOIN track_name tn ON t.name=tn.id AND t.recording BETWEEN ? AND ?" +
@@ -425,6 +425,7 @@
}
TrackWrapper tw = new TrackWrapper();
tw.setTrackId(rs.getInt("id"));
+ tw.setTrackGuid(rs.getString("gid"));
tw.setReleaseId(rs.getInt("release_id"));
tw.setTrackCount(rs.getInt("track_count"));
tw.setTrackPosition(rs.getInt("track_position"));
@@ -742,6 +743,8 @@
releaseList.getRelease().add(release);
if (release != null) {
+
+ doc.addNonEmptyField(RecordingIndexField.TRACK_ID, trackWrapper.getTrackGuid());
ReleaseGroup rg = release.getReleaseGroup();
String primaryType = rg.getPrimaryType();
doc.addFieldOrUnknown(RecordingIndexField.RELEASEGROUP_ID, rg.getId());
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-02 15:26:25 UTC (rev 13675)
+++ search_server/trunk/index/src/main/java/org/musicbrainz/search/index/RecordingIndexField.java 2013-05-02 16:10:43 UTC (rev 13676)
@@ -45,6 +45,7 @@
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_ID ("tid", MusicBrainzFieldTypes.TEXT_STORED_NOT_ANALYZED_NO_NORMS, new KeywordAnalyzer()),
RECORDING_STORE ("recordingstore", MusicBrainzFieldTypes.TEXT_STORED_NOT_INDEXED),
Modified: search_server/trunk/index/src/main/java/org/musicbrainz/search/index/TrackWrapper.java
===================================================================
--- search_server/trunk/index/src/main/java/org/musicbrainz/search/index/TrackWrapper.java 2013-05-02 15:26:25 UTC (rev 13675)
+++ search_server/trunk/index/src/main/java/org/musicbrainz/search/index/TrackWrapper.java 2013-05-02 16:10:43 UTC (rev 13676)
@@ -5,6 +5,7 @@
*/
class TrackWrapper {
private int trackId;
+ private String trackGuid;
private int trackPosition;
private int trackCount;
private int releaseId;
@@ -86,4 +87,12 @@
public void setTrackNumber(String trackNumber) {
this.trackNumber = trackNumber;
}
+
+ public String getTrackGuid() {
+ return trackGuid;
+ }
+
+ public void setTrackGuid(String trackGuid) {
+ this.trackGuid = trackGuid;
+ }
}
\ No newline at end of file
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-02 15:26:25 UTC (rev 13675)
+++ search_server/trunk/index/src/test/java/org/musicbrainz/search/index/RecordingIndexTest.java 2013-05-02 16:10:43 UTC (rev 13676)
@@ -81,8 +81,8 @@
stmt.addBatch("INSERT INTO medium (id, track_count, release, position, format) VALUES (1, 2, 491240, 1, 7)");
- stmt.addBatch("INSERT INTO track (id, recording, medium, position, number, name, artist_credit, length) "
- + " VALUES (1, 1, 1, 4, 'A4', 2, 1, 33100)");
+ stmt.addBatch("INSERT INTO track (id, gid, recording, medium, position, number, name, artist_credit, length) "
+ + " VALUES (1, 'c3b8dbc9-c1ff-4743-9015-8d762819134e', 1, 1, 4, 'A4', 2, 1, 33100)");
stmt.addBatch("INSERT INTO recording (id, gid, name, artist_credit, length, comment)"
+ " VALUES (1, '2f250ed2-6285-40f1-aa2a-14f1c05e9765', 1, 1, 33000, 'demo')");
@@ -137,8 +137,8 @@
" language, script) " +
" VALUES (491240, 'c3b8dbc9-c1ff-4743-9015-8d762819134e', 2, 1, 491240, 1, 1, 1)");
stmt.addBatch("INSERT INTO medium (id, track_count, release, position, format) VALUES (1, 2, 491240, 1, 7)");
- stmt.addBatch("INSERT INTO track (id, recording, medium, position, name, artist_credit, length) "
- + " VALUES (1, 1, 1, 4, 1, 2, 33100)");
+ stmt.addBatch("INSERT INTO track (id, gid, recording, medium, position, name, artist_credit, length) "
+ + " VALUES (1, 'c3b8dbc9-c1ff-4743-9015-8d762819134e', 1, 1, 4, 1, 2, 33100)");
stmt.addBatch("INSERT INTO recording (id, gid, name, artist_credit, length)"
+ " VALUES (1, '2f250ed2-6285-40f1-aa2a-14f1c05e9765', 1, 1, 33000)");
stmt.addBatch("INSERT INTO track_name (id, name) VALUES (1, 'Do It Clean')");
@@ -177,8 +177,8 @@
" language, script) " +
" VALUES (491240, 'c3b8dbc9-c1ff-4743-9015-8d762819134e', 2, 1, 491240, 1, 1, 1, 1)");
stmt.addBatch("INSERT INTO medium (id, track_count, release, position, format, name) VALUES (1, 2, 491240, 1, 7, null)");
- stmt.addBatch("INSERT INTO track (id, recording, medium, position, name, artist_credit, length) "
- + " VALUES (1, 1, 1, 7, 2, 1, 33100)");
+ stmt.addBatch("INSERT INTO track (id, gid, recording, medium, position, name, artist_credit, length) "
+ + " VALUES (1, 'c3b8dbc9-c1ff-4743-9015-8d762819134e', 1, 1, 7, 2, 1, 33100)");
stmt.addBatch("INSERT INTO recording (id, gid, name, artist_credit, length)"
+ " VALUES (1, '2f250ed2-6285-40f1-aa2a-14f1c05e9765', 1, 1, 33000)");
@@ -192,8 +192,8 @@
stmt.addBatch("INSERT INTO medium (id, track_count, release, position, format) VALUES (2, 2, 491241, 1, 7)");
- stmt.addBatch("INSERT INTO track (id, recording, medium, position, name, artist_credit, length) "
- + " VALUES (2, 1, 2, 4, 2, 1, 33100)");
+ stmt.addBatch("INSERT INTO track (id, gid, recording, medium, position, name, artist_credit, length) "
+ + " VALUES (2, 'd3b8dbc9-c1ff-4743-9015-8d762819134e', 1, 2, 4, 2, 1, 33100)");
stmt.addBatch("INSERT INTO track_name (id, name) VALUES (1, 'Do It Clean')");
stmt.addBatch("INSERT INTO track_name (id, name) VALUES (2, 'Do It Cleans')");
@@ -620,7 +620,26 @@
ir.close();
}
+ /**
+ * Basic test of all fields
+ *
+ * @throws Exception exception
+ */
+ @Test
+ public void testTrackGuid() throws Exception {
+ addTrackOne();
+ RAMDirectory ramDir = new RAMDirectory();
+ createIndex(ramDir);
+
+ IndexReader ir = DirectoryReader.open(ramDir);
+ assertEquals(2, ir.numDocs());
+ {
+ checkTerm(ir, RecordingIndexField.TRACK_ID, "c3b8dbc9-c1ff-4743-9015-8d762819134e");
+ }
+ ir.close();
+ }
+
/**
* @throws Exception exception
*/
@@ -842,7 +861,7 @@
assertEquals(null, release.getCountry());
assertEquals("1950", release.getDate());
ReleaseEventList rel = release.getReleaseEventList();
- assertEquals(4,rel.getReleaseEvent().size());
+ assertEquals(4, rel.getReleaseEvent().size());
assertEquals(null, release.getCountry());
assertEquals("1950", release.getDate());
assertEquals(null, rel.getReleaseEvent().get(0).getCountry());
@@ -873,6 +892,17 @@
assertNotNull(medium);
assertEquals(1, medium.getPosition().intValue());
assertEquals("Vinyl", medium.getFormat());
+
+ Medium.TrackList trackList = medium.getTrackList();
+ assertNotNull(trackList);
+
+ assertNotNull(trackList.getDefTrack());
+
+ Medium.TrackList.Track track = trackList.getDefTrack().get(0);
+ assertEquals("Do It Cleans", track.getTitle());
+ assertNull(track.getPosition()); //We dont currently output this, but perhaps should
+ assertEquals("A4", track.getNumber());
+
}
ir.close();
}
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-02 15:26:25 UTC (rev 13675)
+++ search_server/trunk/servlet/src/test/java/org/musicbrainz/search/servlet/FindRecordingTest.java 2013-05-02 16:10:43 UTC (rev 13676)
@@ -77,6 +77,7 @@
recording.setReleaseList(releaseList);
m.setFormat("Vinyl");
track.setTitle("Gravitational Lens");
+ doc.addField(RecordingIndexField.TRACK_ID,"2d9e8ed6-3893-4d3b-aa7d-72e79609e386");
release.setId("1d9e8ed6-3893-4d3b-aa7d-6cd79609e386");
release.setTitle("Our Glorious 5 Year Plan");
@@ -463,6 +464,12 @@
assertEquals("7ca7782b-a602-448b-b108-bb881a7be2d6", getRecordingId(res.results.get(0).getDoc()));
}
+ @Test
+ public void testFindRecordingByTrackId() throws Exception {
+ Results res = ss.search("tid:2d9e8ed6-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 testOutputAsMmd1Xml() throws Exception {