Jim*_*mmy 8 autocomplete autosuggest elasticsearch elasticsearch-analyzers elasticsearch-6
我是Elastic search的新手,我正在尝试使用whitespace Analyzer创建一个Completion建议器的演示.
根据Whitespace Analyzer的文档,它会在遇到空白字符时将文本分解为术语.所以我的问题是它是否也适用于完成建议者?
所以对于我的完成建议器前缀:"ela", 我期待输出为"Hello elastic search".
我知道一个简单的解决方案是添加多字段输入:
"suggest": {
"input": ["Hello","elastic","search"]
}
Run Code Online (Sandbox Code Playgroud)
但是,如果这是解决方案那么使用分析仪的意义是什么?分析仪在完成建议中是否有意义?
我的映射:
{
"settings": {
"analysis": {
"analyzer": {
"completion_analyzer": {
"type": "custom",
"filter": [
"lowercase"
],
"tokenizer": "whitespace"
}
}
}
},
"mappings": {
"my-type": {
"properties": {
"mytext": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"suggest": {
"type": "completion",
"analyzer": "completion_analyzer",
"search_analyzer": "completion_analyzer",
"max_input_length": 50
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我的文件:
{
"_index": "my-index",
"_type": "my-type",
"_id": "KTWJBGEBQk_Zl_sQdo9N",
"_score": 1,
"_source": {
"mytext": "dummy text",
"suggest": {
"input": "Hello elastic search."
}
}
}
Run Code Online (Sandbox Code Playgroud)
搜索请求:
{
"suggest": {
"test-suggest" : {
"prefix" :"ela",
"completion" : {
"field" : "suggest",
"skip_duplicates": true
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
这个搜索没有返回正确的输出,但是如果我使用prefix ='hel'我得到正确的输出:"Hello elastic search".
简而言之,我想知道空白分析器是否与完成建议器一起工作?如果有办法,请你建议我.
PS:我已经找到了这个链接,但我找不到有用的答案.
Elasticsearch Analyzer用于此完成建议器的内容?
我发现这个链接是有用的面向字的完成建议器(ElasticSearch 5.x).但他们没有使用完成建议器.
提前致谢.
吉米
完成建议器无法执行全文查询,这意味着它无法根据多词字段中间的词返回建议。
从ElasticSearch本身:
原因是 FST 查询与全文查询不同。我们无法在短语中的任何位置找到单词。相反,我们必须从图表的左侧开始并向右移动。
正如您所发现的,可以匹配字段中间的完成建议器的最佳替代方案是边缘 n-gram 过滤器。
| 归档时间: |
|
| 查看次数: |
2034 次 |
| 最近记录: |