【问题标题】:Prefix queries (*) in Azure Search don't return expected resultsAzure 搜索中的前缀查询 (*) 不返回预期结果
【发布时间】:2017-10-10 14:20:59
【问题描述】:

使用 Microsoft Search API 提供的 Rest API 在 azure 上搜索时 搜索字符串包含“@”时行为不正确。

示例:我在 Azure 文档中有 3 行 消费电子展 消费电子展@123 CES@1234

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

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

我已经尝试用“”(空格)代替 @ 它可以工作,但我的数据包含 @ 用于搜索,我需要维护它。

我正在使用 SearchMode:Any。

【问题讨论】:

    标签: odata azure-cognitive-search


    【解决方案1】:

    这种行为是意料之中的。

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

    这是How full text search works in Azure Search文章的摘录:

    词法分析的例外情况

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

    【讨论】:

      猜你喜欢
      • 2016-08-05
      • 1970-01-01
      • 2021-07-06
      • 1970-01-01
      • 2020-04-03
      • 1970-01-01
      • 1970-01-01
      • 2018-08-03
      • 2021-02-10
      相关资源
      最近更新 更多