Azure搜索索引过滤失效:类型不匹配与属性未找到两类错误
问题2:两类搜索过滤错误的解决方法
问题2.a:类型不匹配错误
错误详情
使用过滤参数 max_tokens_in_chunk eq 200 时,报错:
Error: () Invalid expression: A binary operator with incompatible types was detected. Found operand types 'Edm.String' and 'Edm.Int32' for operator kind 'Equal'
字段定义:SimpleField(name="max_tokens_in_chunk", type="Edm.String", filterable=True, facetable=True)
解决方法
两种可选方案:
- 方案1:修改过滤语句,把数值用单引号包裹,匹配字段的字符串类型:
max_tokens_in_chunk eq '200' - 方案2:如果该字段实际存储的是数值,建议重新创建字段时将类型改为
Edm.Int32,后续可直接用数值过滤,避免类型转换问题。
问题2.b:字符串值未加引号导致的错误
错误详情
使用过滤参数 company eq Tesla 时,报错:
Error: () Invalid expression: Could not find a property named 'Tesla' on type 'search.document'.
Parameter name: $filter
字段定义:SimpleField(name="company", type="Edm.String", filterable=True, facetable=True),且确认索引中存在Tesla值。
解决方法
OData过滤规则中,字符串类型的属性值必须用单引号包裹,否则系统会把Tesla识别为属性名而非字符串值。修改过滤语句为:
company eq 'Tesla'
内容的提问来源于stack exchange,提问作者newbie101
相关产品推荐
相关产品推荐

