feat(search): substring/AND terms, nested folder scope, limit 1000 (#49)
Release Please / Release Please (push) Skipped
Release / GoReleaser (push) Skipped
Tests / Secret scan (gitleaks) (push) Skipped
Tests / Test (Go 1.25) (push) Skipped
Tests / Test (Go stable) (push) Skipped
Tests / Secret scan (gitleaks) (pull_request) Successful in 4s
Tests / Test (Go stable) (pull_request) Successful in 26s
Tests / Test (Go 1.25) (pull_request) Successful in 39s
Release Please / Release Please (push) Skipped
Release / GoReleaser (push) Skipped
Tests / Secret scan (gitleaks) (push) Skipped
Tests / Test (Go 1.25) (push) Skipped
Tests / Test (Go stable) (push) Skipped
Tests / Secret scan (gitleaks) (pull_request) Successful in 4s
Tests / Test (Go stable) (pull_request) Successful in 26s
Tests / Test (Go 1.25) (pull_request) Successful in 39s
This commit is contained in:
+32
-4
@@ -55,7 +55,7 @@ func TestESSearchRequestFiltersAndLimit(t *testing.T) {
|
||||
Text: "Storchen",
|
||||
FolderID: "649",
|
||||
Extensions: []string{".PDF", "pdf", "docx"},
|
||||
Limit: 999,
|
||||
Limit: 5000,
|
||||
}, "42")
|
||||
if got.Size != maxESLimit {
|
||||
t.Errorf("size = %d, want cap %d", got.Size, maxESLimit)
|
||||
@@ -65,10 +65,10 @@ func TestESSearchRequestFiltersAndLimit(t *testing.T) {
|
||||
switch {
|
||||
case f.Term != nil && f.Term["tenantId"] != nil:
|
||||
tenant++
|
||||
case f.Term != nil && f.Term["folders.folderId"] != nil:
|
||||
case f.Nested != nil:
|
||||
folder++
|
||||
if f.Term["folders.folderId"] != "649" {
|
||||
t.Errorf("folder filter = %+v", f.Term)
|
||||
if f.Nested.Path != "folders" || f.Nested.Query.Term["folders.folderId"] != "649" {
|
||||
t.Errorf("folder filter = %+v, want nested folders term 649", f.Nested)
|
||||
}
|
||||
case f.Wildcard != nil:
|
||||
wildcards++
|
||||
@@ -82,6 +82,34 @@ func TestESSearchRequestFiltersAndLimit(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestESSearchRequestSubstringAndsTerms(t *testing.T) {
|
||||
got := esSearchRequest(SearchQuery{Text: "Rechnung 2025", Substring: true, FolderID: "522"}, "")
|
||||
if got.Query.Bool.Must[0].MultiMatch != nil {
|
||||
t.Fatalf("substring must not use multi_match: %+v", got.Query.Bool.Must)
|
||||
}
|
||||
if len(got.Query.Bool.Must) != 2 {
|
||||
t.Fatalf("must = %+v, want two ANDed wildcard terms", got.Query.Bool.Must)
|
||||
}
|
||||
want := []string{"*rechnung*", "*2025*"}
|
||||
for i, m := range got.Query.Bool.Must {
|
||||
if m.Wildcard == nil || m.Wildcard["title"] != want[i] {
|
||||
t.Errorf("must[%d] = %+v, want title wildcard %q", i, m, want[i])
|
||||
}
|
||||
}
|
||||
if len(got.Query.Bool.Filter) != 1 || got.Query.Bool.Filter[0].Nested == nil {
|
||||
t.Errorf("folder filter = %+v, want nested", got.Query.Bool.Filter)
|
||||
}
|
||||
}
|
||||
|
||||
func TestEscapeWildcard(t *testing.T) {
|
||||
cases := map[string]string{"*rechnung*": "rechnung", "a?b\\c": "abc", "plain": "plain"}
|
||||
for in, want := range cases {
|
||||
if got := escapeWildcard(in); got != want {
|
||||
t.Errorf("escapeWildcard(%q) = %q, want %q", in, got, want)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestESSearchRequestRejectsEmptyTextAtSearch(t *testing.T) {
|
||||
s, err := NewESSearcher(ESConfig{URL: "http://localhost:9200"})
|
||||
if err != nil {
|
||||
|
||||
Reference in New Issue
Block a user