Selaa lähdekoodia

[enh] suggestion support added

asciimoo 11 vuotta sitten
vanhempi
commit
66ff28bb9d
2 muutettua tiedostoa jossa 10 lisäystä ja 4 poistoa
  1. 8
    3
      searx/engines/__init__.py
  2. 2
    1
      searx/webapp.py

+ 8
- 3
searx/engines/__init__.py Näytä tiedosto

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

+ 2
- 1
searx/webapp.py Näytä tiedosto

@@ -96,7 +96,7 @@ def index():
96 96
         for categ in selected_categories:
97 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 100
     for result in results:
101 101
         if len(result['url']) > 74:
102 102
             result['pretty_url'] = result['url'][:35] + '[..]' + result['url'][-35:]
@@ -109,6 +109,7 @@ def index():
109 109
                         ,q=request_data['q']
110 110
                         ,selected_categories=selected_categories
111 111
                         ,number_of_results=len(results)
112
+                        ,suggestions=suggestions
112 113
                         )
113 114
     resp = make_response(template)
114 115
     resp.set_cookie('categories', ','.join(selected_categories))