on master help sign in
[enh] suggestion support added
commit66ff28bb9deddcd2eb88186e45cc86d31587b636 authorasciimoo <asciimoo@gmail.com> dateWed 13 Nov 2013, 19:32 (13 years ago) parent9688495
2 files changed+10−4
searx/engines/__init__.py+8−3 searx/webapp.py+2−1
searx/engines/__init__.py+8−3
@@ -83,7 +83,7 @@ for engine_config_name in engines_config.sections():
8383def default_request_params():
8484 return {'method': 'GET', 'headers': {}, 'data': {}, 'url': '', 'cookies': {}}
8585
86−def make_callback(engine_name, results, callback, params):
86+def make_callback(engine_name, results, suggestions, callback, params):
8787 # creating a callback wrapper for the search engine results
8888 def process_callback(response, **kwargs):
8989 cb_res = []
@@ -98,6 +98,10 @@ def make_callback(engine_name, results, callback, params):
9898 return
9999 for result in search_results:
100100 result['engine'] = engine_name
101+ if 'suggestion' in result:
102+ # TODO type checks
103+ suggestions.add(result['suggestion'])
104+ continue
101105 cb_res.append(result)
102106 results[engine_name] = cb_res
103107 return process_callback
@@ -167,6 +171,7 @@ def search(query, request, selected_engines):
167171 global engines, categories, number_of_searches
168172 requests = []
169173 results = {}
174+ suggestions = set()
170175 number_of_searches += 1
171176 user_agent = request.headers.get('User-Agent', '')
172177
@@ -182,7 +187,7 @@ def search(query, request, selected_engines):
182187 request_params['started'] = datetime.now()
183188 request_params = engine.request(query, request_params)
184189
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)
186191
187192 request_args = dict(headers = request_params['headers']
188193 ,hooks = dict(response=callback)
@@ -214,7 +219,7 @@ def search(query, request, selected_engines):
214219 for res_engine in result['engines']:
215220 engines[result['engine']].stats['score_count'] += result['score']
216221
217− return results
222+ return results, suggestions
218223
219224def get_engines_stats():
220225 pageloads = []
searx/webapp.py+2−1
@@ -96,7 +96,7 @@ def index():
9696 for categ in selected_categories:
9797 selected_engines.extend({'category': categ, 'name': x.name} for x in categories[categ])
9898
99− results = search(query, request, selected_engines)
99+ results, suggestions = search(query, request, selected_engines)
100100 for result in results:
101101 if len(result['url']) > 74:
102102 result['pretty_url'] = result['url'][:35] + '[..]' + result['url'][-35:]
@@ -109,6 +109,7 @@ def index():
109109 ,q=request_data['q']
110110 ,selected_categories=selected_categories
111111 ,number_of_results=len(results)
112+ ,suggestions=suggestions
112113 )
113114 resp = make_response(template)
114115 resp.set_cookie('categories', ','.join(selected_categories))