searxng/docs/dev/engines/offline_concept.rst
Markus Heiser 5720844fcd [doc] rearranges Settings & Engines docs for better readability
We have built up detailed documentation of the *settings* and the *engines* over
the past few years.  However, this documentation was still spread over various
chapters and was difficult to navigate in its entirety.

This patch rearranges the Settings & Engines documentation for better
readability.

To review new ordered docs::

   make docs.clean docs.live

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-07-01 22:45:19 +02:00

2.6 KiB

Offline Concept

offline engines

  • demo offline engine
  • engine command
  • sql engines
  • nosql engines
  • :pysearx.search.processors.offline

To extend the functionality of SearXNG, offline engines are going to be introduced. An offline engine is an engine which does not need Internet connection to perform a search and does not use HTTP to communicate.

Offline engines can be configured, by adding those to the engines list of settings.yml <searx/settings.yml>. An example skeleton for offline engines can be found in demo offline engine (demo_offline.py <searx/engines/demo_offline.py>).

Programming Interface

:pyinit(engine_settings=None) <searx.engines.demo_offline.init>

All offline engines can have their own init function to setup the engine before accepting requests. The function gets the settings from settings.yml as a parameter. This function can be omitted, if there is no need to setup anything in advance.

:pysearch(query, params) <searx.engines.demo_offline.searc>

Each offline engine has a function named search. This function is responsible to perform a search and return the results in a presentable format. (Where presentable means presentable by the selected result template.)

The return value is a list of results retrieved by the engine.

Engine representation in /config

If an engine is offline, the attribute offline is set to True.

Extra Dependencies

If an offline engine depends on an external tool, SearXNG does not install it by default. When an administrator configures such engine and starts the instance, the process returns an error with the list of missing dependencies. Also, required dependencies will be added to the comment/description of the engine, so admins can install packages in advance.

If there is a need to install additional packages in Python's Virtual Environment of your SearXNG instance you need to switch into the environment (searxng-src) first, for this you can use searxng.sh:

$ sudo utils/searxng.sh instance cmd bash
(searxng-pyenv)$ pip install ...

Private engines (Security)

To limit the access to offline engines, if an instance is available publicly, administrators can set token(s) for each of the private engines. If a query contains a valid token, then SearXNG performs the requested private search. If not, requests from an offline engines return errors.