Skip to content

Commit 0486d0e

Browse files
authored
fix(search): query parser bug (#423)
1 parent f196dc1 commit 0486d0e

File tree

3 files changed

+16
-15
lines changed

3 files changed

+16
-15
lines changed

internal/database/fts/tsquery.go

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -116,15 +116,13 @@ outer:
116116
}
117117
token := tokens[i]
118118
addExpr := func(expr string) {
119-
switch operator {
120-
case OperatorAnd:
121-
parts = append(parts, "&")
122-
case OperatorOr:
123-
parts = append(parts, "|")
124-
case OperatorFollowedBy:
125-
parts = append(parts, "<->")
126-
default:
127-
if len(parts) > 0 {
119+
if len(parts) > 0 {
120+
switch operator {
121+
case OperatorOr:
122+
parts = append(parts, "|")
123+
case OperatorFollowedBy:
124+
parts = append(parts, "<->")
125+
default:
128126
parts = append(parts, "&")
129127
}
130128
}

internal/database/fts/tsquery_test.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
1-
package fts
1+
package fts_test
22

33
import (
44
"testing"
55

6+
"github.com/bitmagnet-io/bitmagnet/internal/database/fts"
67
"github.com/stretchr/testify/assert"
78
)
89

@@ -32,11 +33,12 @@ func TestAppQueryToTsquery(t *testing.T) {
3233
{"Chinese", "给我做一个三明治", "Gei <-> Wo <-> Zuo <-> Yi <-> Ge <-> San <-> Ming <-> Zhi"},
3334
{"Arabic", "اصنع لي شطيرة", "'Sn`' & ly & 'shTyr@'"},
3435
{"Arabic (quoted)", "\"اصنع لي شطيرة\"", "'Sn`' <-> ly <-> 'shTyr@'"},
36+
{"ampersand prefix", "&eacute;", "eacute"},
3537
}
3638
for _, tt := range tests {
3739
t.Run(tt.name, func(t *testing.T) {
3840
t.Parallel()
39-
assert.Equal(t, tt.want, AppQueryToTsquery(tt.input))
41+
assert.Equal(t, tt.want, fts.AppQueryToTsquery(tt.input))
4042
})
4143
}
4244
}

internal/database/fts/tsvector_test.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
1-
package fts
1+
package fts_test
22

33
import (
44
"testing"
55

6+
"github.com/bitmagnet-io/bitmagnet/internal/database/fts"
67
"github.com/stretchr/testify/assert"
78
"github.com/stretchr/testify/require"
89
)
@@ -12,12 +13,12 @@ func TestParseTsvector(t *testing.T) {
1213

1314
tests := []struct {
1415
input string
15-
wantTsv Tsvector
16+
wantTsv fts.Tsvector
1617
wantStr string
1718
}{
1819
{
1920
input: " 'a':1A bb:2b 'cc ccc':3C 'dD''Dd''':4D e a bb:5 ",
20-
wantTsv: Tsvector{
21+
wantTsv: fts.Tsvector{
2122
"a": {
2223
1: 'A',
2324
},
@@ -40,7 +41,7 @@ func TestParseTsvector(t *testing.T) {
4041
t.Run(test.input, func(t *testing.T) {
4142
t.Parallel()
4243

43-
got, err := ParseTsvector(test.input)
44+
got, err := fts.ParseTsvector(test.input)
4445

4546
require.NoError(t, err)
4647
assert.Equal(t, test.wantTsv, got)

0 commit comments

Comments
 (0)