如何使用INKEYS按Redis文档ID过滤?命令使用问题排查
Redis搜索INKEYS过滤文档ID失效问题解决
你当前的
FT.SEARCH命令写法有误,不需要对键名里的冒号进行转义。RedisSearch的INKEYS参数直接接收原始键名即可,转义冒号会导致Redis无法识别到目标键。正确的命令写法:
FT.SEARCH books-idx "@author_ids:{1 | 2}" INKEYS 1 ru203:book:details:9780002005883 NOCONTENT LIMIT 0 10000
问题原因:当你给冒号添加转义符后,Redis会将
ru203\:book\:details\:9780002005883当作完整键名匹配,但实际你的目标键是不带转义符的ru203:book:details:9780002005883,因此无法匹配到结果。redis-py对应用法:在redis-py的RedisSearch模块中,按文档ID过滤的对应方法是
Query.limit_ids(),直接传入原始键名列表即可,无需转义,示例代码:
from redis.commands.search import Query # 构造查询语句 q = Query("@author_ids:{1 | 2}").limit_ids(["ru203:book:details:9780002005883"]).no_content().limit(0, 10000) # 执行搜索 result = redis_client.ft("books-idx").search(q)
内容的提问来源于stack exchange,提问作者BPDev
相关产品推荐
相关产品推荐

