首页 > 解决方案 > Suggesters 和 NGram 的区别

问题描述

我用自定义分析器建立了一个索引

"analyzers": [
    {
      "@odata.type": "#Microsoft.Azure.Search.CustomAnalyzer",
      "name": "ingram",
      "tokenizer": "whitespace",
      "tokenFilters": [ "lowercase", "NGramTokenFilter" ],
      "charFilters": []
    }
  ],
  "tokenFilters": [
    {
      "@odata.type": "#Microsoft.Azure.Search.NGramTokenFilterV2",
      "name": "NGramTokenFilter",
      "minGram": 3,
      "maxGram": 8
    }
  ],

我遇到了 Suggesters,想知道这两种方法之间的优缺点是什么。

基本上,我正在做一个 JavaScript 自动完成文本框。我需要在搜索文本中进行部分文本搜索(即 search=ell 将匹配“Hello World”。

标签: azure-cognitive-searchn-gram

解决方案


Azure 搜索提供了两项功能来启用此功能,具体取决于您希望为用户提供的体验:- 建议:https : //docs.microsoft.com/en-us/rest/api/searchservice/suggestions - 自动完成:https:/ /docs.microsoft.com/en-us/rest/api/searchservice/autocomplete

即使查询词不完整,建议也会返回匹配文档的列表,您是对的,可以使用使用 ngram 的自定义分析器来重现它。这只是一种更简单的方法(因为我们已经为您设置了分析器)。

自动完成非常相似,但它不会返回匹配的文档,而是简单地返回与查询中不完整的术语匹配的完整“术语”列表。这将确保术语不会在自动完成列表中重复(这可能在使用建议 API 时发生,因为正如我上面提到的,建议返回匹配的文档,而不是术语列表)。


推荐阅读