浏览代码

[enh] suggestion support added

asciimoo 11 年前
父节点
当前提交
66ff28bb9d
共有 2 个文件被更改,包括 10 次插入4 次删除
  1. 8
    3
      searx/engines/__init__.py
  2. 2
    1
      searx/webapp.py

+ 8
- 3
searx/engines/__init__.py 查看文件

83
 def default_request_params():
83
 def default_request_params():
84
     return {'method': 'GET', 'headers': {}, 'data': {}, 'url': '', 'cookies': {}}
84
     return {'method': 'GET', 'headers': {}, 'data': {}, 'url': '', 'cookies': {}}
85
 
85
 
86
-def make_callback(engine_name, results, callback, params):
86
+def make_callback(engine_name, results, suggestions, callback, params):
87
     # creating a callback wrapper for the search engine results
87
     # creating a callback wrapper for the search engine results
88
     def process_callback(response, **kwargs):
88
     def process_callback(response, **kwargs):
89
         cb_res = []
89
         cb_res = []
98
             return
98
             return
99
         for result in search_results:
99
         for result in search_results:
100
             result['engine'] = engine_name
100
             result['engine'] = engine_name
101
+            if 'suggestion' in result:
102
+                # TODO type checks
103
+                suggestions.add(result['suggestion'])
104
+                continue
101
             cb_res.append(result)
105
             cb_res.append(result)
102
         results[engine_name] = cb_res
106
         results[engine_name] = cb_res
103
     return process_callback
107
     return process_callback
167
     global engines, categories, number_of_searches
171
     global engines, categories, number_of_searches
168
     requests = []
172
     requests = []
169
     results = {}
173
     results = {}
174
+    suggestions = set()
170
     number_of_searches += 1
175
     number_of_searches += 1
171
     user_agent = request.headers.get('User-Agent', '')
176
     user_agent = request.headers.get('User-Agent', '')
172
 
177
 
182
         request_params['started'] = datetime.now()
187
         request_params['started'] = datetime.now()
183
         request_params = engine.request(query, request_params)
188
         request_params = engine.request(query, request_params)
184
 
189
 
185
-        callback = make_callback(selected_engine['name'], results, engine.response, request_params)
190
+        callback = make_callback(selected_engine['name'], results, suggestions, engine.response, request_params)
186
 
191
 
187
         request_args = dict(headers = request_params['headers']
192
         request_args = dict(headers = request_params['headers']
188
                            ,hooks   = dict(response=callback)
193
                            ,hooks   = dict(response=callback)
214
         for res_engine in result['engines']:
219
         for res_engine in result['engines']:
215
             engines[result['engine']].stats['score_count'] += result['score']
220
             engines[result['engine']].stats['score_count'] += result['score']
216
 
221
 
217
-    return results
222
+    return results, suggestions
218
 
223
 
219
 def get_engines_stats():
224
 def get_engines_stats():
220
     pageloads = []
225
     pageloads = []

+ 2
- 1
searx/webapp.py 查看文件

96
         for categ in selected_categories:
96
         for categ in selected_categories:
97
             selected_engines.extend({'category': categ, 'name': x.name} for x in categories[categ])
97
             selected_engines.extend({'category': categ, 'name': x.name} for x in categories[categ])
98
 
98
 
99
-    results = search(query, request, selected_engines)
99
+    results, suggestions = search(query, request, selected_engines)
100
     for result in results:
100
     for result in results:
101
         if len(result['url']) > 74:
101
         if len(result['url']) > 74:
102
             result['pretty_url'] = result['url'][:35] + '[..]' + result['url'][-35:]
102
             result['pretty_url'] = result['url'][:35] + '[..]' + result['url'][-35:]
109
                         ,q=request_data['q']
109
                         ,q=request_data['q']
110
                         ,selected_categories=selected_categories
110
                         ,selected_categories=selected_categories
111
                         ,number_of_results=len(results)
111
                         ,number_of_results=len(results)
112
+                        ,suggestions=suggestions
112
                         )
113
                         )
113
     resp = make_response(template)
114
     resp = make_response(template)
114
     resp.set_cookie('categories', ','.join(selected_categories))
115
     resp.set_cookie('categories', ','.join(selected_categories))