Browse Source

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

Adam Tauber 8 years ago
parent
commit
485da54961
2 changed files with 15 additions and 5 deletions
  1. 8 2
      searx/results.py
  2. 7 3
      searx/webapp.py

+ 8 - 2
searx/results.py

@@ -100,7 +100,7 @@ class ResultContainer(object):
         self._infobox_ids = {}
         self.suggestions = set()
         self.answers = set()
-        self.number_of_results = 0
+        self._number_of_results = []
 
     def extend(self, engine_name, results):
         for result in list(results):
@@ -114,7 +114,7 @@ class ResultContainer(object):
                 self._merge_infobox(result)
                 results.remove(result)
             elif 'number_of_results' in result:
-                self.number_of_results = max(self.number_of_results, result['number_of_results'])
+                self._number_of_results.append(result['number_of_results'])
                 results.remove(result)
 
         with RLock():
@@ -253,3 +253,9 @@ class ResultContainer(object):
 
     def results_length(self):
         return len(self._merged_results)
+
+    def results_number(self):
+        resultnum_sum = sum(self._number_of_results)
+        if not resultnum_sum or not self._number_of_results:
+            return 0
+        return resultnum_sum  / len(self._number_of_results)

+ 7 - 3
searx/webapp.py

@@ -418,9 +418,13 @@ def index():
                 else:
                     result['publishedDate'] = format_date(result['publishedDate'])
 
+    number_of_results = search.result_container.results_number()
+    if number_of_results < search.result_container.results_length():
+        number_of_results = 0
+
     if search.request_data.get('format') == 'json':
         return Response(json.dumps({'query': search.query,
-                                    'number_of_results': search.result_container.number_of_results,
+                                    'number_of_results': number_of_results,
                                     'results': search.result_container.get_ordered_results()}),
                         mimetype='application/json')
     elif search.request_data.get('format') == 'csv':
@@ -440,7 +444,7 @@ def index():
             'opensearch_response_rss.xml',
             results=search.result_container.get_ordered_results(),
             q=search.request_data['q'],
-            number_of_results=search.result_container.number_of_results,
+            number_of_results=number_of_results,
             base_url=get_base_url()
         )
         return Response(response_rss, mimetype='text/xml')
@@ -451,7 +455,7 @@ def index():
         q=search.request_data['q'],
         selected_categories=search.categories,
         paging=search.paging,
-        number_of_results=format_decimal(search.result_container.number_of_results),
+        number_of_results=format_decimal(number_of_results),
         pageno=search.pageno,
         base_url=get_base_url(),
         suggestions=search.result_container.suggestions,