on master help sign in
[enh] search query highlight in result texts
commit14a53e343085083d0ddf271adff2d13ca1c94f99 authorasciimoo <asciimoo@gmail.com> dateSat 9 Nov 2013, 18:37 (13 years ago) parente946752
1 file changed+13
searx/engines/__init__.py+13
searx/engines/__init__.py+13
@@ -83,6 +83,7 @@ def default_request_params():
8383 return {'method': 'GET', 'headers': {}, 'data': {}, 'url': '', 'cookies': {}}
8484
8585def make_callback(engine_name, results, callback, params):
86+ # creating a callback wrapper for the search engine results
8687 def process_callback(response, **kwargs):
8788 cb_res = []
8889 response.search_params = params
@@ -100,6 +101,16 @@ def make_callback(engine_name, results, callback, params):
100101 results[engine_name] = cb_res
101102 return process_callback
102103
104+def highlight_content(content, query):
105+ # ignoring html contents
106+ # TODO better html content detection
107+ if content.find('<') != -1:
108+ return content
109+ for chunk in query.split():
110+ content = content.replace(chunk, '<b>{0}</b>'.format(chunk))
111+
112+ return content
113+
103114def search(query, request, selected_engines):
104115 global engines, categories, number_of_searches
105116 requests = []
@@ -176,6 +187,8 @@ def search(query, request, selected_engines):
176187 results.append(res)
177188
178189 for result in results:
190+ if 'content' in result:
191+ result['content'] = highlight_content(result['content'], query)
179192 for res_engine in result['engines']:
180193 engines[result['engine']].stats['score_count'] += result['score']
181194