Die Hervorhebung von Elasticsearch im ngram-Filter ist seltsam, wenn min_gram auf 1 gesetzt ist
Also ich habe diesen Index
{
"settings":{
"index":{
"number_of_replicas":0,
"analysis":{
"analyzer":{
"default":{
"type":"custom",
"tokenizer":"keyword",
"filter":[
"lowercase",
"my_ngram"
]
}
},
"filter":{
"my_ngram":{
"type":"nGram",
"min_gram":2,
"max_gram":20
}
}
}
}
}
}
und ich führe diese Suche durch das Reifenjuwel
{
"query":{
"query_string":{
"query":"xyz",
"default_operator":"AND"
}
},
"sort":[
{
"count":"desc"
}
],
"filter":{
"term":{
"active":true,
"_type":null
}
},
"highlight":{
"fields":{
"name":{
}
},
"pre_tags":[
"<strong>"
],
"post_tags":[
"</strong>"
]
}
}
und ich habe zwei Posts, die mit dem Namen 'xyz post' und 'xyz question' übereinstimmen sollten. Wenn ich diese Suche durchführe, werden die markierten Felder wieder korrekt angezeigt
<strong>xyz</strong> question
<strong>xyz</strong> post
Jetzt ist hier die Sache ... sobald ich min_gram in meinem Index auf 1 ändere und neu indiziere. Die hervorgehobenen Felder kehren dann zurück
<strong>x</strong><strong>y</strong><strong>z</strong> pos<strong>xyz</strong>t
<strong>x</strong><strong>y</strong><strong>z</strong> questio<strong>xyz</strong>n
Ich kann einfach nicht verstehen warum.