.. _engine results: .. _searx.results: ============== Engine Results ============== .. automodule:: searx.results :members: The result items are organized in the :py:obj:`container.ResultContainer` and rendered in the :ref:`result template macros` and :ref:`result template files`. .. contents:: Contents :depth: 2 :local: :backlinks: entry .. _standard result: Result items ============ A result **item** is a python dictionary with dedicated keys and values. In the result list a **standard result type** is identified by the existence of the key ``url``. Other **result types** are: - :py:obj:`searx.results.suggestion` - :py:obj:`searx.results.answer` - :py:obj:`searx.results.correction` - :py:obj:`searx.results.infobox` The **standard result type**: .. code:: python results.append({ 'template' : str, # result_header 'url' : str, 'title' : str, 'content' : str, 'img_src' : str, 'thumbnail' : str, # result_sub_header 'publishedDate' : datetime.datetime, 'length' : time.struct_time, 'author' : str, 'metadata' : str, }) template : ``str`` :reF:`Media type ` of the result item. Name of the :ref:`template file ` from :origin:`result_templates `. If unset, ``default.html`` is used. .. hint:: Each **standard result type** of an engine can be of different :reF:`media-types `. .. _result template macros: Result template macros ====================== .. _macro result_header: ``result_header`` ----------------- Execpt ``image.html`` this macro is used in all :ref:`result template files`. Fields used in the template :origin:`macro result_header `: url : ``str`` Link URL of the result item. title : ``str`` Link title of the result item. img_src, thumbnail : ``str`` URL of a image or thumbnail that is displayed in the result item. .. _macro result_sub_header: ``result_sub_header`` --------------------- Execpt ``image.html`` this macro is used in all :ref:`result template files`. Fields used in the template :origin:`macro result_sub_header `: publishedDate : :py:obj:`datetime.datetime` The date on which the object was published. length: :py:obj:`time.struct_time` Playing duration in seconds. author : ``str`` Author of the title. metadata : ``str`` Miscellaneous metadata. .. _engine_data: ``engine_data_form`` -------------------- The ``engine_data_form`` macro is used in :origin:`results,html ` in a HTML ``
`` element. The intention of this macro is to pass data of a engine from one :py:obj:`response ` to the :py:obj:`searx.search.SearchQuery` of the next :py:obj:`request `. .. hint:: The engine-data values are transfered to the next request when the user press the "next page" button. When a new search request is made, the enigine-data are removed from the client request. To pass data, engine's response handler can append result items of typ ``engine_data``. This is by example used to pass a token from the response to the next request: .. code:: python def response(resp): ... results.append({ 'engine_data': token, 'key': 'next_page_token', }) ... return results def request(query, params): page_token = params['engine_data'].get('next_page_token') .. _result media types: .. _result template files: Result template files ===================== The **media types** of the **standard result type** are the template files in the :origin:`result_templates `. ``default.html`` ---------------- Displays result fields from: - :ref:`macro result_header` and - :ref:`macro result_sub_header` Additional fields used in the :origin:`default.html `: content : ``str`` General text of the result item. iframe_src : ``str`` URL of an embedded ``