Browse Source

Add Meilisearch engine

Website: https://www.meilisearch.com/
Noémi Ványi 4 years ago
parent
commit
07f5edce3d
3 changed files with 67 additions and 0 deletions
  1. 1 0
      Makefile
  2. 59 0
      searx/engines/meilisearch.py
  3. 7 0
      searx/settings.yml

+ 1 - 0
Makefile

@@ -191,6 +191,7 @@ PYLINT_FILES=\
 	searx/engines/google_videos.py \
 	searx/engines/google_videos.py \
 	searx/engines/google_images.py \
 	searx/engines/google_images.py \
 	searx/engines/mediathekviewweb.py \
 	searx/engines/mediathekviewweb.py \
+	searx/engines/meilisearch.py \
 	searx/engines/solidtorrents.py \
 	searx/engines/solidtorrents.py \
 	searx/engines/solr.py \
 	searx/engines/solr.py \
 	searx/engines/google_scholar.py \
 	searx/engines/google_scholar.py \

+ 59 - 0
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

+ 7 - 0
searx/settings.yml

@@ -700,6 +700,13 @@ engines:
       require_api_key: false
       require_api_key: false
       results: HTML
       results: HTML
 
 
+#  - name : meilisearch
+#    engine : meilisearch
+#    shortcut: mes
+#    enable_http: True
+#    base_url : http://localhost:7700
+#    index : my-index
+
   - name : microsoft academic
   - name : microsoft academic
     engine : microsoft_academic
     engine : microsoft_academic
     categories : science
     categories : science