forked from zaclys/searxng
		
	[docs] revision of the article "Engine Overview"
This patch revision of the article "Engine Overview": - add links & anchors - improve formating of the tables Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
This commit is contained in:
		
							parent
							
								
									f122cb0e27
								
							
						
					
					
						commit
						5caebb379f
					
				
					 1 changed files with 232 additions and 225 deletions
				
			
		|  | @ -1,12 +1,20 @@ | ||||||
| 
 |  | ||||||
| .. _engines-dev: | .. _engines-dev: | ||||||
| 
 | 
 | ||||||
| =============== | =============== | ||||||
| Engine overview | Engine Overview | ||||||
| =============== | =============== | ||||||
| 
 | 
 | ||||||
| .. _metasearch-engine: https://en.wikipedia.org/wiki/Metasearch_engine | .. _metasearch-engine: https://en.wikipedia.org/wiki/Metasearch_engine | ||||||
| 
 | 
 | ||||||
|  | .. sidebar:: Further reading .. | ||||||
|  | 
 | ||||||
|  |    - :ref:`general engine settings` | ||||||
|  |    - :ref:`settings engine` | ||||||
|  | 
 | ||||||
|  | .. contents:: | ||||||
|  |    :depth: 3 | ||||||
|  |    :backlinks: entry | ||||||
|  | 
 | ||||||
| searx is a metasearch-engine_, so it uses different search engines to provide | searx is a metasearch-engine_, so it uses different search engines to provide | ||||||
| better results. | better results. | ||||||
| 
 | 
 | ||||||
|  | @ -14,71 +22,92 @@ Because there is no general search API which could be used for every search | ||||||
| engine, an adapter has to be built between searx and the external search | engine, an adapter has to be built between searx and the external search | ||||||
| engines.  Adapters are stored under the folder :origin:`searx/engines`. | engines.  Adapters are stored under the folder :origin:`searx/engines`. | ||||||
| 
 | 
 | ||||||
| .. contents:: |  | ||||||
|    :depth: 3 |  | ||||||
|    :backlinks: entry |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| .. _general engine configuration: | .. _general engine configuration: | ||||||
| 
 | 
 | ||||||
| general engine configuration | General Engine Configuration | ||||||
| ============================ | ============================ | ||||||
| 
 | 
 | ||||||
| It is required to tell searx the type of results the engine provides. The | It is required to tell searx the type of results the engine provides. The | ||||||
| arguments can be set in the engine file or in the settings file | arguments can be set in the engine file or in the settings file (normally | ||||||
| (normally ``settings.yml``). The arguments in the settings file override | ``settings.yml``). The arguments in the settings file override the ones in the | ||||||
| the ones in the engine file. | engine file. | ||||||
| 
 | 
 | ||||||
| It does not matter if an option is stored in the engine file or in the | It does not matter if an option is stored in the engine file or in the settings. | ||||||
| settings.  However, the standard way is the following: | However, the standard way is the following: | ||||||
| 
 | 
 | ||||||
| .. _engine file: | .. _engine file: | ||||||
| 
 | 
 | ||||||
| engine file | Engine File | ||||||
| ----------- | ----------- | ||||||
| 
 | 
 | ||||||
|  | .. table:: Common options in the engine module | ||||||
|  |    :width: 100% | ||||||
|  | 
 | ||||||
|    ======================= =========== ======================================================== |    ======================= =========== ======================================================== | ||||||
|    argument                type        information |    argument                type        information | ||||||
|    ======================= =========== ======================================================== |    ======================= =========== ======================================================== | ||||||
|    categories              list        pages, in which the engine is working |    categories              list        pages, in which the engine is working | ||||||
|    paging                  boolean     support multible pages |    paging                  boolean     support multible pages | ||||||
|    time_range_support      boolean     support search time range |    time_range_support      boolean     support search time range | ||||||
| engine_type             str         ``online`` by default, other possibles values are |    engine_type             str         - ``online`` :ref:`[ref] <demo online engine>` by | ||||||
|                                     ``offline``, ``online_dictionnary``, ``online_currency`` |                                          default, other possibles values are: | ||||||
|  |                                        - ``offline`` :ref:`[ref] <offline engines>` | ||||||
|  |                                        - ``online_dictionary`` | ||||||
|  |                                        - ``online_currency`` | ||||||
|    ======================= =========== ======================================================== |    ======================= =========== ======================================================== | ||||||
| 
 | 
 | ||||||
