如何索引名称不同但语义相似的字段?
最后更新于 2024 年 3 月 22 日
问题
如何索引名称不同但语义相似的字段?
答案
作为索引文档中语义相似字段的示例,如果键空间被划分为两类键,我们可能希望通过 price
进行搜索,并包含其名称的变体,例如 cost
。对于这个数据集
JSON.SET prod:123 $ '{"name":"book","price":20}'
JSON.SET prod:124 $ '{"name":"chair","price":50}'
JSON.SET item:32 $ '{"name":"pen","cost":5}'
如果 cost 和 price 是互斥的,可以创建一个索引,使用 PREFIX
指定索引哪些类型的文档,然后在两个字段上创建索引。
FT.CREATE idx ON JSON PREFIX 2 prod: item: SCHEMA $.name AS name TEXT "$.['price','cost']" AS price NUMERIC
FT.SEARCH idx '@name:(book|pen|chair) @price:[5 30]' RETURN 2 '$.price' '$.cost'
1) (integer) 2
2) "item:32"
3) 1) "$.cost"
2) "5"
4) "prod:123"
5) 1) "$.price"
2) "20"
参考资料
了解更多关于查询语法以自定义搜索操作。