Skip to content

Commit c430f5a

Browse files
authored
feat: add symbols search in tag (#5895)
1 parent 142f44b commit c430f5a

File tree

2 files changed

+13
-1
lines changed

2 files changed

+13
-1
lines changed

src/core/search/lexer.lex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ sq \'
3737
esc_chars ['"\?\\abfnrtv]
3838
esc_seq \\{esc_chars}
3939
term_ch \w
40-
tag_val_ch {term_ch}|\\[,.<>{}\[\]\\\"\':;!@#$%^&*()\-+=~\/ ]
40+
tag_val_ch [^,.<>{}\[\]\\\"\?':;!@#$%^&*()\-+=~\/| ]|\\.
4141
astrsk_ch \*
4242

4343

src/server/search/search_family_test.cc

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -545,6 +545,18 @@ TEST_F(SearchFamilyTest, TagOptions) {
545545
EXPECT_THAT(Run({"ft.search", "i1", "@color:{blue}"}), AreDocIds("d:2", "d:4"));
546546
}
547547

548+
TEST_F(SearchFamilyTest, SymbolsInTag) {
549+
Run({"FT.CREATE", "demo_idx", "ON", "HASH", "PREFIX", "1", "doc:", "SCHEMA", "tags", "TAG"});
550+
Run({"HSET", "doc:1", "name", "First Item", "tags", "@first"});
551+
Run({"HSET", "doc:2", "name", "Second Item", "tags", "?second"});
552+
Run({"HSET", "doc:3", "name", "Third Item", "tags", ":third"});
553+
Run({"HSET", "doc:4", "name", "Fourth Item", "tags", "\"fourth"});
554+
EXPECT_THAT(Run({"FT.SEARCH", "demo_idx", R"(@tags:{\?second})"}), AreDocIds("doc:2"));
555+
EXPECT_THAT(Run({"FT.SEARCH", "demo_idx", R"(@tags:{\@first})"}), AreDocIds("doc:1"));
556+
EXPECT_THAT(Run({"FT.SEARCH", "demo_idx", R"(@tags:{\:third})"}), AreDocIds("doc:3"));
557+
EXPECT_THAT(Run({"FT.SEARCH", "demo_idx", R"(@tags:{\"fourth})"}), AreDocIds("doc:4"));
558+
}
559+
548560
TEST_F(SearchFamilyTest, TagNumbers) {
549561
Run({"hset", "d:1", "number", "1"});
550562
Run({"hset", "d:2", "number", "2"});

0 commit comments

Comments
 (0)