Suggesters 和 NGram 之间的区别

Differences between Suggesters and 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,想知道这两种方法之间的 pros/cons 是什么。

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

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

建议将 return 匹配文档列表,即使查询词不完整,你是对的,它可以用使用 ngrams 的自定义分析器重现。这只是实现该目标的一种更简单的方法(因为我们负责为您设置分析器)。

自动完成非常相似,但它不会 return 匹配文档,它只会 return 一个完整的列表 "terms" 与您的查询中不完整的词相匹配。这将确保术语不会在自动完成列表中重复(使用建议 API 时可能会发生这种情况,因为正如我上面提到的,建议 return 匹配文档,而不是术语列表)。