summaryrefslogtreecommitdiff
path: root/searx/engines/redis_server.py
diff options
context:
space:
mode:
authorMarkus Heiser <markus.heiser@darmarit.de>2025-03-05 17:50:22 +0100
committerMarkus Heiser <markus.heiser@darmarIT.de>2025-03-15 10:36:33 +0100
commitf49b2c94a9a9938133dbf94d686f00776ce96cdc (patch)
tree7b74aa959100bd85054251221981039d185bc50e /searx/engines/redis_server.py
parentaf5dbdf768d56d26669a54e532bef3238e3de2e4 (diff)
[mod] migrate all key-value.html templates to KeyValue type
The engines now all use KeyValue results and return the results in a EngineResults object. The sqlite engine can return MainResult results in addition to KeyValue results (based on engine's config in settings.yml), Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
Diffstat (limited to 'searx/engines/redis_server.py')
-rw-r--r--searx/engines/redis_server.py45
1 files changed, 20 insertions, 25 deletions
diff --git a/searx/engines/redis_server.py b/searx/engines/redis_server.py
index 3268378c6..eebb5809b 100644
--- a/searx/engines/redis_server.py
+++ b/searx/engines/redis_server.py
@@ -36,6 +36,8 @@ Implementations
import redis # pylint: disable=import-error
+from searx.result_types import EngineResults
+
engine_type = 'offline'
# redis connection variables
@@ -46,7 +48,6 @@ db = 0
# engine specific variables
paging = False
-result_template = 'key-value.html'
exact_match_only = True
_redis_client = None
@@ -63,30 +64,25 @@ def init(_engine_settings):
)
-def search(query, _params):
+def search(query, _params) -> EngineResults:
+ res = EngineResults()
+
if not exact_match_only:
- return search_keys(query)
-
- ret = _redis_client.hgetall(query)
- if ret:
- ret['template'] = result_template
- return [ret]
-
- if ' ' in query:
- qset, rest = query.split(' ', 1)
- ret = []
- for res in _redis_client.hscan_iter(qset, match='*{}*'.format(rest)):
- ret.append(
- {
- res[0]: res[1],
- 'template': result_template,
- }
- )
- return ret
- return []
-
-
-def search_keys(query):
+ for kvmap in search_keys(query):
+ res.add(res.types.KeyValue(kvmap=kvmap))
+ return res
+
+ kvmap: dict[str, str] = _redis_client.hgetall(query)
+ if kvmap:
+ res.add(res.types.KeyValue(kvmap=kvmap))
+ elif " " in query:
+ qset, rest = query.split(" ", 1)
+ for row in _redis_client.hscan_iter(qset, match='*{}*'.format(rest)):
+ res.add(res.types.KeyValue(kvmap={row[0]: row[1]}))
+ return res
+
+
+def search_keys(query) -> list[dict]:
ret = []
for key in _redis_client.scan_iter(match='*{}*'.format(query)):
key_type = _redis_client.type(key)
@@ -98,7 +94,6 @@ def search_keys(query):
res = dict(enumerate(_redis_client.lrange(key, 0, -1)))
if res:
- res['template'] = result_template
res['redis_key'] = key
ret.append(res)
return ret