@@ -83,6 +83,7 @@ def default_request_params():
83 return {'method': 'GET', 'headers': {}, 'data': {}, 'url': '', 'cookies': {}}
83 return {'method': 'GET', 'headers': {}, 'data': {}, 'url': '', 'cookies': {}}
85def make_callback(engine_name, results, callback, params):
85def make_callback(engine_name, results, callback, params):
86+ # creating a callback wrapper for the search engine results
86 def process_callback(response, **kwargs):
87 def process_callback(response, **kwargs):
87 cb_res = []
88 cb_res = []
88 response.search_params = params
89 response.search_params = params
@@ -100,6 +101,16 @@ def make_callback(engine_name, results, callback, params):
100 results[engine_name] = cb_res
101 results[engine_name] = cb_res
101 return process_callback
102 return process_callback
104+def highlight_content(content, query):
105+ # ignoring html contents
106+ # TODO better html content detection
107+ if content.find('<') != -1:
109+ for chunk in query.split():
110+ content = content.replace(chunk, '<b>{0}</b>'.format(chunk))
103def search(query, request, selected_engines):
114def search(query, request, selected_engines):
104 global engines, categories, number_of_searches
115 global engines, categories, number_of_searches
105 requests = []
116 requests = []
@@ -176,6 +187,8 @@ def search(query, request, selected_engines):
176 results.append(res)
187 results.append(res)
178 for result in results:
189 for result in results:
190+ if 'content' in result:
191+ result['content'] = highlight_content(result['content'], query)
179 for res_engine in result['engines']:
192 for res_engine in result['engines']:
180 engines[result['engine']].stats['score_count'] += result['score']
193 engines[result['engine']].stats['score_count'] += result['score']