on master help sign in
[mod][fix] use the average of results number ++ do not display smaller result number than the actual result count - closes #600
485da54Adam Tauber
searx/results.py+8−2
@@ -100,7 +100,7 @@ class ResultContainer(object):
100 self._infobox_ids = {}
100 self._infobox_ids = {}
101 self.suggestions = set()
101 self.suggestions = set()
102 self.answers = set()
102 self.answers = set()
103− self.number_of_results = 0
103+ self._number_of_results = []
104
104
105 def extend(self, engine_name, results):
105 def extend(self, engine_name, results):
106 for result in list(results):
106 for result in list(results):
@@ -114,7 +114,7 @@ class ResultContainer(object):
114 self._merge_infobox(result)
114 self._merge_infobox(result)
115 results.remove(result)
115 results.remove(result)
116 elif 'number_of_results' in result:
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 results.remove(result)
118 results.remove(result)
119
119
120 with RLock():
120 with RLock():
@@ -253,3 +253,9 @@ class ResultContainer(object):
253
253
254 def results_length(self):
254 def results_length(self):
255 return len(self._merged_results)
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)
searx/webapp.py+7−3
@@ -418,9 +418,13 @@ def index():
418 else:
418 else:
419 result['publishedDate'] = format_date(result['publishedDate'])
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 if search.request_data.get('format') == 'json':
425 if search.request_data.get('format') == 'json':
422 return Response(json.dumps({'query': search.query,
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 'results': search.result_container.get_ordered_results()}),
428 'results': search.result_container.get_ordered_results()}),
425 mimetype='application/json')
429 mimetype='application/json')
426 elif search.request_data.get('format') == 'csv':
430 elif search.request_data.get('format') == 'csv':
@@ -440,7 +444,7 @@ def index():
440 'opensearch_response_rss.xml',
444 'opensearch_response_rss.xml',
441 results=search.result_container.get_ordered_results(),
445 results=search.result_container.get_ordered_results(),
442 q=search.request_data['q'],
446 q=search.request_data['q'],
443− number_of_results=search.result_container.number_of_results,
447+ number_of_results=number_of_results,
444 base_url=get_base_url()
448 base_url=get_base_url()
445 )
449 )
446 return Response(response_rss, mimetype='text/xml')
450 return Response(response_rss, mimetype='text/xml')
@@ -451,7 +455,7 @@ def index():
451 q=search.request_data['q'],
455 q=search.request_data['q'],
452 selected_categories=search.categories,
456 selected_categories=search.categories,
453 paging=search.paging,
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 pageno=search.pageno,
459 pageno=search.pageno,
456 base_url=get_base_url(),
460 base_url=get_base_url(),
457 suggestions=search.result_container.suggestions,
461 suggestions=search.result_container.suggestions,