gitforge/modules/setting
Alex619829 e35880e7ac Add code search with zoekt support (#8827)
This PR adds zoekt as a code search engine for forgejo. This Pull Request is a continuation of the discussion #8302.
The meilisearch search engine was not suitable, as it is not designed for searching by code. The zoekt project was proposed instead. Zoekt copes well with code indexing, but its operating principle differs from such search engines as elasticsearch.
While elasticsearch can return a result in a ready-made form (with pagination, ready-made snippets, etc.) and forgejo only needs to show this result in the interface with a little work with the data, zoekt works completely differently.

Zoekt finds matches in the repository index and returns a response. The response contains a line with the search word, its number from the file, and also a context, if specified in the request. This response is not suitable for Forgejo, so you need to assemble it yourself. To assemble the response from Zoekt into a form acceptable for Forgejo, I had to write some code and create a new function `searchZoektResult`, since the existing `searchResult` function is completely unsuitable for this search engine. I also had to write logic for pagination, highlighting, and correct display of lines in found snippets with a match, but this is a feature of Zoekt.
At the moment, Zoekt does not support deleting a repository index by repo_id, it only supports complete deletion of all repositories. But I still implemented the Delete function, which deletes a specific repository by its ID.

Co-authored-by: Aleksandr Gamzin <gamzin@altlinux.org>
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/8827
Reviewed-by: Shiny Nematoda <snematoda@noreply.codeberg.org>
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
2026-05-28 20:52:34 +02:00
..
config
actions.go chore: unify signing key configuration across modules (#11194) 2026-04-21 19:39:33 +02:00
actions_test.go chore: unify signing key configuration across modules (#11194) 2026-04-21 19:39:33 +02:00
admin.go feat: add manage_password to user disable features (#10541) 2026-01-26 18:58:39 +01:00
admin_test.go
api.go
asset_dynamic.go
asset_static.go
attachment.go
attachment_test.go
authorized_integration.go feat: cache OIDC metadata & JWKS when read by authorized integration (#12275) 2026-04-28 02:13:06 +02:00
badges.go
cache.go ci: detect and prevent empty case statements in Go code (#11593) 2026-03-10 02:50:28 +01:00
camo.go
config.go chore: add modernizer linter (#11936) 2026-04-02 03:29:37 +02:00
config_env.go chore: add modernizer linter (#11936) 2026-04-02 03:29:37 +02:00
config_env_test.go
config_provider.go fix: [quota.default].TOTAL config setting supports unit suffixes (#9252) 2025-09-12 00:44:09 +02:00
config_provider_test.go fix: [quota.default].TOTAL config setting supports unit suffixes (#9252) 2025-09-12 00:44:09 +02:00
cors.go
cron.go
cron_test.go fix: LFS GC is never running because of a bug in the parsing of the INI file (#9202) 2025-09-09 22:32:49 +02:00
database.go chore: upgrade to https://code.forgejo.org/xorm/xorm v1.4.0 (#12639) 2026-05-20 20:20:08 +02:00
database_sqlite.go
database_test.go feat: Add support for loading db password from file via PASSD_URI (#10421) 2025-12-18 20:55:56 +01:00
disposable_email_domain_data.go
f3.go chore: update gof3/v3 v3.11.15 (#10673) 2026-01-13 16:59:56 +01:00
f3_test.go chore: update gof3/v3 v3.11.15 (#10673) 2026-01-13 16:59:56 +01:00
federation.go
forgejo_storage_test.go
git.go feat: fsck incoming objects (#12695) 2026-05-25 14:51:04 +02:00
git_test.go feat: fsck incoming objects (#12695) 2026-05-25 14:51:04 +02:00
highlight.go
i18n.go fix(UI): i18n: improve naming (#7539) 2025-04-15 05:48:19 +00:00
incoming_email.go ci: detect and prevent empty case statements in Go code (#11593) 2026-03-10 02:50:28 +01:00
incoming_email_test.go feat: add _URI entries for mail config (#8116) 2025-07-09 23:15:26 +02:00
indexer.go Add code search with zoekt support (#8827) 2026-05-28 20:52:34 +02:00
indexer_test.go Update module github.com/golangci/golangci-lint/v2/cmd/golangci-lint to v2.5.0 (forgejo) (#9563) 2025-10-08 13:15:33 +02:00
lfs.go chore: remove #11024 workarounds (#12301) 2026-05-01 22:10:10 +02:00
lfs_test.go
log.go chore: add modernizer linter (#11936) 2026-04-02 03:29:37 +02:00
log_test.go feat(log): better parseable and configurable ssh-logs (#9056) 2025-09-11 18:59:24 +02:00
mailer.go ci: detect and prevent empty case statements in Go code (#11593) 2026-03-10 02:50:28 +01:00
mailer_test.go feat: add _URI entries for mail config (#8116) 2025-07-09 23:15:26 +02:00
markup.go chore: add modernizer linter (#11936) 2026-04-02 03:29:37 +02:00
metrics.go
migrations.go
mime_type_map.go
mirror.go chore: add modernizer linter (#11936) 2026-04-02 03:29:37 +02:00
moderation.go feat: add configurable timeout for automatically removing resolved reports (#7940) 2025-07-28 14:52:13 +02:00
oauth2.go feat: add option to use preferred_username claim when registering users via oauth2 (#12504) 2026-05-18 00:14:46 +02:00
oauth2_test.go
other.go
packages.go fix: [quota.default].TOTAL config setting supports unit suffixes (#9252) 2025-09-12 00:44:09 +02:00
packages_test.go fix: [quota.default].TOTAL config setting supports unit suffixes (#9252) 2025-09-12 00:44:09 +02:00
path.go
path_test.go
picture.go
project.go
proxy.go
pwa.go Move web app manifest to a own cache-able route and add a setting to set "display": "standalone"; Closes #2638 (#5384) 2026-01-09 17:49:29 +01:00
queue.go
quota.go fix: [quota.default].TOTAL config setting supports unit suffixes (#9252) 2025-09-12 00:44:09 +02:00
quota_test.go fix: [quota.default].TOTAL config setting supports unit suffixes (#9252) 2025-09-12 00:44:09 +02:00
repository.go fix(ui)!: remove squash merge committer trailer admin option (#11096) 2026-02-07 12:58:26 +01:00
repository_archive.go
repository_archive_test.go
repository_test.go feat(sec): Add SSH signing support for instances (#6897) 2025-04-11 13:25:35 +00:00
security.go chore: unify signing key configuration across modules (#11194) 2026-04-21 19:39:33 +02:00
server.go Move web app manifest to a own cache-able route and add a setting to set "display": "standalone"; Closes #2638 (#5384) 2026-01-09 17:49:29 +01:00
server_test.go
service.go
service_test.go
session.go branding!: make cookies brand independent (#10645) 2026-03-19 04:34:27 +01:00
setting.go feat: authorized integrations DB models and authentication implementation (#12261) 2026-04-26 20:52:42 +02:00
setting_test.go Move web app manifest to a own cache-able route and add a setting to set "display": "standalone"; Closes #2638 (#5384) 2026-01-09 17:49:29 +01:00
ssh.go feat: ensure only expected ssh public keys are in authorized_keys file (#10010) 2025-11-09 01:06:04 +01:00
storage.go chore: add modernizer linter (#11936) 2026-04-02 03:29:37 +02:00
storage_test.go
task.go
time.go
ui.go feat: add admin views for federation configuration, hosts and users (#11115) 2026-04-09 19:38:33 +02:00
webhook.go