aboutsummaryrefslogtreecommitdiffstats
path: root/routers/web
diff options
context:
space:
mode:
authorwxiaoguang <wxiaoguang@gmail.com>2025-01-03 00:32:02 +0800
committerGitHub <noreply@github.com>2025-01-03 00:32:02 +0800
commit45973a100ba2a70c9035076eb88be37177918138 (patch)
treecde2cf8e49585d3b399ff1d97df96749d5340e0c /routers/web
parent9882917bce9d582c9c1ed202d554e4a6d61ed5e4 (diff)
downloadgitea-45973a100ba2a70c9035076eb88be37177918138.tar.gz
gitea-45973a100ba2a70c9035076eb88be37177918138.zip
Fix bleve fuzziness search (#33078)
Close #31565
Diffstat (limited to 'routers/web')
-rw-r--r--routers/web/explore/code.go19
-rw-r--r--routers/web/repo/search.go24
-rw-r--r--routers/web/user/code.go20
3 files changed, 20 insertions, 43 deletions
diff --git a/routers/web/explore/code.go b/routers/web/explore/code.go
index 3658144610..ae5ff3db76 100644
--- a/routers/web/explore/code.go
+++ b/routers/web/explore/code.go
@@ -11,6 +11,7 @@ import (
code_indexer "code.gitea.io/gitea/modules/indexer/code"
"code.gitea.io/gitea/modules/setting"
"code.gitea.io/gitea/modules/templates"
+ "code.gitea.io/gitea/routers/common"
"code.gitea.io/gitea/services/context"
)
@@ -32,18 +33,10 @@ func Code(ctx *context.Context) {
ctx.Data["Title"] = ctx.Tr("explore")
ctx.Data["PageIsExplore"] = true
ctx.Data["PageIsExploreCode"] = true
-
- language := ctx.FormTrim("l")
- keyword := ctx.FormTrim("q")
-
- isFuzzy := ctx.FormOptionalBool("fuzzy").ValueOrDefault(true)
-
- ctx.Data["Keyword"] = keyword
- ctx.Data["Language"] = language
- ctx.Data["IsFuzzy"] = isFuzzy
ctx.Data["PageIsViewCode"] = true
- if keyword == "" {
+ prepareSearch := common.PrepareCodeSearch(ctx)
+ if prepareSearch.Keyword == "" {
ctx.HTML(http.StatusOK, tplExploreCode)
return
}
@@ -80,9 +73,9 @@ func Code(ctx *context.Context) {
if (len(repoIDs) > 0) || isAdmin {
total, searchResults, searchResultLanguages, err = code_indexer.PerformSearch(ctx, &code_indexer.SearchOptions{
RepoIDs: repoIDs,
- Keyword: keyword,
- IsKeywordFuzzy: isFuzzy,
- Language: language,
+ Keyword: prepareSearch.Keyword,
+ IsKeywordFuzzy: prepareSearch.IsFuzzy,
+ Language: prepareSearch.Language,
Paginator: &db.ListOptions{
Page: page,
PageSize: setting.UI.RepoSearchPagingNum,
diff --git a/routers/web/repo/search.go b/routers/web/repo/search.go
index cbc7e2e0fe..c60301475f 100644
--- a/routers/web/repo/search.go
+++ b/routers/web/repo/search.go
@@ -12,6 +12,7 @@ import (
code_indexer "code.gitea.io/gitea/modules/indexer/code"
"code.gitea.io/gitea/modules/setting"
"code.gitea.io/gitea/modules/templates"
+ "code.gitea.io/gitea/routers/common"
"code.gitea.io/gitea/services/context"
)
@@ -29,18 +30,9 @@ func indexSettingToGitGrepPathspecList() (list []string) {
// Search render repository search page
func Search(ctx *context.Context) {
- language := ctx.FormTrim("l")
- keyword := ctx.FormTrim("q")
-
- isFuzzy := ctx.FormOptionalBool("fuzzy").ValueOrDefault(true)
-
- ctx.Data["Keyword"] = keyword
- ctx.Data["Language"] = language
- ctx.Data["IsFuzzy"] = isFuzzy
ctx.Data["PageIsViewCode"] = true
- ctx.Data["IsRepoIndexerEnabled"] = setting.Indexer.RepoIndexerEnabled
-
- if keyword == "" {
+ prepareSearch := common.PrepareCodeSearch(ctx)
+ if prepareSearch.Keyword == "" {
ctx.HTML(http.StatusOK, tplSearch)
return
}
@@ -57,9 +49,9 @@ func Search(ctx *context.Context) {
var err error
total, searchResults, searchResultLanguages, err = code_indexer.PerformSearch(ctx, &code_indexer.SearchOptions{
RepoIDs: []int64{ctx.Repo.Repository.ID},
- Keyword: keyword,
- IsKeywordFuzzy: isFuzzy,
- Language: language,
+ Keyword: prepareSearch.Keyword,
+ IsKeywordFuzzy: prepareSearch.IsFuzzy,
+ Language: prepareSearch.Language,
Paginator: &db.ListOptions{
Page: page,
PageSize: setting.UI.RepoSearchPagingNum,
@@ -75,9 +67,9 @@ func Search(ctx *context.Context) {
ctx.Data["CodeIndexerUnavailable"] = !code_indexer.IsAvailable(ctx)
}
} else {
- res, err := git.GrepSearch(ctx, ctx.Repo.GitRepo, keyword, git.GrepOptions{
+ res, err := git.GrepSearch(ctx, ctx.Repo.GitRepo, prepareSearch.Keyword, git.GrepOptions{
ContextLineNumber: 1,
- IsFuzzy: isFuzzy,
+ IsFuzzy: prepareSearch.IsFuzzy,
RefName: git.RefNameFromBranch(ctx.Repo.BranchName).String(), // BranchName should be default branch or the first existing branch
PathspecList: indexSettingToGitGrepPathspecList(),
})
diff --git a/routers/web/user/code.go b/routers/web/user/code.go
index 9d515596f1..665ce1a6a6 100644
--- a/routers/web/user/code.go
+++ b/routers/web/user/code.go
@@ -11,6 +11,7 @@ import (
code_indexer "code.gitea.io/gitea/modules/indexer/code"
"code.gitea.io/gitea/modules/setting"
"code.gitea.io/gitea/modules/templates"
+ "code.gitea.io/gitea/routers/common"
shared_user "code.gitea.io/gitea/routers/web/shared/user"
"code.gitea.io/gitea/services/context"
)
@@ -34,20 +35,11 @@ func CodeSearch(ctx *context.Context) {
}
ctx.Data["IsPackageEnabled"] = setting.Packages.Enabled
- ctx.Data["IsRepoIndexerEnabled"] = setting.Indexer.RepoIndexerEnabled
ctx.Data["Title"] = ctx.Tr("explore.code")
-
- language := ctx.FormTrim("l")
- keyword := ctx.FormTrim("q")
-
- isFuzzy := ctx.FormOptionalBool("fuzzy").ValueOrDefault(true)
-
- ctx.Data["Keyword"] = keyword
- ctx.Data["Language"] = language
- ctx.Data["IsFuzzy"] = isFuzzy
ctx.Data["IsCodePage"] = true
- if keyword == "" {
+ prepareSearch := common.PrepareCodeSearch(ctx)
+ if prepareSearch.Keyword == "" {
ctx.HTML(http.StatusOK, tplUserCode)
return
}
@@ -77,9 +69,9 @@ func CodeSearch(ctx *context.Context) {
if len(repoIDs) > 0 {
total, searchResults, searchResultLanguages, err = code_indexer.PerformSearch(ctx, &code_indexer.SearchOptions{
RepoIDs: repoIDs,
- Keyword: keyword,
- IsKeywordFuzzy: isFuzzy,
- Language: language,
+ Keyword: prepareSearch.Keyword,
+ IsKeywordFuzzy: prepareSearch.IsFuzzy,
+ Language: prepareSearch.Language,
Paginator: &db.ListOptions{
Page: page,
PageSize: setting.UI.RepoSearchPagingNum,