You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Redisearch全文索引在Python客户端查询无结果求助

问题排查与修复

核心错误点

1. 全文搜索语法不匹配

你用Query("s")搜索时,Redisearch的全文索引默认是匹配完整词汇,而你的key字段值是shahrukh khan这类完整名称,不存在独立的s词汇,因此返回空结果。要匹配以s开头的词汇,需使用前缀搜索语法:Query("s*")。

2. 索引创建的潜在问题

如果之前已存在同名索引,create_index会执行失败导致索引未生效。建议添加索引存在性检查,先删除旧索引再创建:

try:
    rs.dropindex()
except redis.ResponseError:
    pass  # 索引不存在时忽略错误

3. pl字段的JSON语法错误

你的d1/d2/d3中pl字段的字符串JSON存在语法错误:"t: "act"缺少引号闭合,应改为"t": "act"。虽然不影响当前key字段的搜索,但会导致后续操作pl字段时出错。

修复后的完整代码

import redis
from redis.commands.json.path import Path
from redis.commands.search.field import TextField, NumericField
from redis.commands.search.indexDefinition import IndexDefinition, IndexType
from redis.commands.search.query import Query

# 修正pl字段的JSON语法错误
d1 = {"key": "shahrukh khan", "pl": '{"d": "mvtv", "id": "1234-a", "img": "foo.jpg", "t": "act", "tme": "1965-"}', "org": "1", "p": 100}
d2 = {"key": "salman khan", "pl": '{"d": "mvtv", "id": "1236-a", "img": "fool.jpg", "t": "act", "tme": "1965-"}', "org": "1", "p": 100}
d3 = {"key": "aamir khan", "pl": '{"d": "mvtv", "id": "1237-a", "img": "fooler.jpg", "t": "act", "tme": "1965-"}', "org": "1", "p": 100}

schema = ( 
    TextField("$.key", as_name="key"),  
    NumericField("$.p", as_name="p"),  
) 

r = redis.Redis(host='localhost', port=6379)
rs = r.ft("idx:au") 

# 先删除旧索引(如果存在)
try:
    rs.dropindex()
except redis.ResponseError:
    pass

# 创建新索引
rs.create_index(     
    schema,     
    definition=IndexDefinition(     
        prefix=["au:"], index_type=IndexType.JSON   
    )    
)

# 插入数据
r.json().set("au:mvtv-1234-a", Path.root_path(), d1)  
r.json().set("au:mvtv-1236-a", Path.root_path(), d2)  
r.json().set("au:mvtv-1237-a", Path.root_path(), d3)  

# 使用前缀搜索语法查询以s开头的key
result = rs.search(Query("s*"))
print(result.docs)

验证结果

运行修复后的代码,rs.search(Query("s*"))会返回shahrukh khan和salman khan两个文档,符合预期。

内容的提问来源于stack exchange,提问作者NedStarkOfWinterfell

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 07:16:00