123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314 |
- Engine overview
- ===============
-
-
- searx is a `metasearch-engine <https://en.wikipedia.org/wiki/Metasearch_engine>`__,
- so it is using different search engines to provide better results.
-
- Because there is no general search-api which can be used for every
- search-engine, there must be build an adapter between searx and the
- external search-engine. This adapters are stored in the folder
- `*searx/engines* <https://github.com/asciimoo/searx/tree/master/searx/engines>`__,
- and this site is build to make an general documentation about this
- engines
-
-
- .. contents::
- :depth: 3
-
- general engine configuration
- ----------------------------
-
- It is required to tell searx what results can the engine provide. The
- arguments can be inserted in the engine file, or in the settings file
- (normally ``settings.yml``). The arguments in the settings file override
- the one in the engine file.
-
- Really, it is for most options no difference if there are contained in
- the engine-file or in the settings. But there is a standard where to
- place specific arguments by default.
-
-
- engine-file
- ~~~~~~~~~~~
-
- +---------------------+-----------+-----------------------------------------+
- | argument | type | information |
- +=====================+===========+=========================================+
- | categories | list | pages, in which the engine is working |
- +---------------------+-----------+-----------------------------------------+
- | paging | boolean | support multible pages |
- +---------------------+-----------+-----------------------------------------+
- | language\_support | boolean | support language choosing |
- +---------------------+-----------+-----------------------------------------+
-
- settings.yml
- ~~~~~~~~~~~~
-
- +------------+----------+-----------------------------------------------+
- | argument | type | information |
- +============+==========+===============================================+
- | name | string | name of search-engine |
- +------------+----------+-----------------------------------------------+
- | engine | string | name of searx-engine (filename without .py) |
- +------------+----------+-----------------------------------------------+
- | shortcut | string | shortcut of search-engine |
- +------------+----------+-----------------------------------------------+
- | timeout | string | specific timeout for search-engine |
- +------------+----------+-----------------------------------------------+
-
- overrides
- ~~~~~~~~~
-
- There are some options, with have default values in the engine, but are
- often overwritten by the settings. If the option is assigned in the
- engine-file with ``None`` it has to be redefined in the settings,
- otherwise searx is not starting with that engine.
-
- The naming of that overrides can be wathever you want. But we recommend
- the using of already used overrides if possible:
-
- +-----------------------+----------+--------------------------------------------------------------+
- | argument | type | information |
- +=======================+==========+==============================================================+
- | base\_url | string | base-url, can be overwrite to use same engine on other url |
- +-----------------------+----------+--------------------------------------------------------------+
- | number\_of\_results | int | maximum number of results per request |
- +-----------------------+----------+--------------------------------------------------------------+
- | language | string | ISO code of language and country like en\_US |
- +-----------------------+----------+--------------------------------------------------------------+
- | api\_key | string | api-key if required by engine |
- +-----------------------+----------+--------------------------------------------------------------+
-
- example-code
- ~~~~~~~~~~~~
-
- .. code:: python
-
- # engine dependent config
- categories = ['general']
- paging = True
- language_support = True
-
- doing request
- -------------
-
- To perform a search you have to specific at least a url on which the
- request is performing
-
- passed arguments
- ~~~~~~~~~~~~~~~~
-
- This arguments can be used to calculate the search-query. Furthermore,
- some of that parameters are filled with default values which can be
- changed for special purpose.
-
- +----------------------+------------+------------------------------------------------------------------------+
- | argument | type | default-value, informations |
- +======================+============+========================================================================+
- | url | string | ``''`` |
- +----------------------+------------+------------------------------------------------------------------------+
- | method | string | ``'GET'`` |
- +----------------------+------------+------------------------------------------------------------------------+
- | headers | set | ``{}`` |
- +----------------------+------------+------------------------------------------------------------------------+
- | data | set | ``{}`` |
- +----------------------+------------+------------------------------------------------------------------------+
- | cookies | set | ``{}`` |
- +----------------------+------------+------------------------------------------------------------------------+
- | verify | boolean | ``True`` |
- +----------------------+------------+------------------------------------------------------------------------+
- | headers.User-Agent | string | a random User-Agent |
- +----------------------+------------+------------------------------------------------------------------------+
- | category | string | current category, like ``'general'`` |
- +----------------------+------------+------------------------------------------------------------------------+
- | started | datetime | current date-time |
- +----------------------+------------+------------------------------------------------------------------------+
- | pageno | int | current pagenumber |
- +----------------------+------------+------------------------------------------------------------------------+
- | language | string | specific language code like ``'en_US'``, or ``'all'`` if unspecified |
- +----------------------+------------+------------------------------------------------------------------------+
-
- parsed arguments
- ~~~~~~~~~~~~~~~~
-
- The function ``def request(query, params):`` is always returning the
- ``params`` variable back. Inside searx, the following paramters can be
- used to specific a search-request:
-
- +------------+-----------+----------------------------------------------------------+
- | argument | type | information |
- +============+===========+==========================================================+
- | url | string | requested url |
- +------------+-----------+----------------------------------------------------------+
- | method | string | HTTP request methode |
- +------------+-----------+----------------------------------------------------------+
- | headers | set | HTTP header informations |
- +------------+-----------+----------------------------------------------------------+
- | data | set | HTTP data informations (parsed if ``method != 'GET'``) |
- +------------+-----------+----------------------------------------------------------+
- | cookies | set | HTTP cookies |
- +------------+-----------+----------------------------------------------------------+
- | verify | boolean | Performing SSL-Validity check |
- +------------+-----------+----------------------------------------------------------+
-
- 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
-
- returning results
- -----------------
-
- Searx has the possiblity to return results in different media-types.
- Currently the following media-types are supported:
-
- - default
- - images
- - videos
- - torrent
- - map
-
- to set another media-type as default, you must set the parameter
- ``template`` to the required type.
-
- default
- ~~~~~~~
-
- +--------------------+------------------------------------------------------------------------------------------------------------------------------------+
- | result-parameter | information |
- +====================+====================================================================================================================================+
- | url | string, which is representing the url of the result |
- +--------------------+------------------------------------------------------------------------------------------------------------------------------------+
- | title | string, which is representing the title of the result |
- +--------------------+------------------------------------------------------------------------------------------------------------------------------------+
- | content | string, which is giving a general result-text |
- +--------------------+------------------------------------------------------------------------------------------------------------------------------------+
- | publishedDate | `datetime.datetime <https://docs.python.org/2/library/datetime.html#datetime-objects>`__, represent when the result is published |
- +--------------------+------------------------------------------------------------------------------------------------------------------------------------+
-
- images
- ~~~~~~
-
- to use this template, the parameter
-
- +--------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------+
- | result-parameter | information |
- +====================+===========================================================================================================================================================+
- | template | is set to ``images.html`` |
- +--------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------+
- | url | string, which is representing the url to the result site |
- +--------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------+
- | title | string, which is representing the title of the result *(partly implemented)* |
- +--------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------+
- | content | *(partly implemented)* |
- +--------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------+
- | publishedDate | `datetime.datetime <https://docs.python.org/2/library/datetime.html#datetime-objects>`__, represent when the result is published *(partly implemented)* |
- +--------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------+
- | img\_src | string, which is representing the url to the result image |
- +--------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------+
- | thumbnail\_src | string, which is representing the url to a small-preview image |
- +--------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------+
-
- videos
- ~~~~~~
-
- +--------------------+------------------------------------------------------------------------------------------------------------------------------------+
- | result-parameter | information |
- +====================+====================================================================================================================================+
- | template | is set to ``videos.html`` |
- +--------------------+------------------------------------------------------------------------------------------------------------------------------------+
- | url | string, which is representing the url of the result |
- +--------------------+------------------------------------------------------------------------------------------------------------------------------------+
- | title | string, which is representing the title of the result |
- +--------------------+------------------------------------------------------------------------------------------------------------------------------------+
- | content | *(not implemented yet)* |
- +--------------------+------------------------------------------------------------------------------------------------------------------------------------+
- | publishedDate | `datetime.datetime <https://docs.python.org/2/library/datetime.html#datetime-objects>`__, represent when the result is published |
- +--------------------+------------------------------------------------------------------------------------------------------------------------------------+
- | thumbnail | string, which is representing the url to a small-preview image |
- +--------------------+------------------------------------------------------------------------------------------------------------------------------------+
-
- torrent
- ~~~~~~~
-
- +------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+
- | result-parameter | information |
- +------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+
- | template | is set to ```torrent.html``` |
- +------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+
- | url | string, which is representing the url of the result |
- +------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+
- | title | string, which is representing the title of the result |
- +------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+
- | content | string, which is giving a general result-text |
- +------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+
- | publishedDate | [datetime.datetime](https://docs.python.org/2/library/datetime.html#datetime-objects), represent when the result is published _(not implemented yet)_ |
- +------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+
- | seed | int, number of seeder |
- +------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+
- | leech | int, number of leecher |
- +------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+
- | filesize | int, size of file in bytes |
- +------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+
- | files | int, number of files |
- +------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+
- | magnetlink | string, which is the [magnetlink](https://en.wikipedia.org/wiki/Magnet_URI_scheme) of the result |
- +------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+
- | torrentfile | string, which is the torrentfile of the result |
- +------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+
-
-
- map
- ~~~
-
- +-------------------------+------------------------------------------------------------------------------------------------------------------------------------+
- | result-parameter | information |
- +=========================+====================================================================================================================================+
- | url | string, which is representing the url of the result |
- +-------------------------+------------------------------------------------------------------------------------------------------------------------------------+
- | title | string, which is representing the title of the result |
- +-------------------------+------------------------------------------------------------------------------------------------------------------------------------+
- | content | string, which is giving a general result-text |
- +-------------------------+------------------------------------------------------------------------------------------------------------------------------------+
- | publishedDate | `datetime.datetime <https://docs.python.org/2/library/datetime.html#datetime-objects>`__, represent when the result is published |
- +-------------------------+------------------------------------------------------------------------------------------------------------------------------------+
- | latitude | latitude of result (in decimal format) |
- +-------------------------+------------------------------------------------------------------------------------------------------------------------------------+
- | longitude | longitude of result (in decimal format) |
- +-------------------------+------------------------------------------------------------------------------------------------------------------------------------+
- | boundingbox | boundingbox of result (array of 4. values ``[lat-min, lat-max, lon-min, lon-max]``) |
- +-------------------------+------------------------------------------------------------------------------------------------------------------------------------+
- | geojson | geojson of result (http://geojson.org) |
- +-------------------------+------------------------------------------------------------------------------------------------------------------------------------+
- | osm.type | type of osm-object (if OSM-Result) |
- +-------------------------+------------------------------------------------------------------------------------------------------------------------------------+
- | osm.id | id of osm-object (if OSM-Result) |
- +-------------------------+------------------------------------------------------------------------------------------------------------------------------------+
- | address.name | name of object |
- +-------------------------+------------------------------------------------------------------------------------------------------------------------------------+
- | address.road | street adress of object |
- +-------------------------+------------------------------------------------------------------------------------------------------------------------------------+
- | address.house\_number | house number of object |
- +-------------------------+------------------------------------------------------------------------------------------------------------------------------------+
- | address.locality | city, place of object |
- +-------------------------+------------------------------------------------------------------------------------------------------------------------------------+
- | address.postcode | postcode of object |
- +-------------------------+------------------------------------------------------------------------------------------------------------------------------------+
- | address.country | country of object |
- +-------------------------+------------------------------------------------------------------------------------------------------------------------------------+
|