| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 | .. _offline engines:===============Offline Engines===============.. sidebar:: offline engines   - :ref:`demo offline engine`   - :ref:`sql engines`   - :ref:`engine command`   - :origin:`Redis <searx/engines/redis_server.py>`To extend the functionality of SearxNG, offline engines are going to beintroduced.  An offline engine is an engine which does not need Internetconnection to perform a search and does not use HTTP to communicate.Offline engines can be configured, by adding those to the `engines` list of:origin:`settings.yml <searx/settings.yml>`.  An example skeleton for offlineengines can be found in :ref:`demo offline engine` (:origin:`demo_offline.py<searx/engines/demo_offline.py>`).Programming Interface=====================:py:func:`init(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.:py:func:`search(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``... _offline requirements:Extra Dependencies==================If an offline engine depends on an external tool, SearxNG does not install it bydefault.  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, soadmins can install packages in advance.If there is a need to install additional packages in *Python's VirtualEnvironment* of your SearxNG instance you need to switch into the environment(:ref:`searx-src`) first, for this you can use :ref:`searx.sh`::  $ sudo utils/searx.sh shell  (searx-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 :ref:`private engines`.  If aquery contains a valid token, then SearxNG performs the requested privatesearch.  If not, requests from an offline engines return errors.Acknowledgement===============This development was sponsored by `Search and Discovery Fund<https://nlnet.nl/discovery>`_ of `NLnet Foundation <https://nlnet.nl/>`_ .
 |