如何通过完全前缀匹配来执行搜索和筛选?
上次更新 2024 年 3 月 22 日
问题
如何通过完全前缀匹配来执行搜索和筛选?
答案
如果您希望请求精确的短语匹配 + 前缀,那么不要在以下示例中返回“九龙和新界”,TEXT
索引类型不起作用。
FT.CREATE location_idx ON HASH PREFIX 1 location: SCHEMA Name AS name TEXT
HSET location:1 Name "New York"
HSET location:2 Name "Newcastle"
HSET location:3 Name "Kowloon and New Kowloon"
This doesn't work:
FT.SEARCH location_idx "New*" RETURN 1 name
1) (integer) 3
2) "location:2"
3) 1) "name"
2) "Newcastle"
4) "location:1"
5) 1) "name"
2) "New York"
6) "location:3"
7) 1) "name"
2) "Kowloon and New Kowloon"
解决方案是用 TAG
字段代替 TEXT
。您应定义此索引。
FT.CREATE location_idx ON HASH PREFIX 1 location: SCHEMA Name AS name TAG
查询语法将是 "@name:{New*}"
。
FT.SEARCH location\_idx "@name:{New\*}" RETURN 1 name
1) (integer) 2
2) "location:1"
3) 1) "name"
2) "New York"
4) "location:2"
5) 1) "name"
2) "Newcastle"
参考
了解有关 TAG 字段 的更多信息。