azure-cognitive-search - 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 搜索提供了两项功能来启用此功能,具体取决于您希望为用户提供的体验:- 建议:https : //docs.microsoft.com/en-us/rest/api/searchservice/suggestions - 自动完成:https:/ /docs.microsoft.com/en-us/rest/api/searchservice/autocomplete
即使查询词不完整,建议也会返回匹配文档的列表,您是对的,可以使用使用 ngram 的自定义分析器来重现它。这只是一种更简单的方法(因为我们已经为您设置了分析器)。
自动完成非常相似,但它不会返回匹配的文档,而是简单地返回与查询中不完整的术语匹配的完整“术语”列表。这将确保术语不会在自动完成列表中重复(这可能在使用建议 API 时发生,因为正如我上面提到的,建议返回匹配的文档,而不是术语列表)。
推荐阅读
- python - python中的康普顿散射
- docker - 如何在高山基础 docker 映像中设置时区?
- html - 用 Excel 打印的网站 html 链接有奇怪的空白
- widget - 如何以编程方式设置 Databricks 小部件行为?
- sql - SQL - 计算客户一起购买的产品的重叠
- javascript - 无法在 Internet Explorer 中为文档显式设置域
- wordpress - 谷歌分析从子域中获取流量
- c++ - C ++多继承,删除对象中的错误
- reactjs - 无法读取 react-router-dom 中未定义的属性“推送”
- flutter - 按下火棒遥控按钮时关闭或弹出警报对话框