From 1030b50462585eddc37d86f4be69234826de6500 Mon Sep 17 00:00:00 2001 From: puni9869 Date: Mon, 8 Jun 2026 09:10:03 +0530 Subject: [PATCH] fix: adding no_assignee index in bleve --- modules/indexer/issues/bleve/bleve.go | 24 ++++++++++++------------ modules/indexer/issues/internal/model.go | 2 +- modules/indexer/issues/util.go | 2 +- 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/modules/indexer/issues/bleve/bleve.go b/modules/indexer/issues/bleve/bleve.go index fd9b92c4dd..483889c7ac 100644 --- a/modules/indexer/issues/bleve/bleve.go +++ b/modules/indexer/issues/bleve/bleve.go @@ -259,18 +259,18 @@ func (b *Indexer) Search(ctx context.Context, options *internal.SearchOptions) ( queries = append(queries, inner_bleve.NumericEqualityQuery(posterIDInt64, "poster_id")) } - if options.AssigneeID != "" { - if options.AssigneeID == "(any)" { - queries = append(queries, inner_bleve.BoolFieldQuery(false, "no_assignee")) - } else if options.AssigneeID == "(none)" { - queries = append(queries, inner_bleve.BoolFieldQuery(true, "no_assignee")) - } else { - assigneeIDInt64, _ := strconv.ParseInt(options.AssigneeID, 10, 64) - queries = append(queries, bleve.NewDisjunctionQuery( - inner_bleve.NumericEqualityQuery(assigneeIDInt64, "assignee_ids"), - inner_bleve.NumericEqualityQuery(assigneeIDInt64, "assignee_id"), - )) - } + switch options.AssigneeID { + case "": + case "(any)": + queries = append(queries, inner_bleve.BoolFieldQuery(false, "no_assignee")) + case "(none)": + queries = append(queries, inner_bleve.BoolFieldQuery(true, "no_assignee")) + default: + assigneeIDInt64, _ := strconv.ParseInt(options.AssigneeID, 10, 64) + queries = append(queries, bleve.NewDisjunctionQuery( + inner_bleve.NumericEqualityQuery(assigneeIDInt64, "assignee_ids"), + inner_bleve.NumericEqualityQuery(assigneeIDInt64, "assignee_id"), + )) } if options.MentionID.Has() { diff --git a/modules/indexer/issues/internal/model.go b/modules/indexer/issues/internal/model.go index a19a4b1f3c..a553505e61 100644 --- a/modules/indexer/issues/internal/model.go +++ b/modules/indexer/issues/internal/model.go @@ -36,7 +36,7 @@ type IndexerData struct { PosterID int64 `json:"poster_id"` AssigneeID int64 `json:"assignee_id"` AssigneeIDs []int64 `json:"assignee_ids"` - NoAssignee bool `json:"no_assignee"` // True if AssigneeID and AssigneeIDs are empty + NoAssignee bool `json:"no_assignee"` // True if the issue has no assignees MentionIDs []int64 `json:"mention_ids"` ReviewedIDs []int64 `json:"reviewed_ids"` ReviewRequestedIDs []int64 `json:"review_requested_ids"` diff --git a/modules/indexer/issues/util.go b/modules/indexer/issues/util.go index b0ed7facc7..7dec92bf76 100644 --- a/modules/indexer/issues/util.go +++ b/modules/indexer/issues/util.go @@ -119,7 +119,7 @@ func getIssueIndexerData(ctx context.Context, issueID int64) (*internal.IndexerD PosterID: issue.PosterID, AssigneeID: issue.AssigneeID, AssigneeIDs: assigneeIDs, - NoAssignee: issue.AssigneeID == 0 && len(assigneeIDs) == 0, + NoAssignee: len(assigneeIDs) == 0, MentionIDs: mentionIDs, ReviewedIDs: reviewedIDs, ReviewRequestedIDs: reviewRequestedIDs,