瀏覽代碼

[enh] search query highlight in result texts

asciimoo 11 年之前
父節點
當前提交
14a53e3430
共有 1 個檔案被更改,包括 13 行新增0 行删除
  1. 13
    0
      searx/engines/__init__.py

+ 13
- 0
searx/engines/__init__.py 查看文件

83
     return {'method': 'GET', 'headers': {}, 'data': {}, 'url': '', 'cookies': {}}
83
     return {'method': 'GET', 'headers': {}, 'data': {}, 'url': '', 'cookies': {}}
84
 
84
 
85
 def make_callback(engine_name, results, callback, params):
85
 def 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
         results[engine_name] = cb_res
101
         results[engine_name] = cb_res
101
     return process_callback
102
     return process_callback
102
 
103
 
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
+
103
 def search(query, request, selected_engines):
114
 def search(query, request, selected_engines):
104
     global engines, categories, number_of_searches
115
     global engines, categories, number_of_searches
105
     requests = []
116
     requests = []
176
             results.append(res)
187
             results.append(res)
177
 
188
 
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']
181
 
194