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 匹配文档,而不是术语列表)。
我用自定义分析器建立了索引
"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 匹配文档,而不是术语列表)。