summaryrefslogtreecommitdiff
path: root/docs/dev/engines
AgeCommit message (Collapse)Author
2025-01-28[refactor] typification of SearXNG / EngineResultsMarkus Heiser
In [1] and [2] we discussed the need of a Result.results property and how we can avoid unclear code. This patch implements a class for the reslut-lists of engines:: searx.result_types.EngineResults A simple example for the usage in engine development:: from searx.result_types import EngineResults ... def response(resp) -> EngineResults: res = EngineResults() ... res.add( res.types.Answer(answer="lorem ipsum ..", url="https://example.org") ) ... return res [1] https://github.com/searxng/searxng/pull/4183#pullrequestreview-257400034 [2] https://github.com/searxng/searxng/pull/4183#issuecomment-2614301580 Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-01-28[refactor] typification of SearXNG (initial) / result items (part 1)Markus Heiser
Typification of SearXNG ======================= This patch introduces the typing of the results. The why and how is described in the documentation, please generate the documentation .. $ make docs.clean docs.live and read the following articles in the "Developer documentation": - result types --> http://0.0.0.0:8000/dev/result_types/index.html The result types are available from the `searx.result_types` module. The following have been implemented so far: - base result type: `searx.result_type.Result` --> http://0.0.0.0:8000/dev/result_types/base_result.html - answer results --> http://0.0.0.0:8000/dev/result_types/answer.html including the type for translations (inspired by #3925). For all other types (which still need to be set up in subsequent PRs), template documentation has been created for the transition period. Doc of the fields used in Templates =================================== The template documentation is the basis for the typing and is the first complete documentation of the results (needed for engine development). It is the "working paper" (the plan) with which further typifications can be implemented in subsequent PRs. - https://github.com/searxng/searxng/issues/357 Answer Templates ================ With the new (sub) types for `Answer`, the templates for the answers have also been revised, `Translation` are now displayed with collapsible entries (inspired by #3925). !en-de dog Plugins & Answerer ================== The implementation for `Plugin` and `Answer` has been revised, see documentation: - Plugin: http://0.0.0.0:8000/dev/plugins/index.html - Answerer: http://0.0.0.0:8000/dev/answerers/index.html With `AnswerStorage` and `AnswerStorage` to manage those items (in follow up PRs, `ArticleStorage`, `InfoStorage` and .. will be implemented) Autocomplete ============ The autocompletion had a bug where the results from `Answer` had not been shown in the past. To test activate autocompletion and try search terms for which we have answerers - statistics: type `min 1 2 3` .. in the completion list you should find an entry like `[de] min(1, 2, 3) = 1` - random: type `random uuid` .. in the completion list, the first item is a random UUID Extended Types ============== SearXNG extends e.g. the request and response types of flask and httpx, a module has been set up for type extensions: - Extended Types --> http://0.0.0.0:8000/dev/extended_types.html Unit-Tests ========== The unit tests have been completely revised. In the previous implementation, the runtime (the global variables such as `searx.settings`) was not initialized before each test, so the runtime environment with which a test ran was always determined by the tests that ran before it. This was also the reason why we sometimes had to observe non-deterministic errors in the tests in the past: - https://github.com/searxng/searxng/issues/2988 is one example for the Runtime issues, with non-deterministic behavior .. - https://github.com/searxng/searxng/pull/3650 - https://github.com/searxng/searxng/pull/3654 - https://github.com/searxng/searxng/pull/3642#issuecomment-2226884469 - https://github.com/searxng/searxng/pull/3746#issuecomment-2300965005 Why msgspec.Struct ================== We have already discussed typing based on e.g. `TypeDict` or `dataclass` in the past: - https://github.com/searxng/searxng/pull/1562/files - https://gist.github.com/dalf/972eb05e7a9bee161487132a7de244d2 - https://github.com/searxng/searxng/pull/1412/files - https://github.com/searxng/searxng/pull/1356 In my opinion, TypeDict is unsuitable because the objects are still dictionaries and not instances of classes / the `dataclass` are classes but ... The `msgspec.Struct` combine the advantages of typing, runtime behaviour and also offer the option of (fast) serializing (incl. type check) the objects. Currently not possible but conceivable with `msgspec`: Outsourcing the engines into separate processes, what possibilities this opens up in the future is left to the imagination! Internally, we have already defined that it is desirable to decouple the development of the engines from the development of the SearXNG core / The serialization of the `Result` objects is a prerequisite for this. HINT: The threads listed above were the template for this PR, even though the implementation here is based on msgspec. They should also be an inspiration for the following PRs of typification, as the models and implementations can provide a good direction. Why just one commit? ==================== I tried to create several (thematically separated) commits, but gave up at some point ... there are too many things to tackle at once / The comprehensibility of the commits would not be improved by a thematic separation. On the contrary, we would have to make multiple changes at the same places and the goal of a change would be vaguely recognizable in the fog of the commits. Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-01-14[json_engine] document existing optionsLucki
2024-11-24[chore] *: fix typos detected by typos-cliBnyro
2024-11-24[feat] engine: add adobe stock video and audio enginesMarkus Heiser
The engine has been revised; there is now the option ``adobe_content_types`` with which it is possible to configure engines for video and audio from the adobe stock. BTW this patch adds documentation to the engine. To test all three engines in one use a search term like:: !asi !asv !asa sound Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-10-03[doc] slightly improve documentation of SQL enginesMarkus Heiser
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-09-15[feat] gitlab: implement dedicated moduleBnyro
Co-authored-by: Markus Heiser <markus.heiser@darmarit.de>
2024-07-27[docs] engine_overview.rst: add length and views parameter to videos templateBnyro
2024-07-27[feat] engine: implementation of geizhals.deBnyro
2024-07-14[feat] engine: implementation of alpine linux packagesBnyro
Co-authored-by: Markus Heiser <markus.heiser@darmarit.de>
2024-06-07[enh] Add engine for discourse forumsallendema_searxng_pi
2024-05-15[mod] package.html template: additional links (a python dict)Daniel Kukula
- Closes: https://github.com/searxng/searxng/issues/3456
2024-05-15[feat] engine: implementation of giteaBnyro
2024-03-10[doc] engine: mullvad letaMarkus Heiser
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-02-29[feat] engine: implementation of void linux packagesBnyro
Co-authored-by: Markus Heiser <markus.heiser@darmarit.de>
2024-02-25[refactor] images: add resolution, image format and filesize fieldsBnyro
Co-authored-by: Markus Heiser <markus.heiser@darmarit.de>
2024-02-25[docs] engine_overview: add packages result templateBnyro
2024-01-15[mod] presearch: add language & region supportMarkus Heiser
In Presearch there are languages for the UI and regions for narrowing down the search. With this change the SearXNG engine supports a search by region. The details can be found in the documentation of the source code. To test, you can search terms like:: !presearch bmw :zh-TW !presearch bmw :en-CA 1. You should get results corresponding to the region (Taiwan, Canada) 2. and in the language (Chinese, Englisch). 3. The context in info box content is in the same language. Exceptions: 1. Region or language is not supported by Presearch or 2. SearXNG user did not selected a region tag, example:: !presearch bmw :en Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-11-27[feat] engine: implementation of bpbBnyro
2023-10-09[fix] matrixrooms add proper MRS integrationAine
Related: - https://github.com/searxng/searxng/issues/2918
2023-10-09[feat] duckduckgo: support for videos and newsBnyro
2023-10-06[feat] engine: implementation of mastodonBnyro
2023-10-05[mod] engine - simplify region & lang handling, make filters configurableMarkus Heiser
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-09-21[feat] engine: implementation of wallhavenBnyro
2023-09-18[fix] spellingjazzzooo
2023-09-17[feat] implementation of qwant lite for web searchMarkus Heiser
Related: https://github.com/searxng/searxng/issues/2719 Replace: https://github.com/searxng/searxng/pull/2748 Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-09-17[feat] engine: implemenation of moviepilot (de)Bnyro
2023-09-11[mod] library of congress: fix engineBnyro
2023-09-02[feat] engine: implementation of odyseeHackurei
2023-08-27[doc] add documentation of Mwmbl engine & autocompleterMarkus Heiser
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-08-15[mod] improve seekr engines and add documentationMarkus Heiser
Tis patch adds some more fields to the result items and changed paging to the ``nextResultSet`` given in seekr's JSON response. Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-08-13[fix] typos in documentation & messagesToxyFlog1627
2023-08-11[doc] add tagesschau API to the debveloper documentationMarkus Heiser
supplement to the commit e25d1c728 Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-08-10[feat] engine: support for lemmy communities, posts, comments and usersBnyro
2023-08-08[mod] implement brave (WEB) engine to replace XPath configurationMarkus Heiser
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-08-06[doc] engine bt4g: add documentation to docs/dev/engines/online/Markus Heiser
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-08-04[mod] engine: wikimedia - improve results, add addition settings & docMarkus Heiser
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-08-03[doc] engine: YacyMarkus Heiser
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-08-03[doc] engine piped: add documentation to docs/dev/engines/online/Markus Heiser
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2023-07-07[feat] engine: re-enables z-library (zlibrary-global.se)Paolo Basso
- re-enables z-library as the new domain zlibrary-global.se is now available from the open web. The announcement of the domain: https://www.reddit.com/r/zlibrary/comments/13whe08/mod_note_zlibraryglobalse_domain_is_officially/ It is an official domain, it requires to log in to the "personal" subdomain only to download files, but the search works. - changes the result template of zlibrary to paper.html, filling the appropriate fields - implements language filtering for zlibrary - implement zlibrary custom filters (engine traits) - refactor and document the zlibrary engine
2023-07-01[doc] rearranges Settings & Engines docs for better readabilityMarkus Heiser
We have built up detailed documentation of the *settings* and the *engines* over the past few years. However, this documentation was still spread over various chapters and was difficult to navigate in its entirety. This patch rearranges the Settings & Engines documentation for better readability. To review new ordered docs:: make docs.clean docs.live Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>