Commit 10d4c62c authored by Jean-Francois Dockes's avatar Jean-Francois Dockes
Browse files

Use recoll highlighter instead of local one to properly handle stemming

parent 3e79c00d
%import shlex, unicodedata
%def strip_accents(s): return ''.join((c for c in unicodedata.normalize('NFD', s) if unicodedata.category(c) != 'Mn'))
<div class="search-result">
%number = (query['page'] - 1)*config['perpage'] + i + 1
<div class="search-result-number"><a href="#r{{d['sha']}}">#{{number}}</a></div>
......@@ -28,12 +27,6 @@
</div>
%end
<div class="search-result-date">{{d['time']}}</div>
%for q in shlex.split(query['query'].replace("'","\\'")):
%if not q == "OR":
% w = strip_accents(q.decode('utf-8').lower()).encode('utf-8')
% d['snippet'] = d['snippet'].replace(w,'<span class="search-result-highlight">'+w+'</span>')
%end
%end
<div class="search-result-snippet">{{!d['snippet']}}</div>
</div>
<!-- vim: fdm=marker:tw=80:ts=4:sw=4:sts=4:et:ai
......
......@@ -165,6 +165,13 @@ def recoll_initsearch(q):
pass
return query
#}}}
#{{{ HlMeths
class HlMeths:
def startMatch(self, idx):
return '<span class="search-result-highlight">'
def endMatch(self):
return '</span>'
#}}}
#{{{ recoll_search
def recoll_search(q):
config = get_config()
......@@ -188,6 +195,7 @@ def recoll_search(q):
else:
query.scroll(offset, mode='absolute')
highlighter = HlMeths()
for i in range(config['perpage']):
try:
doc = query.fetchone()
......@@ -203,7 +211,7 @@ def recoll_search(q):
d['label'] = select([d['title'], d['filename'], '?'], [None, ''])
d['sha'] = hashlib.sha1(d['url']+d['ipath']).hexdigest()
d['time'] = timestr(d['mtime'], config['timefmt'])
d['snippet'] = query.makedocabstract(doc).encode('utf-8')
d['snippet'] = query.makedocabstract(doc, highlighter).encode('utf-8')
results.append(d)
tend = datetime.datetime.now()
return results, nres, tend - tstart
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment