summaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
authorMarkus Heiser <markus.heiser@darmarIT.de>2021-09-10 09:20:26 +0000
committerGitHub <noreply@github.com>2021-09-10 09:20:26 +0000
commitb671e0364fbfb09701fb675ba23a7d7bebbcf744 (patch)
tree5cc14908449328de044464fbccb4950d08632a99 /docs
parent449ff708985b86c85a4badc8494a577c792c4dd7 (diff)
parent0b27c8698f7b5bbca5083cf234fabbc7d7308349 (diff)
Merge pull request #302 from dalf/mod_plugin_on_result
[mod] plugin: call on_result for each result of each engines.
Diffstat (limited to 'docs')
-rw-r--r--docs/dev/plugins.rst58
-rw-r--r--docs/src/searx.search.rst38
2 files changed, 83 insertions, 13 deletions
diff --git a/docs/dev/plugins.rst b/docs/dev/plugins.rst
index 16262ea6..44401e34 100644
--- a/docs/dev/plugins.rst
+++ b/docs/dev/plugins.rst
@@ -26,8 +26,8 @@ Example plugin
# attach callback to the post search hook
# request: flask request object
# ctx: the whole local context of the post search hook
- def post_search(request, ctx):
- ctx['search'].suggestions.add('example')
+ def post_search(request, search):
+ search.result_container.suggestions.add('example')
return True
External plugins
@@ -50,20 +50,52 @@ Plugin entry points
Entry points (hooks) define when a plugin runs. Right now only three hooks are
implemented. So feel free to implement a hook if it fits the behaviour of your
-plugin.
+plugin. A plugin doesn't need to implement all the hooks.
-Pre search hook
----------------
-Runs BEFORE the search request. Function to implement: ``pre_search``
+.. py:function:: pre_search(request, search) -> bool
-Post search hook
-----------------
+ Runs BEFORE the search request.
-Runs AFTER the search request. Function to implement: ``post_search``
+ `search.result_container` can be changed.
-Result hook
------------
+ Return a boolean:
-Runs when a new result is added to the result list. Function to implement:
-``on_result``
+ * True to continue the search
+ * False to stop the search
+
+ :param flask.request request:
+ :param searx.search.SearchWithPlugins search:
+ :return: False to stop the search
+ :rtype: bool
+
+
+.. py:function:: post_search(request, search) -> None
+
+ Runs AFTER the search request.
+
+ :param flask.request request: Flask request.
+ :param searx.search.SearchWithPlugins search: Context.
+
+
+.. py:function:: on_result(request, search, result) -> bool
+
+ Runs for each result of each engine.
+
+ `result` can be changed.
+
+ If `result["url"]` is defined, then `result["parsed_url"] = urlparse(result['url'])`
+
+ .. warning::
+ `result["url"]` can be changed, but `result["parsed_url"]` must be updated too.
+
+ Return a boolean:
+
+ * True to keep the result
+ * False to remove the result
+
+ :param flask.request request:
+ :param searx.search.SearchWithPlugins search:
+ :param typing.Dict result: Result, see - :ref:`engine results`
+ :return: True to keep the result
+ :rtype: bool
diff --git a/docs/src/searx.search.rst b/docs/src/searx.search.rst
new file mode 100644
index 00000000..ad76d418
--- /dev/null
+++ b/docs/src/searx.search.rst
@@ -0,0 +1,38 @@
+.. _searx.search:
+
+======
+Search
+======
+
+.. autoclass:: searx.search.EngineRef
+ :members:
+
+.. autoclass:: searx.search.SearchQuery
+ :members:
+
+.. autoclass:: searx.search.Search
+
+ .. attribute:: search_query
+ :type: searx.search.SearchQuery
+
+ .. attribute:: result_container
+ :type: searx.results.ResultContainer
+
+ .. automethod:: search() -> searx.results.ResultContainer
+
+.. autoclass:: searx.search.SearchWithPlugins
+ :members:
+
+ .. attribute:: search_query
+ :type: searx.search.SearchQuery
+
+ .. attribute:: result_container
+ :type: searx.results.ResultContainer
+
+ .. attribute:: ordered_plugin_list
+ :type: typing.List
+
+ .. attribute:: request
+ :type: flask.request
+
+ .. automethod:: search() -> searx.results.ResultContainer