【问题标题】:Azure Cognitive Search: Searching for Data Containing a "-"Azure 认知搜索:搜索包含“-”的数据
【发布时间】:2020-09-09 17:32:50
【问题描述】:

我有一个客户正在创建一个搜索应用程序。他们在 Id 字段之外为每个文档都有一个唯一标识符,他们会定期搜索该标识符。该字段恰好包含破折号。我们发现使用此字段唯一搜索给定文档的索引的唯一方法是在其前面加上字段名称并将其括在类似于以下的引号中:

EventId:"TSA-12-01112-15"

换句话说,搜索:

TSA-12-01112-15

“TSA-12-01112-15”

返回多个结果,其中由“-”分隔的每个字段段似乎都被分析器作为单独的标记返回。我们正在相关领域使用standard.lucene 分析器。

这是预期的行为吗?有没有办法解决这个问题,以便上面显示的没有字段名称的简单短语搜索将返回预期结果?

【问题讨论】:

    标签: azure-cognitive-search


    【解决方案1】:

    标准 lucene 分析器将- 视为分隔符,并将每个部分生成为单独的标记。从您的解释来看,您的用例需要完全匹配。您可以对该字段使用keyword 分析器,然后使用破折号按原样传递文本。

    关键字分析器为整个文本生成单个标记,是标识符和代码的不错选择。一个限制是查询文本应该与字段文本完全匹配。例如。

    EventId:TSA-12-01112-15 将匹配EventId 中的文本恰好是TSA-12-01112-15 的文档

    此外,如果您的查询模式严重偏向于精确匹配并且它们的相对顺序并不重要,请考虑使用为此优化的过滤器表达式。

    【讨论】:

      猜你喜欢
      • 2020-03-27
      • 2022-01-24
      • 2020-09-01
      • 1970-01-01
      • 2021-09-21
      • 2021-06-06
      • 1970-01-01
      • 2022-01-12
      • 2021-04-28
      相关资源
      最近更新 更多