使用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。
答案 0 :(得分:0)
此行为是预期的。
不分析查询前缀查询的术语。因此,在您使用“CES @ *”的示例中,当您从索引中的条款中删除 @ 符号时,您正在搜索术语 CES @ :CES,123,1234
以下摘自How full text search works in Azure Search文章:
词法分析的例外
词法分析仅适用于需要完整的查询类型 术语 - 术语查询或短语查询。它不适用于 不完整术语的查询类型 - 前缀查询,通配符查询, 正则表达式查询 - 或模糊查询。那些查询类型,包括 添加了在我们的示例中使用term air-condition *的前缀查询 直接到查询树,绕过分析阶段。唯一的 对这些类型的查询术语执行的转换是小写的。