forked from Ponysearch/Ponysearch
[enh] search query highlight in result texts
This commit is contained in:
parent
e946752474
commit
14a53e3430
1 changed files with 13 additions and 0 deletions
|
@ -83,6 +83,7 @@ def default_request_params():
|
|||
return {'method': 'GET', 'headers': {}, 'data': {}, 'url': '', 'cookies': {}}
|
||||
|
||||
def make_callback(engine_name, results, callback, params):
|
||||
# creating a callback wrapper for the search engine results
|
||||
def process_callback(response, **kwargs):
|
||||
cb_res = []
|
||||
response.search_params = params
|
||||
|
@ -100,6 +101,16 @@ def make_callback(engine_name, results, callback, params):
|
|||
results[engine_name] = cb_res
|
||||
return process_callback
|
||||
|
||||
def highlight_content(content, query):
|
||||
# ignoring html contents
|
||||
# TODO better html content detection
|
||||
if content.find('<') != -1:
|
||||
return content
|
||||
for chunk in query.split():
|
||||
content = content.replace(chunk, '<b>{0}</b>'.format(chunk))
|
||||
|
||||
return content
|
||||
|
||||
def search(query, request, selected_engines):
|
||||
global engines, categories, number_of_searches
|
||||
requests = []
|
||||
|
@ -176,6 +187,8 @@ def search(query, request, selected_engines):
|
|||
results.append(res)
|
||||
|
||||
for result in results:
|
||||
if 'content' in result:
|
||||
result['content'] = highlight_content(result['content'], query)
|
||||
for res_engine in result['engines']:
|
||||
engines[result['engine']].stats['score_count'] += result['score']
|
||||
|
||||
|
|
Loading…
Reference in a new issue