【发布时间】:2018-06-26 12:49:13
【问题描述】:
我是 Elastic 搜索的新手,我正在尝试使用 whitespace Analyzer 创建一个 CompletionSuggester 演示。
根据Whitespace Analyzer 的文档,它会破坏文本 每当它遇到一个空白字符时。所以我的 问题是它是否也适用于完成建议?
所以对于我的完成建议前缀:“ela”, 我期待输出 作为“你好弹性搜索”。
我知道一个简单的解决方案是将多字段输入添加为:
"suggest": {
"input": ["Hello","elastic","search"]
}
但是,如果这是解决方案,那么使用分析器的意义是什么?分析器在完成建议中有意义吗?
我的映射:
{
"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
}
}
}
}
}
我的文档:
{
"_index": "my-index",
"_type": "my-type",
"_id": "KTWJBGEBQk_Zl_sQdo9N",
"_score": 1,
"_source": {
"mytext": "dummy text",
"suggest": {
"input": "Hello elastic search."
}
}
}
搜索请求:
{
"suggest": {
"test-suggest" : {
"prefix" :"ela",
"completion" : {
"field" : "suggest",
"skip_duplicates": true
}
}
}
}
这个搜索没有返回正确的输出,但是如果我使用 prefix = 'hel' 我得到正确的输出:“Hello elastic search。”
简而言之,我想知道空白分析器是否与完成建议器一起使用? 如果有办法,请给我建议。
PS:我已经在寻找这个链接,但我没有找到有用的答案。
ElasticSearch completion suggester Standard Analyzer not working
What Elasticsearch Analyzer to use for this completion suggester?
我发现此链接很有用Word-oriented completion suggester (ElasticSearch 5.x)。但是他们没有使用完成建议。
提前致谢。
吉米
【问题讨论】:
-
我在使用自定义分析器时遇到了完全相同的问题,似乎完成没有以某种方式考虑分析器的输出
-
是的,完成建议器中的分析器有问题。最后我最终使用替代解决方案在输入数组中添加多个标签而不是预期的方法。
-
我正在为我的用例探索的是 nGram。
-
@pcambra 哦,好吧。我用 edge-ngrams 尝试了上述方法,它工作正常。你可以试试这个链接stackoverflow.com/questions/41744712/…我实施了接受答案中给出的程序,它很适合我的要求。唯一的问题是我们不能用 ngram 跳过重复。
标签: elasticsearch autocomplete autosuggest elasticsearch-analyzers elasticsearch-6