From 339b32ffabe17c053bbce73f7ff9022f6ff8363e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Duffeck?= Date: Wed, 9 Nov 2022 08:29:41 +0100 Subject: [PATCH 1/5] Filter hidden files from search results --- services/search/pkg/search/index/index.go | 5 +++++ services/search/pkg/search/index/index_test.go | 9 +++++++++ 2 files changed, 14 insertions(+) diff --git a/services/search/pkg/search/index/index.go b/services/search/pkg/search/index/index.go index 3a274d1afcf..1327c9621cc 100644 --- a/services/search/pkg/search/index/index.go +++ b/services/search/pkg/search/index/index.go @@ -56,6 +56,7 @@ type indexDocument struct { Type uint64 Deleted bool + Hidden bool } // Index represents a bleve based search index @@ -219,9 +220,12 @@ func (i *Index) Move(id, newParentID *sprovider.ResourceId, fullPath string) err func (i *Index) Search(ctx context.Context, req *searchsvc.SearchIndexRequest) (*searchsvc.SearchIndexResponse, error) { deletedQuery := bleve.NewBoolFieldQuery(false) deletedQuery.SetField("Deleted") + hiddenQuery := bleve.NewBoolFieldQuery(false) + hiddenQuery.SetField("Hidden") query := bleve.NewConjunctionQuery( bleve.NewQueryStringQuery(req.Query), deletedQuery, // Skip documents that have been marked as deleted + hiddenQuery, // Skip documents that are hidden ) if req.Ref != nil { query = bleve.NewConjunctionQuery( @@ -297,6 +301,7 @@ func toEntity(ref *sprovider.Reference, ri *sprovider.ResourceInfo) *indexDocume MimeType: ri.MimeType, Type: uint64(ri.Type), Deleted: false, + Hidden: strings.HasPrefix(ri.Path, "."), } if ri.Mtime != nil { diff --git a/services/search/pkg/search/index/index_test.go b/services/search/pkg/search/index/index_test.go index 1708b766842..154ec041c43 100644 --- a/services/search/pkg/search/index/index_test.go +++ b/services/search/pkg/search/index/index_test.go @@ -176,6 +176,15 @@ var _ = Describe("Index", func() { assertDocCount(ref.ResourceId, `Name:1234*`, 1) }) + It("filters hidden files", func() { + ri.Path = ".hidden.pdf" + ref.Path = "./" + ri.Path + err := i.Add(ref, ri) + Expect(err).ToNot(HaveOccurred()) + + assertDocCount(ref.ResourceId, `Name:*hidden*`, 0) + }) + Context("with a file in the root of the space", func() { JustBeforeEach(func() { err := i.Add(ref, ri) From c6dd3a04ae6999c2f1ad53e2f420cadbf1c97a26 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Duffeck?= Date: Wed, 9 Nov 2022 08:36:05 +0100 Subject: [PATCH 2/5] Add changelog --- changelog/unreleased/filter-hidden-files.md | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 changelog/unreleased/filter-hidden-files.md diff --git a/changelog/unreleased/filter-hidden-files.md b/changelog/unreleased/filter-hidden-files.md new file mode 100644 index 00000000000..5e69e406b3f --- /dev/null +++ b/changelog/unreleased/filter-hidden-files.md @@ -0,0 +1,7 @@ +Enhancement: Add the "hidden" state to the search index + +We changed the search service to store the "hidden" state of entries in the +search index. That will allow for filtering/searching hidden files in the +future. + +https://github.com/owncloud/ocis/pull/5018 From 9a6d3e43044f86b793296a54866722c683f00f50 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Duffeck?= Date: Wed, 9 Nov 2022 14:30:10 +0100 Subject: [PATCH 3/5] Do not filter hidden files by default --- services/search/pkg/search/index/index.go | 3 --- services/search/pkg/search/index/index_test.go | 2 +- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/services/search/pkg/search/index/index.go b/services/search/pkg/search/index/index.go index 1327c9621cc..fc0a4158622 100644 --- a/services/search/pkg/search/index/index.go +++ b/services/search/pkg/search/index/index.go @@ -220,12 +220,9 @@ func (i *Index) Move(id, newParentID *sprovider.ResourceId, fullPath string) err func (i *Index) Search(ctx context.Context, req *searchsvc.SearchIndexRequest) (*searchsvc.SearchIndexResponse, error) { deletedQuery := bleve.NewBoolFieldQuery(false) deletedQuery.SetField("Deleted") - hiddenQuery := bleve.NewBoolFieldQuery(false) - hiddenQuery.SetField("Hidden") query := bleve.NewConjunctionQuery( bleve.NewQueryStringQuery(req.Query), deletedQuery, // Skip documents that have been marked as deleted - hiddenQuery, // Skip documents that are hidden ) if req.Ref != nil { query = bleve.NewConjunctionQuery( diff --git a/services/search/pkg/search/index/index_test.go b/services/search/pkg/search/index/index_test.go index 154ec041c43..5d37077e14e 100644 --- a/services/search/pkg/search/index/index_test.go +++ b/services/search/pkg/search/index/index_test.go @@ -182,7 +182,7 @@ var _ = Describe("Index", func() { err := i.Add(ref, ri) Expect(err).ToNot(HaveOccurred()) - assertDocCount(ref.ResourceId, `Name:*hidden*`, 0) + assertDocCount(ref.ResourceId, `Name:*hidden* +Hidden:true`, 0) }) Context("with a file in the root of the space", func() { From f33d05b38a84d0d51aabf934183c0809a0119213 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Duffeck?= Date: Thu, 10 Nov 2022 14:18:10 +0100 Subject: [PATCH 4/5] Set the hidden fields when converting fields to an entity --- services/search/pkg/search/index/index.go | 1 + 1 file changed, 1 insertion(+) diff --git a/services/search/pkg/search/index/index.go b/services/search/pkg/search/index/index.go index fc0a4158622..fd1fb374da2 100644 --- a/services/search/pkg/search/index/index.go +++ b/services/search/pkg/search/index/index.go @@ -320,6 +320,7 @@ func fieldsToEntity(fields map[string]interface{}) *indexDocument { MimeType: fields["MimeType"].(string), Type: uint64(fields["Type"].(float64)), Deleted: fields["Deleted"].(bool), + Hidden: fields["Hidden"].(bool), } return doc } From a2afd75dae3bf67bc417698c2d810a1f1f801edc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Duffeck?= Date: Thu, 10 Nov 2022 14:18:25 +0100 Subject: [PATCH 5/5] Fix test --- services/search/pkg/search/index/index_test.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/services/search/pkg/search/index/index_test.go b/services/search/pkg/search/index/index_test.go index 5d37077e14e..66e363520ac 100644 --- a/services/search/pkg/search/index/index_test.go +++ b/services/search/pkg/search/index/index_test.go @@ -182,7 +182,8 @@ var _ = Describe("Index", func() { err := i.Add(ref, ri) Expect(err).ToNot(HaveOccurred()) - assertDocCount(ref.ResourceId, `Name:*hidden* +Hidden:true`, 0) + assertDocCount(ref.ResourceId, `Name:*hidden* +Hidden:T`, 1) + assertDocCount(ref.ResourceId, `Name:*hidden* +Hidden:F`, 0) }) Context("with a file in the root of the space", func() {