[mb-commits] r9895 - search_server/trunk/lib
root at musicbrainz.org
root at musicbrainz.org
Sun Jun 29 09:21:49 UTC 2008
Author: robert
Date: 2008-06-29 09:21:49 +0000 (Sun, 29 Jun 2008)
New Revision: 9895
Modified:
search_server/trunk/lib/annotationsearch.py
search_server/trunk/lib/artistsearch.py
search_server/trunk/lib/labelsearch.py
search_server/trunk/lib/releasesearch.py
search_server/trunk/lib/search.py
search_server/trunk/lib/tracksearch.py
Log:
make the layout/look of the indexed search similar to the direct search.
Modified: search_server/trunk/lib/annotationsearch.py
===================================================================
--- search_server/trunk/lib/annotationsearch.py 2008-06-29 08:30:56 UTC (rev 9894)
+++ search_server/trunk/lib/annotationsearch.py 2008-06-29 09:21:49 UTC (rev 9895)
@@ -54,7 +54,7 @@
out += u'<tr class="searchresults%s">' % search.oddeven[i % 2]
out += u"<td>%d</td>" % doc['_score']
out += u"<td>%s</td>" % self.escape(type)
- out += u"<td><a href=\"/%s/%s.html\">%s</a></td>" % (self.escape(type),
+ out += u"<td><span class=\"link%s-icon\"><a href=\"/%s/%s.html\">%s</a></td>" % (self.escape(type), self.escape(type),
self.escape(mbid), self.escape(name))
text = text.replace(u"\\n", u"\n");
Modified: search_server/trunk/lib/artistsearch.py
===================================================================
--- search_server/trunk/lib/artistsearch.py 2008-06-29 08:30:56 UTC (rev 9894)
+++ search_server/trunk/lib/artistsearch.py 2008-06-29 09:21:49 UTC (rev 9895)
@@ -73,7 +73,7 @@
out += u'<tr class="searchresults%s">' % search.oddeven[i % 2]
out += u"<td>%d</td>" % doc['_score']
- out += u"<td><a href=\"/artist/%s.html\">%s</a>" % \
+ out += u"<td><span class=\"linkartist-icon\"><a href=\"/artist/%s.html\">%s</a></span>" % \
(self.escape(arid), self.escape(artist))
if comment: out += " (%s)" % self.escape(comment)
out += u"</td><td>%s</td>" % self.escape(sortname)
Modified: search_server/trunk/lib/labelsearch.py
===================================================================
--- search_server/trunk/lib/labelsearch.py 2008-06-29 08:30:56 UTC (rev 9894)
+++ search_server/trunk/lib/labelsearch.py 2008-06-29 09:21:49 UTC (rev 9895)
@@ -85,7 +85,7 @@
out += u'<tr class="searchresults%s">' % search.oddeven[i % 2]
out += u"<td>%d</td>" % doc['_score']
- out += u"<td><a href=\"/label/%s.html\">%s</a>" % \
+ out += u"<td><span class=\"linklabel-icon\"><a href=\"/label/%s.html\">%s</a></span>" % \
(self.escape(laid), self.escape(label))
if comment: out += " (%s)" % self.escape(comment)
out += u"</td><td>%s</td>" % self.escape(sortname)
Modified: search_server/trunk/lib/releasesearch.py
===================================================================
--- search_server/trunk/lib/releasesearch.py 2008-06-29 08:30:56 UTC (rev 9894)
+++ search_server/trunk/lib/releasesearch.py 2008-06-29 09:21:49 UTC (rev 9895)
@@ -65,8 +65,9 @@
rel = self.rel
out = u'<div><table class="searchresults">'
- out += u'<tr class="searchresultsheader"><td>Score</td><td>Release</td><td>Artist</td><td>Tracks</td>'
- out += u'<td style="white-space: nowrap">CD ids</td><td>Date</td><td>Type</td><td style="white-space: nowrap">Lang/script</td>'
+ out += u'<tr class="searchresultsheader"><td>Score</td><td>Artst</td><td style="white-space: nowrap">Release title</td>'
+ out += u'<td style="white-space: nowrap">Tracks</td><td style="white-space: nowrap">CD ids</td>'
+ out += u'<td>Released:</td><td>Type</td><td style="white-space: nowrap">Lang/script</td>'
if self.tport:
out += u"<td>Tagger</td>"
elif rel:
@@ -101,11 +102,12 @@
out += u'<tr class="searchresults%s">' % self.escape(search.oddeven[i % 2])
out += u"<td>%d</td>" % doc['_score']
- out += u"<td><a href=\"/release/%s.html\">%s</a></td>" % \
+ out += u"<td><span class=\"linkrelease-icon\"><a href=\"/artist/%s.html\">%s</a></td>" % \
+ (self.escape(arid), self.escape(artist))
+ out += u"<td><span class=\"linkrelease-icon\"><a href=\"/release/%s.html\">%s</a></span></td>" % \
(self.escape(reid), self.escape(album))
- out += u"<td><a href=\"/artist/%s.html\">%s</a></td>" % \
- (self.escape(arid), self.escape(artist))
- out += u'<td align="center">%s</td><td align="center">%s</td>' % (self.escape(tracks), self.escape(cdids))
+ out += u'<td align="center">%s <img src="/images/notes.gif" alt="Tracks"/></td>' % self.escape(tracks)
+ out += u'<td align="center">%s <img src="/images/cd.gif" alt="Disc IDs"/></td>' % self.escape(cdids)
out += u"<td>"
for date, country in zip(dates, countries):
out += "%s %s " % (self.escape(country), self.escape(date))
Modified: search_server/trunk/lib/search.py
===================================================================
--- search_server/trunk/lib/search.py 2008-06-29 08:30:56 UTC (rev 9894)
+++ search_server/trunk/lib/search.py 2008-06-29 09:21:49 UTC (rev 9895)
@@ -81,16 +81,15 @@
text = str(msg)
raise NoSuchIndexError(text)
- self.weight = xapian.BM25Weight(0, 0, 1, .1, .5);
self.en = enquire = xapian.Enquire(self.index)
+ self.weight = xapian.BM25Weight(0, 0, 1, .5, .5);
self.en.set_weighting_scheme(self.weight)
- #self.en.set_docid_order(xapian.Enquire.DONT_CARE)
+ self.en.set_docid_order(xapian.Enquire.DONT_CARE)
self.en.set_sort_by_relevance_then_value(0, False)
self.qp = xapian.QueryParser()
self.qp.set_database(self.index)
self.qp.set_stemming_strategy(xapian.QueryParser.STEM_NONE)
- self.qp.set_default_op(xapian.Query.OP_AND)
def close(self):
'''
@@ -214,6 +213,14 @@
return u''.join(bits)
+
+ def removeApostrophe(self, query):
+ '''
+ Xapian considers ' as part of a word in order to not split things like "don't" and generate a bunch
+ of t fragments. I can see that for text, but for searching names and titles, no so much.
+ '''
+ return query.replace(u"'", u'')
+
def removeDashesFromMBIDs(self, query):
bits = []
@@ -245,6 +252,7 @@
query = self.mangleQuery(query)
query = self.removeTermBoosting(query)
query = self.removeDots(query)
+ query = self.removeApostrophe(query)
query = self.removeDashesFromMBIDs(query)
query = unac.unac_string(query)
query = addSpacesToIdeographicStrings(query)
@@ -260,14 +268,14 @@
self.defaultField)
except xapian.Error, msg:
text = str(msg)
- raise QueryError(text.encode('utf-8'))
+ raise QueryError(text)
try:
self.en.set_query(parsedQuery)
matches = self.en.get_mset(offset, maxHits)
except Exception, msg:
text = str(msg)
- raise SearchError(text.encode('utf-8'))
+ raise SearchError(text)
if not matches.get_matches_estimated(): raise NoResultsError()
Modified: search_server/trunk/lib/tracksearch.py
===================================================================
--- search_server/trunk/lib/tracksearch.py 2008-06-29 08:30:56 UTC (rev 9894)
+++ search_server/trunk/lib/tracksearch.py 2008-06-29 09:21:49 UTC (rev 9895)
@@ -45,7 +45,7 @@
def __init__(self, index):
search.TextSearch.__init__(self, index)
self.setDefaultField('track')
- self.setPrefixes(('artist', 'arid', 'reid', 'trid', 'release', 'track', 'tnum', 'tracks', 'dur', 'type'))
+ self.setPrefixes(('artist', 'arid', 'reid', 'trid', 'release', 'track', 'tnum', 'tracks', 'dur', 'qdur', 'type'))
def mangleQuery(self, query):
query = re.sub("type:(\d+)", replaceType, query)
@@ -59,7 +59,8 @@
rel = self.rel
out = u'<div><table class="searchresults" id="TagLookupTrackResults">'
- out += u'<tr class="searchresultsheader"><td>Score</td><td>Num</td><td>Track</td><td>Duration</td><td>Type</td><td>Artist</td><td>Release</td><td>Tracks</td>'
+ out += u'<tr class="searchresultsheader"><td>Score</td><td>Artist</td>'
+ out += u'<td>Release</td><td>Track</td><td>Num</td><td>Length</td><td>Tracks</td><td>Type</td>'
if self.tport or self.mbt:
out += u"<td>Tagger</td>"
elif rel:
@@ -79,21 +80,21 @@
out += u'<tr class="searchresults%s">' % search.oddeven[i % 2]
out += u"<td>%d</td>" % doc['_score']
+ out += u'<td><span class="linkartist-icon"><a href=\"/artist/%s.html\">%s</a></span></td>' % \
+ (self.escape(arid), self.escape(artist))
+ out += u'<td><span class="linkrelease-icon"><a href=\"/album/%s.html\">%s</a></span></td>' % \
+ (self.escape(reid), self.escape(album))
+ out += u'<td><span class="linktrack-icon"><a href=\"/track/%s.html\">%s</a></span></td>' % \
+ (self.escape(trid), self.escape(track))
out += u'<td align="center">%s</td>' % self.escape(tnum)
- out += u"<td><a href=\"/track/%s.html\">%s</a></td>" % \
- (self.escape(trid), self.escape(track))
out += u'<td align="center" class="tlen %s">' % self.getTrackLenClass(dur)
if dur:
out += u'%d:%02d' % (dur / 60000, (dur % 60000) / 1000)
else:
out += u" "
out += u"</td>"
+ out += u'<td align="center">%d</td>' % tracks
out += u"<td>%s</td>" % self.escape(type)
- out += u"<td><a href=\"/artist/%s.html\">%s</a></td>" % \
- (self.escape(arid), self.escape(artist))
- out += u"<td><a href=\"/album/%s.html\">%s</a></td>" % \
- (self.escape(reid), self.escape(album))
- out += u'<td align="center">%d</td>' % tracks
if self.tport or self.mbt:
out += u'<td style="white-space: nowrap">'
More information about the MusicBrainz-commits
mailing list