у меня есть это простое отображение:Результаты поиска упорядоченные по длине поисковых текста Длина/матч
PUT testindex
{
"settings": {
"analysis": {
"analyzer": {
"ngram_analyzer": {
"type": "custom",
"tokenizer": "standard",
"filter": ["lowercase", "edgeNGram"]
}
},
"filter" : {
"ngram" : {
"type": "edgeNGram",
"min_gram": 2,
"max_gram": 15
}
}
}
},
"mappings": {
"test": {
"properties": {
"name": {
"type": "string",
"analyzer" : "ngram_analyzer"
}
}
}
}
}
С этими значениями:
PUT testindex/test/1
{"name" : "Power"}
PUT testindex/test/2
{"name" : "Pow"}
PUT testindex/test/3
{"name" : "PowerMax"}
PUT testindex/test/4
{"name" : "PowerRangers"}
И искали это:
GET testindex/test/_search
{
"query": {
"match": {
"name": "Po"
}
}
}
И получено:
PowerRangers
Power
Pow
PowerMax
Все с тем же счетом 0.2876821
Очевидно, ближайший результат к «Po» является «Pow», и что я ожидаю получить первый; но я этого не делаю.
Как мне изменить свое сопоставление, чтобы вести себя по этой логике?
Вы еще что-нибудь пробовали? У вас есть сопоставление, которое вы можете использовать? Ваш вопрос слишком широк, имо. –
Обновлено сообщение – user574645