Skip to content

Commit 9a9429a

Browse files
Avital-Finechayim
andauthored
Support CASESENSITIVE on Tag field (#161)
* Support CASESENSITIVE on Tag field Co-authored-by: Chayim <chayim@users.noreply.github.com>
1 parent 9ffa677 commit 9a9429a

File tree

2 files changed

+10
-5
lines changed

2 files changed

+10
-5
lines changed

redisearch/schema.go

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -169,10 +169,11 @@ type TextFieldOptions struct {
169169
// TagFieldOptions options for indexing tag fields
170170
type TagFieldOptions struct {
171171
// Separator is the custom separator between tags. defaults to comma (,)
172-
Separator byte
173-
NoIndex bool
174-
Sortable bool
175-
As string
172+
Separator byte
173+
NoIndex bool
174+
Sortable bool
175+
CaseSensitive bool
176+
As string
176177
}
177178

178179
// NumericFieldOptions Options for numeric fields
@@ -232,7 +233,7 @@ func NewTagField(name string) Field {
232233
return Field{
233234
Name: name,
234235
Type: TagField,
235-
Options: TagFieldOptions{Separator: ',', NoIndex: false},
236+
Options: TagFieldOptions{Separator: ',', NoIndex: false, CaseSensitive: false},
236237
}
237238
}
238239

@@ -427,6 +428,9 @@ func serializeField(f Field, args redis.Args) (argsOut redis.Args, err error) {
427428
if opts.NoIndex {
428429
argsOut = append(argsOut, "NOINDEX")
429430
}
431+
if opts.CaseSensitive {
432+
argsOut = append(argsOut, "CASESENSITIVE")
433+
}
430434
}
431435
case GeoField:
432436
argsOut = append(argsOut, f.Name, "GEO")

redisearch/schema_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ func TestSerializeSchema(t *testing.T) {
7575
{"default-and-tag", args{NewSchema(DefaultOptions).AddField(NewTagField("tag-field")), redis.Args{}}, redis.Args{"SCHEMA", "tag-field", "TAG", "SEPARATOR", ","}, false},
7676
{"default-and-tag-with-options", args{NewSchema(DefaultOptions).AddField(NewTagFieldOptions("tag-field", TagFieldOptions{Sortable: true, NoIndex: false, Separator: byte(','), As: "field"})), redis.Args{}}, redis.Args{"SCHEMA", "tag-field", "AS", "field", "TAG", "SEPARATOR", ",", "SORTABLE"}, false},
7777
{"default-and-tag-with-options_2", args{NewSchema(DefaultOptions).AddField(NewTagFieldOptions("tag-field", TagFieldOptions{Sortable: true, NoIndex: true, Separator: byte(','), As: "field"})), redis.Args{}}, redis.Args{"SCHEMA", "tag-field", "AS", "field", "TAG", "SEPARATOR", ",", "SORTABLE", "NOINDEX"}, false},
78+
{"default-and-tag-with-options_3", args{NewSchema(DefaultOptions).AddField(NewTagFieldOptions("tag-field", TagFieldOptions{Separator: byte(','), CaseSensitive: true, As: "field"})), redis.Args{}}, redis.Args{"SCHEMA", "tag-field", "AS", "field", "TAG", "SEPARATOR", ",", "CASESENSITIVE"}, false},
7879
{"default-geo-with-options", args{NewSchema(DefaultOptions).AddField(NewGeoFieldOptions("location", GeoFieldOptions{As: "loc"})), redis.Args{}}, redis.Args{"SCHEMA", "location", "AS", "loc", "GEO"}, false},
7980
{"default-geo-with-options_2", args{NewSchema(DefaultOptions).AddField(NewGeoFieldOptions("location", GeoFieldOptions{As: "loc", NoIndex: true})), redis.Args{}}, redis.Args{"SCHEMA", "location", "AS", "loc", "GEO", "NOINDEX"}, false},
8081
{"default-vector", args{NewSchema(DefaultOptions).AddField(NewVectorFieldOptions("vec", VectorFieldOptions{Algorithm: Flat, Attributes: map[string]interface{}{"DIM": 128}})), redis.Args{}}, redis.Args{"SCHEMA", "vec", "VECTOR", Flat, 2, "DIM", 128}, false},

0 commit comments

Comments
 (0)