From 079a6a5ec03eaf3f83eaa755e8243aaf000c9a9f Mon Sep 17 00:00:00 2001 From: flash Date: Sun, 28 Jun 2026 18:13:25 +0200 Subject: [PATCH] fix(search): use MustNot query for Deleted filter in bleve BoolFieldQuery{Bool: false, Field: "Deleted"} does not match documents where the Deleted field was never explicitly set. Bleve does not index zero-value bools by default, so after an index rebuild (or on fresh installations), all new documents lack an indexed Deleted field and are excluded from every search query, resulting in 0 results. Switch to a BooleanQuery with MustNot(Deleted==true), which correctly includes all documents where Deleted is absent or false, and only excludes documents explicitly marked as deleted. --- services/search/pkg/bleve/backend.go | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/services/search/pkg/bleve/backend.go b/services/search/pkg/bleve/backend.go index 8adcdda09e..cb693c1314 100644 --- a/services/search/pkg/bleve/backend.go +++ b/services/search/pkg/bleve/backend.go @@ -51,12 +51,18 @@ func (b *Backend) Search(_ context.Context, sir *searchService.SearchIndexReques return nil, err } + // Exclude documents that have been explicitly marked as deleted. + // We use a negation (MustNot) rather than matching Deleted==false, + // because bleve does not index zero-value bools, so documents where + // Deleted was never explicitly set would be excluded from results. + deletedQuery := bleve.NewBooleanQuery() + deletedQuery.AddMustNot(&query.BoolFieldQuery{ + Bool: true, + FieldVal: "Deleted", + }) + q := bleve.NewConjunctionQuery( - // Skip documents that have been marked as deleted - &query.BoolFieldQuery{ - Bool: false, - FieldVal: "Deleted", - }, + deletedQuery, createdQuery, )