浏览代码

[mod][fix] use the average of results number ++ do not display smaller result number than the actual result count - closes #600

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

+ 8
- 2
searx/results.py 查看文件

@@ -100,7 +100,7 @@ class ResultContainer(object):
100 100
         self._infobox_ids = {}
101 101
         self.suggestions = set()
102 102
         self.answers = set()
103
-        self.number_of_results = 0
103
+        self._number_of_results = []
104 104
 
105 105
     def extend(self, engine_name, results):
106 106
         for result in list(results):
@@ -114,7 +114,7 @@ class ResultContainer(object):
114 114
                 self._merge_infobox(result)
115 115
                 results.remove(result)
116 116
             elif 'number_of_results' in result:
117
-                self.number_of_results = max(self.number_of_results, result['number_of_results'])
117
+                self._number_of_results.append(result['number_of_results'])
118 118
                 results.remove(result)
119 119
 
120 120
         with RLock():
@@ -253,3 +253,9 @@ class ResultContainer(object):
253 253
 
254 254
     def results_length(self):
255 255
         return len(self._merged_results)
256
+
257
+    def results_number(self):
258
+        resultnum_sum = sum(self._number_of_results)
259
+        if not resultnum_sum or not self._number_of_results:
260
+            return 0
261
+        return resultnum_sum  / len(self._number_of_results)

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

@@ -418,9 +418,13 @@ def index():
418 418
                 else:
419 419
                     result['publishedDate'] = format_date(result['publishedDate'])
420 420
 
421
+    number_of_results = search.result_container.results_number()
422
+    if number_of_results < search.result_container.results_length():
423
+        number_of_results = 0
424
+
421 425
     if search.request_data.get('format') == 'json':
422 426
         return Response(json.dumps({'query': search.query,
423
-                                    'number_of_results': search.result_container.number_of_results,
427
+                                    'number_of_results': number_of_results,
424 428
                                     'results': search.result_container.get_ordered_results()}),
425 429
                         mimetype='application/json')
426 430
     elif search.request_data.get('format') == 'csv':
@@ -440,7 +444,7 @@ def index():
440 444
             'opensearch_response_rss.xml',
441 445
             results=search.result_container.get_ordered_results(),
442 446
             q=search.request_data['q'],
443
-            number_of_results=search.result_container.number_of_results,
447
+            number_of_results=number_of_results,
444 448
             base_url=get_base_url()
445 449
         )
446 450
         return Response(response_rss, mimetype='text/xml')
@@ -451,7 +455,7 @@ def index():
451 455
         q=search.request_data['q'],
452 456
         selected_categories=search.categories,
453 457
         paging=search.paging,
454
-        number_of_results=format_decimal(search.result_container.number_of_results),
458
+        number_of_results=format_decimal(number_of_results),
455 459
         pageno=search.pageno,
456 460
         base_url=get_base_url(),
457 461
         suggestions=search.result_container.suggestions,