From 07f5edce3d47164eb6b7858a1d025a707d716689 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?No=C3=A9mi=20V=C3=A1nyi?= Date: Fri, 2 Apr 2021 16:16:57 +0200 Subject: [PATCH] Add Meilisearch engine Website: https://www.meilisearch.com/ --- Makefile | 1 + searx/engines/meilisearch.py | 59 ++++++++++++++++++++++++++++++++++++ searx/settings.yml | 7 +++++ 3 files changed, 67 insertions(+) create mode 100644 searx/engines/meilisearch.py diff --git a/Makefile b/Makefile index 745ff5b9..f8d6359c 100644 --- a/Makefile +++ b/Makefile @@ -191,6 +191,7 @@ PYLINT_FILES=\ searx/engines/google_videos.py \ searx/engines/google_images.py \ searx/engines/mediathekviewweb.py \ + searx/engines/meilisearch.py \ searx/engines/solidtorrents.py \ searx/engines/solr.py \ searx/engines/google_scholar.py \ diff --git a/searx/engines/meilisearch.py b/searx/engines/meilisearch.py new file mode 100644 index 00000000..4e0ff15f --- /dev/null +++ b/searx/engines/meilisearch.py @@ -0,0 +1,59 @@ +# SPDX-License-Identifier: AGPL-3.0-or-later +""" + Meilisearch +""" + +# pylint: disable=global-statement, missing-function-docstring + +from json import loads, dumps + + +base_url = 'http://localhost:7700' +index = '' +auth_key = '' +facet_filters = list() +_search_url = '' +result_template = 'key-value.html' +categories = ['general'] +paging = True + + +def init(_): + if index == '': + raise ValueError('index cannot be empty') + + global _search_url + _search_url = base_url + '/indexes/' + index + '/search' + + +def request(query, params): + if auth_key != '': + params['headers']['X-Meili-API-Key'] = auth_key + + params['headers']['Content-Type'] = 'application/json' + params['url'] = _search_url + params['method'] = 'POST' + + data = { + 'q': query, + 'offset': 10 * (params['pageno'] - 1), + 'limit': 10, + } + if len(facet_filters) > 0: + data['facetFilters'] = facet_filters + + params['data'] = dumps(data) + + return params + + +def response(resp): + results = [] + + resp_json = loads(resp.text) + for result in resp_json['hits']: + r = {key: str(value) for key, value in result.items()} + r['template'] = result_template + results.append(r) + + return results diff --git a/searx/settings.yml b/searx/settings.yml index 50bccb1e..3428b2ec 100644 --- a/searx/settings.yml +++ b/searx/settings.yml @@ -700,6 +700,13 @@ engines: require_api_key: false results: HTML +# - name : meilisearch +# engine : meilisearch +# shortcut: mes +# enable_http: True +# base_url : http://localhost:7700 +# index : my-index + - name : microsoft academic engine : microsoft_academic categories : science