mirror of
https://github.com/searxng/searxng.git
synced 2024-11-30 06:31:04 +00:00
6e5f22e558
Implementations of the *traits* of the engines. Engine's traits are fetched from the origin engine and stored in a JSON file in the *data folder*. Most often traits are languages and region codes and their mapping from SearXNG's representation to the representation in the origin search engine. To load traits from the persistence:: searx.enginelib.traits.EngineTraitsMap.from_data() For new traits new properties can be added to the class:: searx.enginelib.traits.EngineTraits .. hint:: Implementation is downward compatible to the deprecated *supported_languages method* from the vintage implementation. The vintage code is tagged as *deprecated* an can be removed when all engines has been ported to the *traits method*. Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
73 lines
1.9 KiB
Python
73 lines
1.9 KiB
Python
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
# lint: pylint
|
|
"""Within this module we implement a *demo offline engine*. Do not look to
|
|
close to the implementation, its just a simple example. To get in use of this
|
|
*demo* engine add the following entry to your engines list in ``settings.yml``:
|
|
|
|
.. code:: yaml
|
|
|
|
- name: my offline engine
|
|
engine: demo_offline
|
|
shortcut: demo
|
|
disabled: false
|
|
|
|
"""
|
|
|
|
import json
|
|
|
|
engine_type = 'offline'
|
|
categories = ['general']
|
|
disabled = True
|
|
timeout = 2.0
|
|
|
|
about = {
|
|
"wikidata_id": None,
|
|
"official_api_documentation": None,
|
|
"use_official_api": False,
|
|
"require_api_key": False,
|
|
"results": 'JSON',
|
|
}
|
|
|
|
# if there is a need for globals, use a leading underline
|
|
_my_offline_engine = None
|
|
|
|
|
|
def init(engine_settings=None):
|
|
"""Initialization of the (offline) engine. The origin of this demo engine is a
|
|
simple json string which is loaded in this example while the engine is
|
|
initialized.
|
|
|
|
"""
|
|
global _my_offline_engine # pylint: disable=global-statement
|
|
|
|
_my_offline_engine = (
|
|
'[ {"value": "%s"}'
|
|
', {"value":"first item"}'
|
|
', {"value":"second item"}'
|
|
', {"value":"third item"}'
|
|
']' % engine_settings.get('name')
|
|
)
|
|
|
|
|
|
def search(query, request_params):
|
|
"""Query (offline) engine and return results. Assemble the list of results from
|
|
your local engine. In this demo engine we ignore the 'query' term, usual
|
|
you would pass the 'query' term to your local engine to filter out the
|
|
results.
|
|
|
|
"""
|
|
ret_val = []
|
|
|
|
result_list = json.loads(_my_offline_engine)
|
|
|
|
for row in result_list:
|
|
entry = {
|
|
'query': query,
|
|
'language': request_params['searxng_locale'],
|
|
'value': row.get("value"),
|
|
# choose a result template or comment out to use the *default*
|
|
'template': 'key-value.html',
|
|
}
|
|
ret_val.append(entry)
|
|
|
|
return ret_val
|