summaryrefslogtreecommitdiff
path: root/searx/results.py
diff options
context:
space:
mode:
authorBnyro <bnyro@tutanota.com>2024-05-05 20:43:45 +0200
committerMarkus Heiser <markus.heiser@darmarIT.de>2024-06-07 14:42:52 +0200
commit3bec04079c027b952dee95dab194f29ea12e12a5 (patch)
tree42fa4444622987a19e96a129b7efcb9b9d496595 /searx/results.py
parentd4c3d309952b3a50e553808d1c367ec5ca23d62c (diff)
[feat] hostname replace plugin: possibility to prioritize certain websites
Co-authored-by: Markus Heiser <markus.heiser@darmarit.de>
Diffstat (limited to 'searx/results.py')
-rw-r--r--searx/results.py21
1 files changed, 14 insertions, 7 deletions
diff --git a/searx/results.py b/searx/results.py
index 8b248f8e0..b846eb275 100644
--- a/searx/results.py
+++ b/searx/results.py
@@ -130,16 +130,25 @@ def merge_two_infoboxes(infobox1, infobox2): # pylint: disable=too-many-branche
infobox1['content'] = content2
-def result_score(result):
+def result_score(result, priority):
weight = 1.0
for result_engine in result['engines']:
if hasattr(engines[result_engine], 'weight'):
weight *= float(engines[result_engine].weight)
- occurrences = len(result['positions'])
+ weight *= len(result['positions'])
+ score = 0
- return sum((occurrences * weight) / position for position in result['positions'])
+ for position in result['positions']:
+ if priority == 'low':
+ continue
+ if priority == 'high':
+ score += weight
+ else:
+ score += weight / position
+
+ return score
class Timing(NamedTuple): # pylint: disable=missing-class-docstring
@@ -354,9 +363,7 @@ class ResultContainer:
self._closed = True
for result in self._merged_results:
- score = result_score(result)
- result['score'] = score
-
+ result['score'] = result_score(result, result.get('priority'))
# removing html content and whitespace duplications
if result.get('content'):
result['content'] = utils.html_to_text(result['content']).strip()
@@ -364,7 +371,7 @@ class ResultContainer:
result['title'] = ' '.join(utils.html_to_text(result['title']).strip().split())
for result_engine in result['engines']:
- counter_add(score, 'engine', result_engine, 'score')
+ counter_add(result['score'], 'engine', result_engine, 'score')
results = sorted(self._merged_results, key=itemgetter('score'), reverse=True)