自定义Knowledge Exploration Service查询报错:本地遇CancellationToken.Timeout!
排查CancellationToken.Timeout!错误及搜索建议无法获取的问题
我来帮你梳理下可能导致这个问题的几个关键点,结合你给出的文件内容来看,先从最明显的问题入手:
1. 同义词文件格式不完整且存在语法错误
你给出的Keyword.syn内容是["class","grade"] ["year"...,这明显是截断且不符合JSON语法的。官方要求的同义词文件应该是一个二维JSON数组,每组同义词用一个数组包裹,整个文件是数组的集合。比如正确的格式应该是:
[ ["class", "grade"], ["year", "academic year", "school year"] ]
如果文件语法错误,程序在加载同义词时会卡住,最终触发超时错误。
2. Schema中的类型大小写不一致
你的Search.schema里,Keyword的type写的是"String"(首字母大写),但其他属性ClassCD、Year的type是"string"(小写)。绝大多数搜索服务的Schema定义要求类型为小写的string,大小写不匹配会导致Schema解析失败,服务无法正确初始化,进而无法响应搜索请求,引发超时。
修正后的Schema应该统一类型大小写:
{ "attributes": [ {"name":"ClassCD","type":"string"}, {"name":"Year","type":"string"}, {"name":"Keyword", "type":"string", "synonyms":"Keyword.syn"} ] }
3. 本地托管服务的文件访问问题
CancellationToken.Timeout!通常意味着请求等待资源超时,可能是以下原因:
- 文件路径错误:检查演示程序中引用
Search.schema和Keyword.syn的路径是否正确,比如相对路径是否写错,导致程序找不到文件,一直在等待读取。 - 跨域限制:如果是前端页面调用本地托管的文件,浏览器的跨域策略可能阻止请求,导致请求超时。可以尝试在本地托管服务中添加跨域支持,或者直接用本地文件协议(
file://)测试(部分场景可能仍有限制)。 - MIME类型不正确:本地托管服务没有为
.schema或.syn文件设置正确的Content-Type(比如application/json),导致程序无法正确解析文件内容,请求卡住超时。
4. 文件完整性检查
确保Search.schema和Keyword.syn文件是完整的,没有缺失闭合括号、引号等语法符号。哪怕是一个小的语法错误,都可能导致文件解析失败,进而引发超时。
建议你先修复同义词文件和Schema的语法/格式问题,再检查本地托管服务的配置,看看是否能解决超时和无法获取搜索建议的问题。
内容的提问来源于stack exchange,提问作者Ein2012
相关产品推荐
相关产品推荐

