我正在使用弹性搜索自动完成并纠正拼写错误。我有我的字段的映射(用于自动完成)。
**Mapping:**
"name": {
"type": "text",
"analyzer": "autocomplete"
}
现在我想在这个字段上实现短语建议。当我使用它时,它给出了错误的结果。因为我认为现有的映射。
**POST XYZ/_search**
{
"suggest": {
"text": "ipone 16",
"simple_phrase": {
"phrase": {
"field": "name",
"highlight": {
"pre_tag": "<em>",
"post_tag": "</em>"
}
}
}
}
}
**Results:**
"options": [
{
"text": "i ip ipo iphon iphone 1 16",
"highlighted": "i ip ipo <em>iphon iphone</em> 1 16",
"score": 1.6111489e-8
},
{
"text": "i ip ipo iphon iphon 1 16",
"highlighted": "i ip ipo <em>iphon iphon</em> 1 16",
"score": 1.4219211e-8
},
{
"text": "i ip ipo ipho iphone 1 16",
"highlighted": "i ip ipo <em>ipho iphone</em> 1 16",
"score": 1.3510152e-8
},
{
"text": "i ip ipo ipho iphon 1 16",
"highlighted": "i ip ipo <em>ipho iphon</em> 1 16",
"score": 1.1923397e-8
},
{
"text": "i ip ipo iron iphone 1 16",
"highlighted": "i ip ipo <em>iron iphone</em> 1 16",
"score": 6.443544e-9
}
]
**From the document i should use this for phrase suggester.**
"mappings": {
"test": {
"properties": {
"title": {
"type": "text",
"fields": {
"trigram": {
"type": "text",
"analyzer": "trigram"
},
"reverse": {
"type": "text",
"analyzer": "reverse"
}
}
}
}
**How can i use two different mapping on same filed?**
答案 0 :(得分:0)
由于您的结果未正确标记,问题可能来自
你的aurocomplete分析仪。请提供 _settings
以查看
为您的分析仪定义。
在 name.trigram 上查询。
collate
答案 1 :(得分:0)
你可以写这样的查询。请提供此查询的输出
使用trigram analyzer
设置(令牌化程序,字符映射器和令牌过滤器)
{
"suggest": {
"text": "noble prize",
"simple_phrase": {
"phrase": {
"field": "name_suggest.trigram",
"size": 1,
"gram_size": 3,
"direct_generator": [
{
"field": "name_suggest.trigram",
"suggest_mode": "always"
}
],
"collate": {
"query": {
"inline": {
"match": {
"title": "{{suggestion}}"
}
}
},
"prune": true
},
"highlight": {
"pre_tag": "<em>",
"post_tag": "</em>"
}
}
}
}
}