| 
									
										
										
										
											2021-06-03 13:56:00 +02:00
										 |  |  | .. _offline engines:
 | 
					
						
							| 
									
										
										
										
											2019-10-23 13:06:19 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-12-12 19:20:56 +01:00
										 |  |  | ===============
 | 
					
						
							| 
									
										
										
										
											2021-06-03 13:56:00 +02:00
										 |  |  | Offline Engines
 | 
					
						
							|  |  |  | ===============
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | .. sidebar:: offline engines
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    - :ref:`demo offline engine`
 | 
					
						
							|  |  |  |    - :ref:`sql engines`
 | 
					
						
							| 
									
										
										
										
											2021-06-04 15:02:47 +02:00
										 |  |  |    - :ref:`engine command`
 | 
					
						
							| 
									
										
										
										
											2021-06-03 13:56:00 +02:00
										 |  |  |    - :origin:`Redis <searx/engines/redis_server.py>`
 | 
					
						
							| 
									
										
										
										
											2019-10-23 13:06:19 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-06-03 13:56:00 +02:00
										 |  |  | To extend the functionality of SearxNG, offline engines are going to be
 | 
					
						
							| 
									
										
										
										
											2019-12-12 19:20:56 +01:00
										 |  |  | introduced.  An offline engine is an engine which does not need Internet
 | 
					
						
							|  |  |  | connection to perform a search and does not use HTTP to communicate.
 | 
					
						
							| 
									
										
										
										
											2019-10-23 13:06:19 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-06-03 13:56:00 +02:00
										 |  |  | Offline engines can be configured, by adding those to the `engines` list of
 | 
					
						
							|  |  |  | :origin:`settings.yml <searx/settings.yml>`.  An example skeleton for offline
 | 
					
						
							|  |  |  | engines can be found in :ref:`demo offline engine` (:origin:`demo_offline.py
 | 
					
						
							|  |  |  | <searx/engines/demo_offline.py>`).
 | 
					
						
							| 
									
										
										
										
											2019-10-23 13:06:19 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-06-03 13:56:00 +02:00
										 |  |  | Programming Interface
 | 
					
						
							|  |  |  | =====================
 | 
					
						
							| 
									
										
										
										
											2019-10-23 13:06:19 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-06-03 13:56:00 +02:00
										 |  |  | :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.
 | 
					
						
							| 
									
										
										
										
											2019-10-23 13:06:19 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-06-03 13:56:00 +02:00
										 |  |  | :py:func:`search(query, params) <searx.engines.demo_offline.searc>`
 | 
					
						
							| 
									
										
										
										
											2019-10-23 13:06:19 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-06-03 13:56:00 +02:00
										 |  |  |   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.)
 | 
					
						
							| 
									
										
										
										
											2019-10-23 13:06:19 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-06-03 13:56:00 +02:00
										 |  |  |   The return value is a list of results retrieved by the engine.
 | 
					
						
							| 
									
										
										
										
											2019-10-23 13:06:19 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-06-03 13:56:00 +02:00
										 |  |  | Engine representation in ``/config``
 | 
					
						
							|  |  |  |   If an engine is offline, the attribute ``offline`` is set to ``True``.
 | 
					
						
							| 
									
										
										
										
											2019-10-23 13:06:19 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-06-03 13:56:00 +02:00
										 |  |  | .. _offline requirements:
 | 
					
						
							| 
									
										
										
										
											2019-10-23 13:06:19 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-06-03 13:56:00 +02:00
										 |  |  | Extra Dependencies
 | 
					
						
							|  |  |  | ==================
 | 
					
						
							| 
									
										
										
										
											2019-10-23 13:06:19 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-06-03 13:56:00 +02:00
										 |  |  | 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.
 | 
					
						
							| 
									
										
										
										
											2019-10-23 13:06:19 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-06-03 13:56:00 +02:00
										 |  |  | 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
 | 
					
						
							|  |  |  | (:ref:`searx-src`) first, for this you can use :ref:`searx.sh`::
 | 
					
						
							| 
									
										
										
										
											2019-10-23 13:06:19 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-06-03 13:56:00 +02:00
										 |  |  |   $ sudo utils/searx.sh shell
 | 
					
						
							|  |  |  |   (searx-pyenv)$ pip install ...
 | 
					
						
							| 
									
										
										
										
											2019-10-23 13:06:19 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-06-03 13:56:00 +02:00
										 |  |  | Private engines (Security)
 | 
					
						
							|  |  |  | ==========================
 | 
					
						
							| 
									
										
										
										
											2019-10-23 13:06:19 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-06-03 13:56:00 +02:00
										 |  |  | 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 a
 | 
					
						
							|  |  |  | query contains a valid token, then SearxNG performs the requested private
 | 
					
						
							|  |  |  | search.  If not, requests from an offline engines return errors.
 | 
					
						
							| 
									
										
										
										
											2019-10-23 13:06:19 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Acknowledgement
 | 
					
						
							| 
									
										
										
										
											2019-12-12 19:20:56 +01:00
										 |  |  | ===============
 | 
					
						
							| 
									
										
										
										
											2019-10-23 13:06:19 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-06-03 13:56:00 +02:00
										 |  |  | This development was sponsored by `Search and Discovery Fund
 | 
					
						
							|  |  |  | <https://nlnet.nl/discovery>`_ of `NLnet Foundation <https://nlnet.nl/>`_ .
 | 
					
						
							| 
									
										
										
										
											2019-10-23 13:06:19 +02:00
										 |  |  | 
 |