Azure搜索中的前缀查询(*)不会返回预期结果

时间:2017-05-11 14:08:29

标签: odata azure-search

使用Microsoft Search API提供的Rest API搜索azure时 当搜索字符串包含' @'。

时,行为不正确

示例:我在Azure文档中有3行 CES CES @ 123 CES @ 1234

当我的搜索字符串是CES *时,结果都是3。 当我的搜索字符串是CES @ 123 *时,结果只有一个完全匹配的记录。 当我的搜索字符串是CES @ *时,则没有结果。

根据我的要求,在#34; CES @ *"搜索字符串,所有3条记录都应该是结果集的一部分。

我已经尝试过" "(空格)取代@它有效,但我的数据包含@ for search我需要维护它。

我使用SearchMode:Any。

1 个答案:

答案 0 :(得分:0)

此行为是预期的。

不分析查询前缀查询的术语。因此,在您使用“CES @ *”的示例中,当您从索引中的条款中删除 @ 符号时,您正在搜索术语 CES @ :CES,123,1234

以下摘自How full text search works in Azure Search文章:

  

词法分析的例外

     

词法分析仅适用于需要完整的查询类型   术语 - 术语查询或短语查询。它不适用于   不完整术语的查询类型 - 前缀查询,通配符查询,   正则表达式查询 - 或模糊查询。那些查询类型,包括   添加了在我们的示例中使用term air-condition *的前缀查询   直接到查询树,绕过分析阶段。唯一的   对这些类型的查询术语执行的转换是小写的。