[PR #13311] [MERGED] feat: Yacy search support #94189

Closed
opened 2026-05-15 20:09:19 -05:00 by GiteaMirror · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/open-webui/open-webui/pull/13311
Author: @stephen304
Created: 4/29/2025
Status: Merged
Merged: 4/29/2025
Merged by: @tjbck

Base: devHead: yacy-support


📝 Commits (5)

  • 0f73b96 first pass at yacy support copied from searxng
  • 240d91d Add yacy config for user/pass, automatically add yacy json api path
  • e6d43d7 Don't request nav and pass count to Yacy
  • f9b9217 Set Yacy search to text
  • ea16426 Remove unused kwargs in yacy, update comments.

📊 Changes

5 files changed (+183 additions, -0 deletions)

View changed files

📝 backend/open_webui/config.py (+18 -0)
📝 backend/open_webui/main.py (+6 -0)
backend/open_webui/retrieval/web/yacy.py (+85 -0)
📝 backend/open_webui/routers/retrieval.py (+26 -0)
📝 src/lib/components/admin/Settings/WebSearch.svelte (+48 -0)

📄 Description

Pull Request Checklist

Note to first-time contributors: Please open a discussion post in Discussions and describe your changes before submitting a pull request.

Before submitting, make sure you've checked the following:

  • Target branch: Please verify that the pull request targets the dev branch.
  • Description: Provide a concise description of the changes made in this pull request.
  • Changelog: Ensure a changelog entry following the format of Keep a Changelog is added at the bottom of the PR description.
  • Documentation: Have you updated relevant documentation Open WebUI Docs, or other documentation sources?
    PR opened: https://github.com/open-webui/docs/pull/518
  • Dependencies: Are there any new dependencies? Have you updated the dependency versions in the documentation?
  • Testing: Have you written and run sufficient tests to validate the changes?
    So far only manual tests, validating correct parameters passed to Yacy API, I know the authentication works since my Yacy instance has authentication enabled
  • Code review: Have you performed a self-review of your code, addressing any coding standard issues and ensuring adherence to the project's coding standards?
  • Prefix: To clearly categorize this pull request, prefix the pull request title using one of the following:
    • BREAKING CHANGE: Significant changes that may affect compatibility
    • build: Changes that affect the build system or external dependencies
    • ci: Changes to our continuous integration processes or workflows
    • chore: Refactor, cleanup, or other non-functional code changes
    • docs: Documentation update or addition
    • feat: Introduces a new feature or enhancement to the codebase
    • fix: Bug fix or error correction
    • i18n: Internationalization or localization changes
    • perf: Performance improvement
    • refactor: Code restructuring for better maintainability, readability, or scalability
    • style: Changes that do not affect the meaning of the code (white space, formatting, missing semi-colons, etc.)
    • test: Adding missing tests or correcting existing tests
    • WIP: Work in progress, a temporary label for incomplete or ongoing work

Changelog Entry

Description

Discussion #9888

  • This PR adds support for Yacy as a web search provider. It adds settings UI for Yacy URL and optional user/pass. The Yacy URL can include the /yacysearch.json or simply be a bare domain or subpath. The requested search result count is passed to Yacy as the results page size / limit.

Added

  • Added support for web search using Yacy instances

Additional Information

This support for Yacy is mostly a copy/paste of the searx integration

  • Added Yacy URL, username, and pass settings field
  • URL is processed to handle just the domain + optional subpath or the full path to /yacysearch.json
  • If either user or pass is set, digest auth is used. Leaving one blank should allow using digest auth with a username and no password or an empty username with password set (I did not test those use cases)
  • The result count configured in open webui is passed to Yacy to get the same number of results as will be used
  • The current implementation hard codes global search mode, that could be added as a toggle to enable non-federated search (my rationale for skipping this is that I assume most people with yacy in federation mode probably want to do federated searches)
  • The current implementation assumes the search results are in channels[0], I can't find any documentation on when channels has more than 1 array element, so I'm just assuming it's the same for all yacy instances.

Screenshots or Videos

tutorial_yacy

Contributor License Agreement

By submitting this pull request, I confirm that I have read and fully agree to the CONTRIBUTOR_LICENSE_AGREEMENT, and I am providing my contributions under its terms.


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/open-webui/open-webui/pull/13311 **Author:** [@stephen304](https://github.com/stephen304) **Created:** 4/29/2025 **Status:** ✅ Merged **Merged:** 4/29/2025 **Merged by:** [@tjbck](https://github.com/tjbck) **Base:** `dev` ← **Head:** `yacy-support` --- ### 📝 Commits (5) - [`0f73b96`](https://github.com/open-webui/open-webui/commit/0f73b9661653d13f52551a641e73e783e6cedc01) first pass at yacy support copied from searxng - [`240d91d`](https://github.com/open-webui/open-webui/commit/240d91d38d74cef447e39c9c54cb30e67a277130) Add yacy config for user/pass, automatically add yacy json api path - [`e6d43d7`](https://github.com/open-webui/open-webui/commit/e6d43d70f3f2ce8ee7abfb18a3d2a18594d7b97e) Don't request nav and pass count to Yacy - [`f9b9217`](https://github.com/open-webui/open-webui/commit/f9b9217e986a51ef140bf1452947bfb00362a094) Set Yacy search to text - [`ea16426`](https://github.com/open-webui/open-webui/commit/ea16426a8db8e66365491f93339964c98e53a029) Remove unused kwargs in yacy, update comments. ### 📊 Changes **5 files changed** (+183 additions, -0 deletions) <details> <summary>View changed files</summary> 📝 `backend/open_webui/config.py` (+18 -0) 📝 `backend/open_webui/main.py` (+6 -0) ➕ `backend/open_webui/retrieval/web/yacy.py` (+85 -0) 📝 `backend/open_webui/routers/retrieval.py` (+26 -0) 📝 `src/lib/components/admin/Settings/WebSearch.svelte` (+48 -0) </details> ### 📄 Description # Pull Request Checklist ### Note to first-time contributors: Please open a discussion post in [Discussions](https://github.com/open-webui/open-webui/discussions) and describe your changes before submitting a pull request. **Before submitting, make sure you've checked the following:** - [x] **Target branch:** Please verify that the pull request targets the `dev` branch. - [x] **Description:** Provide a concise description of the changes made in this pull request. - [x] **Changelog:** Ensure a changelog entry following the format of [Keep a Changelog](https://keepachangelog.com/) is added at the bottom of the PR description. - [x] **Documentation:** Have you updated relevant documentation [Open WebUI Docs](https://github.com/open-webui/docs), or other documentation sources? PR opened: https://github.com/open-webui/docs/pull/518 - [x] **Dependencies:** Are there any new dependencies? Have you updated the dependency versions in the documentation? - [x] **Testing:** Have you written and run sufficient tests to validate the changes? So far only manual tests, validating correct parameters passed to Yacy API, I know the authentication works since my Yacy instance has authentication enabled - [x] **Code review:** Have you performed a self-review of your code, addressing any coding standard issues and ensuring adherence to the project's coding standards? - [x] **Prefix:** To clearly categorize this pull request, prefix the pull request title using one of the following: - **BREAKING CHANGE**: Significant changes that may affect compatibility - **build**: Changes that affect the build system or external dependencies - **ci**: Changes to our continuous integration processes or workflows - **chore**: Refactor, cleanup, or other non-functional code changes - **docs**: Documentation update or addition - **feat**: Introduces a new feature or enhancement to the codebase - **fix**: Bug fix or error correction - **i18n**: Internationalization or localization changes - **perf**: Performance improvement - **refactor**: Code restructuring for better maintainability, readability, or scalability - **style**: Changes that do not affect the meaning of the code (white space, formatting, missing semi-colons, etc.) - **test**: Adding missing tests or correcting existing tests - **WIP**: Work in progress, a temporary label for incomplete or ongoing work # Changelog Entry ### Description Discussion #9888 - This PR adds support for Yacy as a web search provider. It adds settings UI for Yacy URL and optional user/pass. The Yacy URL can include the `/yacysearch.json` or simply be a bare domain or subpath. The requested search result count is passed to Yacy as the results page size / limit. ### Added - Added support for web search using Yacy instances --- ### Additional Information This support for Yacy is mostly a copy/paste of the searx integration * Added Yacy URL, username, and pass settings field * URL is processed to handle just the domain + optional subpath or the full path to `/yacysearch.json` * If either user or pass is set, digest auth is used. Leaving one blank should allow using digest auth with a username and no password or an empty username with password set (I did not test those use cases) * The result count configured in open webui is passed to Yacy to get the same number of results as will be used * The current implementation hard codes `global` search mode, that could be added as a toggle to enable non-federated search (my rationale for skipping this is that I assume most people with yacy in federation mode probably want to do federated searches) * The current implementation assumes the search results are in `channels[0]`, I can't find any documentation on when `channels` has more than 1 array element, so I'm just assuming it's the same for all yacy instances. ### Screenshots or Videos ![tutorial_yacy](https://github.com/user-attachments/assets/1b8613fb-3dda-4fba-9f4a-a11cc2213d77) ### Contributor License Agreement By submitting this pull request, I confirm that I have read and fully agree to the [CONTRIBUTOR_LICENSE_AGREEMENT](CONTRIBUTOR_LICENSE_AGREEMENT), and I am providing my contributions under its terms. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
GiteaMirror added the pull-request label 2026-05-15 20:09:19 -05:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/open-webui#94189