【问题标题】:Azure Search, exact phrase matchingAzure 搜索,精确词组匹配
【发布时间】:2017-02-26 08:53:54
【问题描述】:

我们有一个 azure Web 应用程序,其中有一个搜索框,当我们输入带有双引号的文本时,例如“App Service”,它会列出带有“App service”的记录,但它还包括在单词之间有特殊字符的记录,例如“应用程序/服务”。我们希望搜索引擎返回与搜索词组完全匹配的记录(不包括在搜索词之间具有特殊字符的记录)。

【问题讨论】:

    标签: c# azure azure-cognitive-search


    【解决方案1】:

    在您的情况下,standard 分析器在索引时将术语 App/Service 分解为两个单独的术语 appservice。这就是短语“App Service”将文档与 App/Service 匹配的原因 - 这两个版本在搜索引擎中看起来相同。

    如果术语 App/Service 构成字段的全部内容,您可以使用 keyword 分析器将该字段的内容作为单个标记进行索引。在此处了解更多信息:Custom Analyzers in Azure Search

    如果 App/Service 作为句子的一部分出现,keyword 分析器将不是一个好的选择。在这种情况下,您可以将/ 字符替换为standard 标记器不会拆分的另一个字符,例如:_。为此使用mappping 字符标记过滤器:

    charFilters: [
      {
        "name":"map_char_mapping",
        "@odata.type":"#Microsoft.Azure.Search.MappingCharFilter",
        "mappings":[ "/=>_" ]
      }     
    ] 
    

    以下帖子将帮助您了解词法分析器在搜索和索引时是如何应用的:How to practially use a keywordanalyzer in azure-search?

    【讨论】:

      【解决方案2】:

      在这种情况下,您希望将字段的全部内容索引为单个标记。看看Custom Analyzers in Azure Search,尤其是keyword 分析器。

      【讨论】:

      • 嗨@Eugene,感谢您的回复,有没有办法忽略它们之间有特殊字符的记录,自定义分析器似乎不可行。
      猜你喜欢
      • 2015-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-09
      • 1970-01-01
      • 1970-01-01
      • 2013-09-15
      • 1970-01-01
      相关资源
      最近更新 更多