summaryrefslogtreecommitdiff
path: root/searx/results.py
diff options
context:
space:
mode:
Diffstat (limited to 'searx/results.py')
-rw-r--r--searx/results.py26
1 files changed, 19 insertions, 7 deletions
diff --git a/searx/results.py b/searx/results.py
index 9a4ec0b28..73a96c081 100644
--- a/searx/results.py
+++ b/searx/results.py
@@ -28,7 +28,7 @@ def compare_urls(url_a, url_b):
else:
host_b = url_b.netloc
- if host_a != host_b or url_a.query != url_b.query:
+ if host_a != host_b or url_a.query != url_b.query or url_a.fragment != url_b.fragment:
return False
# remove / from the end of the url if required
@@ -128,6 +128,8 @@ class ResultContainer(object):
self.suggestions = set()
self.answers = set()
self._number_of_results = []
+ self._ordered = False
+ self.paging = False
def extend(self, engine_name, results):
for result in list(results):
@@ -144,15 +146,19 @@ class ResultContainer(object):
self._number_of_results.append(result['number_of_results'])
results.remove(result)
- with RLock():
- engines[engine_name].stats['search_count'] += 1
- engines[engine_name].stats['result_count'] += len(results)
+ if engine_name in engines:
+ with RLock():
+ engines[engine_name].stats['search_count'] += 1
+ engines[engine_name].stats['result_count'] += len(results)
if not results:
return
self.results[engine_name].extend(results)
+ if not self.paging and engine_name in engines and engines[engine_name].paging:
+ self.paging = True
+
for i, result in enumerate(results):
try:
result['url'] = result['url'].decode('utf-8')
@@ -219,7 +225,7 @@ class ResultContainer(object):
with RLock():
self._merged_results.append(result)
- def get_ordered_results(self):
+ def order_results(self):
for result in self._merged_results:
score = result_score(result)
result['score'] = score
@@ -269,8 +275,14 @@ class ResultContainer(object):
# update categoryIndex
categoryPositions[category] = {'index': len(gresults), 'count': 8}
- # return gresults
- return gresults
+ # update _merged_results
+ self._ordered = True
+ self._merged_results = gresults
+
+ def get_ordered_results(self):
+ if not self._ordered:
+ self.order_results()
+ return self._merged_results
def results_length(self):
return len(self._merged_results)