我已经使用“自定义分析器”建立了索引
"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
}
],
我遇到了建议者,想知道这两种方法之间的优缺点。
基本上,我正在做一个JavaScript自动完成文本框。我需要在搜索文本内进行部分文本搜索(即search = ell将在“ Hello World”上匹配。
答案 0 :(得分:0)
Azure Search提供了两个功能来启用此功能,具体取决于您希望为用户提供的体验: -建议:https://docs.microsoft.com/en-us/rest/api/searchservice/suggestions -自动完成:https://docs.microsoft.com/en-us/rest/api/searchservice/autocomplete
即使使用不完整的查询词,建议也将返回匹配文档的列表,并且您可以使用使用ngram的自定义分析器重现它,这是正确的。这只是完成此操作的一种简单方法(因为我们已经为您设置了分析仪)。
自动完成功能非常相似,但是它不会返回匹配的文档,而只是返回与查询中不完整术语匹配的已完成“术语”列表。这样可以确保术语不会在自动完成列表中重复(这会在使用建议API时发生,因为如上所述,建议返回匹配的文档,而不是术语列表)。