Selaa lähdekoodia

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

Adam Tauber 8 vuotta sitten
vanhempi
commit
5b5478bbd9
1 muutettua tiedostoa jossa 7 lisäystä ja 5 poistoa
  1. 7
    5
      searx/webapp.py

+ 7
- 5
searx/webapp.py Näytä tiedosto

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