From b14bded1d3df391a81297a7570b3ed410defc376 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Duffeck?= Date: Fri, 22 Apr 2022 17:54:42 +0200 Subject: [PATCH] Limit the search to the relevant fields --- extensions/search/pkg/search/index/index.go | 2 +- extensions/search/pkg/search/index/index_test.go | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/extensions/search/pkg/search/index/index.go b/extensions/search/pkg/search/index/index.go index 45a041b35e..865bb9b2b0 100644 --- a/extensions/search/pkg/search/index/index.go +++ b/extensions/search/pkg/search/index/index.go @@ -75,7 +75,7 @@ func (i *Index) Remove(ri *sprovider.ResourceInfo) error { // Search searches the index according to the criteria specified in the given SearchIndexRequest func (i *Index) Search(ctx context.Context, req *searchsvc.SearchIndexRequest) (*searchsvc.SearchIndexResponse, error) { query := bleve.NewConjunctionQuery( - bleve.NewQueryStringQuery(req.Query), + bleve.NewQueryStringQuery("Name:"+req.Query), bleve.NewQueryStringQuery("RootID:"+req.Ref.ResourceId.StorageId+"!"+req.Ref.ResourceId.OpaqueId), // Limit search to the space bleve.NewQueryStringQuery("Path:"+req.Ref.Path+"*"), // Limit search to this directory in the space ) diff --git a/extensions/search/pkg/search/index/index_test.go b/extensions/search/pkg/search/index/index_test.go index 0d54f42758..05c6d03dcc 100644 --- a/extensions/search/pkg/search/index/index_test.go +++ b/extensions/search/pkg/search/index/index_test.go @@ -86,6 +86,21 @@ var _ = Describe("Index", func() { Expect(len(res.Matches)).To(Equal(0)) }) + It("limits the search to the relevant fields", func() { + res, err := i.Search(ctx, &searchsvc.SearchIndexRequest{ + Ref: &searchmsg.Reference{ + ResourceId: &searchmsg.ResourceID{ + StorageId: ref.ResourceId.StorageId, + OpaqueId: ref.ResourceId.OpaqueId, + }, + }, + Query: "*" + ref.ResourceId.OpaqueId + "*", + }) + Expect(err).ToNot(HaveOccurred()) + Expect(res).ToNot(BeNil()) + Expect(len(res.Matches)).To(Equal(0)) + }) + It("finds files by name, prefix or substring match", func() { queries := []string{"foo.pdf", "foo*", "*oo.p*"} for _, query := range queries {