From b667634b32e240f3f3260ab7e304f72f4ff75659 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Fri, 14 Apr 2023 19:27:11 +0200 Subject: [PATCH] Fix meilisearch not working when searching across multiple repositories (#24109) This would happen in the issue and pull request dashboards, while the per repository lists worked fine. Use OR instead of AND for repo IDs. --- modules/indexer/issues/meilisearch.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/modules/indexer/issues/meilisearch.go b/modules/indexer/issues/meilisearch.go index 5c45236e66..319dc3e30b 100644 --- a/modules/indexer/issues/meilisearch.go +++ b/modules/indexer/issues/meilisearch.go @@ -6,6 +6,7 @@ package issues import ( "context" "strconv" + "strings" "sync" "time" @@ -120,10 +121,11 @@ func (b *MeilisearchIndexer) Delete(ids ...int64) error { // Search searches for issues by given conditions. // Returns the matching issue IDs func (b *MeilisearchIndexer) Search(ctx context.Context, keyword string, repoIDs []int64, limit, start int) (*SearchResult, error) { - filter := make([][]string, 0, len(repoIDs)) + repoFilters := make([]string, 0, len(repoIDs)) for _, repoID := range repoIDs { - filter = append(filter, []string{"repo_id = " + strconv.FormatInt(repoID, 10)}) + repoFilters = append(repoFilters, "repo_id = "+strconv.FormatInt(repoID, 10)) } + filter := strings.Join(repoFilters, " OR ") searchRes, err := b.client.Index(b.indexerName).Search(keyword, &meilisearch.SearchRequest{ Filter: filter, Limit: int64(limit),