| .. _engine settings: | .. _engine settings: | ||||||
| 
 | 
 | ||||||
| settings.yml | Engine ``settings.yml`` | ||||||
| ------------ | ----------------------- | ||||||
| 
 | 
 | ||||||
| ======================= =========== ============================================= | For a more  detailed description, see :ref:`settings engine` in the :ref:`settings.yml`. | ||||||
|  | 
 | ||||||
|  | .. table:: Common options in the engine setup (``settings.yml``) | ||||||
|  |    :width: 100% | ||||||
|  | 
 | ||||||
|  |    ======================= =========== =============================================== | ||||||
|    argument                type        information |    argument                type        information | ||||||
| ======================= =========== ============================================= |    ======================= =========== =============================================== | ||||||
|    name                    string      name of search-engine |    name                    string      name of search-engine | ||||||
| engine                  string      name of searx-engine |    engine                  string      name of searx-engine (filename without ``.py``) | ||||||
|                                     (filename without ``.py``) |    enable_http             bool        enable HTTP (by default only HTTPS is enabled). | ||||||
| enable_http             bool        enable HTTP |  | ||||||
|                                     (by default only HTTPS is enabled). |  | ||||||
|    shortcut                string      shortcut of search-engine |    shortcut                string      shortcut of search-engine | ||||||
|    timeout                 string      specific timeout for search-engine |    timeout                 string      specific timeout for search-engine | ||||||
|    display_error_messages  boolean     display error messages on the web UI |    display_error_messages  boolean     display error messages on the web UI | ||||||
|    proxies                 dict        set proxies for a specific engine |    proxies                 dict        set proxies for a specific engine | ||||||
|                                        (e.g. ``proxies : {http: socks5://proxy:port, |                                        (e.g. ``proxies : {http: socks5://proxy:port, | ||||||
|                                        https: socks5://proxy:port}``) |                                        https: socks5://proxy:port}``) | ||||||
| ======================= =========== ============================================= |    ======================= =========== =============================================== | ||||||
| 
 | 
 | ||||||
|  | .. _engine overrides: | ||||||
| 
 | 
 | ||||||
| overrides | Overrides | ||||||
| --------- | --------- | ||||||
| 
 | 
 | ||||||
| A few of the options have default values in the engine, but are often | .. sidebar:: engine's global names | ||||||
| overwritten by the settings.  If ``None`` is assigned to an option in the engine |  | ||||||
| file, it has to be redefined in the settings, otherwise searx will not start |  | ||||||
| with that engine. |  | ||||||
| 
 | 
 | ||||||
| The naming of overrides is arbitrary.  But the recommended overrides are the |    Global names with a leading underline are *private to the engine* and will | ||||||
| following: |    not be overwritten. | ||||||
|  | 
 | ||||||
|  | A few of the options have default values in the namespace of engine's python | ||||||
|  | modul, but are often overwritten by the settings.  If ``None`` is assigned to an | ||||||
|  | option in the engine file, it has to be redefined in the settings, otherwise | ||||||
|  | searx will not start with that engine. | ||||||
|  | 
 | ||||||
|  | Here is an very simple example of the global names in the namespace of engine's | ||||||
|  | module: | ||||||
|  | 
 | ||||||
|  | .. code:: python | ||||||
|  | 
 | ||||||
|  |    # engine dependent config | ||||||
|  |    categories = ['general'] | ||||||
|  |    paging = True | ||||||
|  |    _non_overwritten_global = 'foo' | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | .. table:: The naming of overrides is arbitrary / recommended overrides are: | ||||||
|  |    :width: 100% | ||||||
| 
 | 
 | ||||||
|    ======================= =========== =========================================== |    ======================= =========== =========================================== | ||||||
|    argument                type        information |    argument                type        information | ||||||
|  | @ -90,31 +119,25 @@ language                string      ISO code of language and country like en_US | ||||||
|    api_key                 string      api-key if required by engine |    api_key                 string      api-key if required by engine | ||||||
|    ======================= =========== =========================================== |    ======================= =========== =========================================== | ||||||
| 
 | 
 | ||||||
| example code |  | ||||||
| ------------ |  | ||||||
| 
 |  | ||||||
| .. code:: python |  | ||||||
| 
 |  | ||||||
|    # engine dependent config |  | ||||||
|    categories = ['general'] |  | ||||||
|    paging = True |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| .. _engine request: | .. _engine request: | ||||||
| 
 | 
 | ||||||
| making a request | Making a Request | ||||||
| ================ | ================ | ||||||
| 
 | 
 | ||||||
| To perform a search an URL have to be specified.  In addition to specifying an | To perform a search an URL have to be specified.  In addition to specifying an | ||||||
| URL, arguments can be passed to the query. | URL, arguments can be passed to the query. | ||||||
| 
 | 
 | ||||||
| passed arguments | .. _engine request arguments: | ||||||
| ---------------- | 
 | ||||||
|  | Passed Arguments (request) | ||||||
|  | -------------------------- | ||||||
| 
 | 
 | ||||||
| These arguments can be used to construct the search query.  Furthermore, | These arguments can be used to construct the search query.  Furthermore, | ||||||
| parameters with default value can be redefined for special purposes. | parameters with default value can be redefined for special purposes. | ||||||
| 
 | 
 | ||||||
| If the ``engine_type`` is ``online```: | 
 | ||||||
|  | .. table:: If the ``engine_type`` is ``online`` | ||||||
|  |    :width: 100% | ||||||
| 
 | 
 | ||||||
|    ====================== ============== ======================================================================== |    ====================== ============== ======================================================================== | ||||||
|    argument               type           default-value, information |    argument               type           default-value, information | ||||||
|  | @ -134,35 +157,42 @@ language               str            specific language code like ``'en_US'``, o | ||||||
|    ====================== ============== ======================================================================== |    ====================== ============== ======================================================================== | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| If the ``engine_type`` is ``online_dictionnary```, in addition to the ``online`` arguments: | .. table:: If the ``engine_type`` is ``online_dictionary``, in addition to the | ||||||
|  |            ``online`` arguments: | ||||||
|  |    :width: 100% | ||||||
| 
 | 
 | ||||||
| ====================== ============ ======================================================================== |    ====================== ============== ======================================================================== | ||||||
|    argument               type           default-value, information |    argument               type           default-value, information | ||||||
| ====================== ============ ======================================================================== |    ====================== ============== ======================================================================== | ||||||
|    from_lang              str            specific language code like ``'en_US'`` |    from_lang              str            specific language code like ``'en_US'`` | ||||||
|    to_lang                str            specific language code like ``'en_US'`` |    to_lang                str            specific language code like ``'en_US'`` | ||||||
|    query                  str            the text query without the languages |    query                  str            the text query without the languages | ||||||
| ====================== ============ ======================================================================== |    ====================== ============== ======================================================================== | ||||||
| 
 | 
 | ||||||
| If the ``engine_type`` is ``online_currency```, in addition to the ``online`` arguments: | .. table:: If the ``engine_type`` is ``online_currency```, in addition to the | ||||||
|  |            ``online`` arguments: | ||||||
|  |    :width: 100% | ||||||
| 
 | 
 | ||||||
| ====================== ============ ======================================================================== |    ====================== ============== ======================================================================== | ||||||
|    argument               type           default-value, information |    argument               type           default-value, information | ||||||
| ====================== ============ ======================================================================== |    ====================== ============== ======================================================================== | ||||||
|    amount                 float          the amount to convert |    amount                 float          the amount to convert | ||||||
|    from                   str            ISO 4217 code |    from                   str            ISO 4217 code | ||||||
|    to                     str            ISO 4217 code |    to                     str            ISO 4217 code | ||||||
|    from_name              str            currency name |    from_name              str            currency name | ||||||
|    to_name                str            currency name |    to_name                str            currency name | ||||||
| ====================== ============ ======================================================================== |    ====================== ============== ======================================================================== | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| parsed arguments | Specify Request | ||||||
| ---------------- | --------------- | ||||||
| 
 | 
 | ||||||
| The function ``def request(query, params):`` always returns the ``params`` | The function :py:func:`def request(query, params): | ||||||
| variable.  Inside searx, the following paramters can be used to specify a search | <searx.engines.demo_online.request>` always returns the ``params`` variable, the | ||||||
| request: | following parameters can be used to specify a search request: | ||||||
|  | 
 | ||||||
|  | .. table:: | ||||||
|  |    :width: 100% | ||||||
| 
 | 
 | ||||||
|    =================== =========== ========================================================================== |    =================== =========== ========================================================================== | ||||||
|    argument            type        information |    argument            type        information | ||||||
|  | @ -180,45 +210,18 @@ raise_for_httperror bool        True by default: raise an exception if the HTTP | ||||||
|    =================== =========== ========================================================================== |    =================== =========== ========================================================================== | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| example code |  | ||||||
| ------------ |  | ||||||
| 
 |  | ||||||
| .. code:: python |  | ||||||
| 
 |  | ||||||
|    # search-url |  | ||||||
|    base_url = 'https://example.com/' |  | ||||||
|    search_string = 'search?{query}&page={page}' |  | ||||||
| 
 |  | ||||||
|    # do search-request |  | ||||||
|    def request(query, params): |  | ||||||
|        search_path = search_string.format( |  | ||||||
|            query=urlencode({'q': query}), |  | ||||||
|            page=params['pageno']) |  | ||||||
| 
 |  | ||||||
|        params['url'] = base_url + search_path |  | ||||||
| 
 |  | ||||||
|        return params |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| .. _engine results: | .. _engine results: | ||||||
|  | .. _engine media types: | ||||||
| 
 | 
 | ||||||
| returned results | Media Types | ||||||
| ================ | =========== | ||||||
| 
 | 
 | ||||||
| Searx is able to return results of different media-types.  Currently the | Each result item of an engine can be of different media-types.  Currently the | ||||||
| following media-types are supported: | following media-types are supported.  To set another media-type as ``default``, | ||||||
|  | the parameter ``template`` must be set to the desired type. | ||||||
| 
 | 
 | ||||||
| - default_ | .. table::  Parameter of the **default** media type: | ||||||
| - images_ |    :width: 100% | ||||||
| - videos_ |  | ||||||
| - torrent_ |  | ||||||
| - map_ |  | ||||||
| 
 |  | ||||||
| To set another media-type as default, the parameter ``template`` must be set to |  | ||||||
| the desired type. |  | ||||||
| 
 |  | ||||||
| default |  | ||||||
| ------- |  | ||||||
| 
 | 
 | ||||||
|    ========================= ===================================================== |    ========================= ===================================================== | ||||||
|    result-parameter          information |    result-parameter          information | ||||||
|  | @ -229,15 +232,15 @@ content                   string, general result-text | ||||||
|    publishedDate             :py:class:`datetime.datetime`, time of publish |    publishedDate             :py:class:`datetime.datetime`, time of publish | ||||||
|    ========================= ===================================================== |    ========================= ===================================================== | ||||||
| 
 | 
 | ||||||
| images |  | ||||||
| ------ |  | ||||||
| 
 | 
 | ||||||
| To use this template, the parameter: | .. table::  Parameter of the **images** media type: | ||||||
|  |    :width: 100% | ||||||
| 
 | 
 | ||||||
|    ========================= ===================================================== |    ========================= ===================================================== | ||||||
|    result-parameter          information |    result-parameter          information | ||||||
| ========================= ===================================================== |    ------------------------- ----------------------------------------------------- | ||||||
|    template                  is set to ``images.html`` |    template                  is set to ``images.html`` | ||||||
|  |    ========================= ===================================================== | ||||||
|    url                       string, url to the result site |    url                       string, url to the result site | ||||||
|    title                     string, title of the result *(partly implemented)* |    title                     string, title of the result *(partly implemented)* | ||||||
|    content                   *(partly implemented)* |    content                   *(partly implemented)* | ||||||
|  | @ -247,13 +250,15 @@ img\_src                  string, url to the result image | ||||||
|    thumbnail\_src            string, url to a small-preview image |    thumbnail\_src            string, url to a small-preview image | ||||||
|    ========================= ===================================================== |    ========================= ===================================================== | ||||||
| 
 | 
 | ||||||
| videos | 
 | ||||||
| ------ | .. table::  Parameter of the **videos** media type: | ||||||
|  |    :width: 100% | ||||||
| 
 | 
 | ||||||
|    ========================= ===================================================== |    ========================= ===================================================== | ||||||
|    result-parameter          information |    result-parameter          information | ||||||
| ========================= ===================================================== |    ------------------------- ----------------------------------------------------- | ||||||
|    template                  is set to ``videos.html`` |    template                  is set to ``videos.html`` | ||||||
|  |    ========================= ===================================================== | ||||||
|    url                       string, url of the result |    url                       string, url of the result | ||||||
|    title                     string, title of the result |    title                     string, title of the result | ||||||
|    content                   *(not implemented yet)* |    content                   *(not implemented yet)* | ||||||
|  | @ -261,15 +266,16 @@ publishedDate             :py:class:`datetime.datetime`, time of publish | ||||||
|    thumbnail                 string, url to a small-preview image |    thumbnail                 string, url to a small-preview image | ||||||
|    ========================= ===================================================== |    ========================= ===================================================== | ||||||
| 
 | 
 | ||||||
| torrent |  | ||||||
| ------- |  | ||||||
| 
 |  | ||||||
| .. _magnetlink: https://en.wikipedia.org/wiki/Magnet_URI_scheme | .. _magnetlink: https://en.wikipedia.org/wiki/Magnet_URI_scheme | ||||||
| 
 | 
 | ||||||
|  | .. table::  Parameter of the **torrent** media type: | ||||||
|  |    :width: 100% | ||||||
|  | 
 | ||||||
|    ========================= ===================================================== |    ========================= ===================================================== | ||||||
|    result-parameter          information |    result-parameter          information | ||||||
| ========================= ===================================================== |    ------------------------- ----------------------------------------------------- | ||||||
|    template                  is set to ``torrent.html`` |    template                  is set to ``torrent.html`` | ||||||
|  |    ========================= ===================================================== | ||||||
|    url                       string, url of the result |    url                       string, url of the result | ||||||
|    title                     string, title of the result |    title                     string, title of the result | ||||||
|    content                   string, general result-text |    content                   string, general result-text | ||||||
|  | @ -283,12 +289,13 @@ magnetlink                string, magnetlink_ of the result | ||||||
|    torrentfile               string, torrentfile of the result |    torrentfile               string, torrentfile of the result | ||||||
|    ========================= ===================================================== |    ========================= ===================================================== | ||||||
| 
 | 
 | ||||||
| 
 | .. table::  Parameter of the **map** media type: | ||||||
| map |    :width: 100% | ||||||
| --- |  | ||||||
| 
 | 
 | ||||||
|    ========================= ===================================================== |    ========================= ===================================================== | ||||||
|    result-parameter          information |    result-parameter          information | ||||||
|  |    ------------------------- ----------------------------------------------------- | ||||||
|  |    template                  is set to ``map.html`` | ||||||
|    ========================= ===================================================== |    ========================= ===================================================== | ||||||
|    url                       string, url of the result |    url                       string, url of the result | ||||||
|    title                     string, title of the result |    title                     string, title of the result | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 Markus Heiser
						Markus Heiser