Skip to content

Commit f0362cd

Browse files
Merge pull request #29 from bingeng99/feature/language
[fix] the parameters LANGUAGE is not supported in the FT.SEARCH
2 parents 96bd878 + 5e9b094 commit f0362cd

File tree

2 files changed

+74
-4
lines changed

2 files changed

+74
-4
lines changed

redisearch/query.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,10 @@ func (q Query) serialize() redis.Args {
157157
args = args.Add("SCORER", q.Scorer)
158158
}
159159

160+
if q.Language != "" {
161+
args = args.Add("LANGUAGE", q.Language)
162+
}
163+
160164
if q.Expander != "" {
161165
args = args.Add("EXPANDER", q.Expander)
162166
}

redisearch/query_test.go

Lines changed: 70 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@ func TestPaging_serialize(t *testing.T) {
1616
fields fields
1717
want redis.Args
1818
}{
19-
{"default", fields{0,10}, redis.Args{} },
20-
{"0-1000", fields{0,1000}, redis.Args{"LIMIT",0,1000} },
21-
{"100-200", fields{100,200}, redis.Args{"LIMIT",100,200} },
19+
{"default", fields{0, 10}, redis.Args{}},
20+
{"0-1000", fields{0, 1000}, redis.Args{"LIMIT", 0, 1000}},
21+
{"100-200", fields{100, 200}, redis.Args{"LIMIT", 100, 200}},
2222
}
2323
for _, tt := range tests {
2424
t.Run(tt.name, func(t *testing.T) {
@@ -31,4 +31,70 @@ func TestPaging_serialize(t *testing.T) {
3131
}
3232
})
3333
}
34-
}
34+
}
35+
36+
func TestQuery_serialize(t *testing.T) {
37+
var raw = "test_query"
38+
type fields struct {
39+
Raw string
40+
Flags Flag
41+
InKeys []string
42+
ReturnFields []string
43+
Language string
44+
Expander string
45+
Scorer string
46+
SortBy *SortingKey
47+
HighlightOpts *HighlightOptions
48+
SummarizeOpts *SummaryOptions
49+
}
50+
tests := []struct {
51+
name string
52+
fields fields
53+
want redis.Args
54+
}{
55+
{"default", fields{Raw: ""}, redis.Args{"", "LIMIT", 0, 0}},
56+
{"Raw", fields{Raw: raw}, redis.Args{raw, "LIMIT", 0, 0}},
57+
{"QueryVerbatim", fields{Raw: raw, Flags: QueryVerbatim}, redis.Args{raw, "LIMIT", 0, 0, "VERBATIM"}},
58+
{"QueryNoContent", fields{Raw: raw, Flags: QueryNoContent}, redis.Args{raw, "LIMIT", 0, 0, "NOCONTENT"}},
59+
{"QueryInOrder", fields{Raw: raw, Flags: QueryInOrder}, redis.Args{raw, "LIMIT", 0, 0, "INORDER"}},
60+
{"QueryWithPayloads", fields{Raw: raw, Flags: QueryWithPayloads}, redis.Args{raw, "LIMIT", 0, 0, "WITHPAYLOADS"}},
61+
{"QueryWithScores", fields{Raw: raw, Flags: QueryWithScores}, redis.Args{raw, "LIMIT", 0, 0, "WITHSCORES"}},
62+
{"InKeys", fields{Raw: raw, InKeys: []string{"test_key"}}, redis.Args{raw, "LIMIT", 0, 0, "INKEYS", 1, "test_key"}},
63+
{"ReturnFields", fields{Raw: raw, ReturnFields: []string{"test_field"}}, redis.Args{raw, "LIMIT", 0, 0, "RETURN", 1, "test_field"}},
64+
{"Language", fields{Raw: raw, Language: "chinese"}, redis.Args{raw, "LIMIT", 0, 0, "LANGUAGE", "chinese"}},
65+
{"Expander", fields{Raw: raw, Expander: "test_expander"}, redis.Args{raw, "LIMIT", 0, 0, "EXPANDER", "test_expander"}},
66+
{"Scorer", fields{Raw: raw, Scorer: "test_scorer"}, redis.Args{raw, "LIMIT", 0, 0, "SCORER", "test_scorer"}},
67+
{"SortBy", fields{Raw: raw, SortBy: &SortingKey{
68+
Field: "test_field",
69+
Ascending: true}}, redis.Args{raw, "LIMIT", 0, 0, "SORTBY", "test_field", "ASC"}},
70+
{"HighlightOpts", fields{Raw: raw, HighlightOpts: &HighlightOptions{
71+
Fields: []string{"test_field"},
72+
Tags: [2]string{"<tag>", "</tag>"},
73+
}}, redis.Args{raw, "LIMIT", 0, 0, "HIGHLIGHT", "FIELDS", 1, "test_field", "TAGS", "<tag>", "</tag>"}},
74+
{"SummarizeOpts", fields{Raw: raw, SummarizeOpts: &SummaryOptions{
75+
Fields: []string{"test_field"},
76+
FragmentLen: 20,
77+
NumFragments: 3,
78+
Separator: "...",
79+
}}, redis.Args{raw, "LIMIT", 0, 0, "SUMMARIZE", "FIELDS", 1, "test_field", "LEN", 20, "FRAGS", 3, "SEPARATOR", "..."}},
80+
}
81+
for _, tt := range tests {
82+
t.Run(tt.name, func(t *testing.T) {
83+
q := Query{
84+
Raw: tt.fields.Raw,
85+
Flags: tt.fields.Flags,
86+
InKeys: tt.fields.InKeys,
87+
ReturnFields: tt.fields.ReturnFields,
88+
Language: tt.fields.Language,
89+
Expander: tt.fields.Expander,
90+
Scorer: tt.fields.Scorer,
91+
SortBy: tt.fields.SortBy,
92+
HighlightOpts: tt.fields.HighlightOpts,
93+
SummarizeOpts: tt.fields.SummarizeOpts,
94+
}
95+
if g := q.serialize(); !reflect.DeepEqual(g, tt.want) {
96+
t.Errorf("serialize() = %v, want %v", g, tt.want)
97+
}
98+
})
99+
}
100+
}

0 commit comments

Comments
 (0)