浏览代码

[fix] compute the order of results only once per search

Adam Tauber 8 年前
父节点
当前提交
5b5478bbd9
共有 1 个文件被更改,包括 7 次插入5 次删除
  1. 7
    5
      searx/webapp.py

+ 7
- 5
searx/webapp.py 查看文件

@@ -380,7 +380,9 @@ def index():
380 380
 
381 381
     plugins.call('post_search', request, locals())
382 382
 
383
-    for result in search.result_container.get_ordered_results():
383
+    results =  search.result_container.get_ordered_results()
384
+
385
+    for result in results:
384 386
 
385 387
         plugins.call('on_result', request, locals())
386 388
         if not search.paging and engines[result['engine']].paging:
@@ -425,13 +427,13 @@ def index():
425 427
     if search.request_data.get('format') == 'json':
426 428
         return Response(json.dumps({'query': search.query,
427 429
                                     'number_of_results': number_of_results,
428
-                                    'results': search.result_container.get_ordered_results()}),
430
+                                    'results': results}),
429 431
                         mimetype='application/json')
430 432
     elif search.request_data.get('format') == 'csv':
431 433
         csv = UnicodeWriter(cStringIO.StringIO())
432 434
         keys = ('title', 'url', 'content', 'host', 'engine', 'score')
433 435
         csv.writerow(keys)
434
-        for row in search.result_container.get_ordered_results():
436
+        for row in results:
435 437
             row['host'] = row['parsed_url'].netloc
436 438
             csv.writerow([row.get(key, '') for key in keys])
437 439
         csv.stream.seek(0)
@@ -442,7 +444,7 @@ def index():
442 444
     elif search.request_data.get('format') == 'rss':
443 445
         response_rss = render(
444 446
             'opensearch_response_rss.xml',
445
-            results=search.result_container.get_ordered_results(),
447
+            results=results,
446 448
             q=search.request_data['q'],
447 449
             number_of_results=number_of_results,
448 450
             base_url=get_base_url()
@@ -451,7 +453,7 @@ def index():
451 453
 
452 454
     return render(
453 455
         'results.html',
454
-        results=search.result_container.get_ordered_results(),
456
+        results=results,
455 457
         q=search.request_data['q'],
456 458
         selected_categories=search.categories,
457 459
         paging=search.paging,