Есть ряд документов:
{ "name" : "Роза"}
{ "name" : "Липестки роз"}
{ "name" : "Роза 150 см"}
{ "name" : "Роза 130 см"}
{ "name" : "Роза 50 см"}
{ "name" : "Роза 30 см"}
Ищем по слову "роза":
curl 'http://localhost:9200/test/_search?pretty' -d '{"query": {"match": {"name": "роза"}}}'
Получаем такие результаты:
{
"hits" : {
"total" : 6,
"max_score" : 0.4451987,
"hits" : [ {
"_id" : "2",
"_score" : 0.4451987,
"_source" : {
"name" : "Липестки роз"
}
}, {
"_id" : "4",
"_score" : 0.35615897,
"_source" : {
"name" : "Роза 130 см"
}
}, {
"_id" : "6",
"_score" : 0.35615897,
"_source" : {
"name" : "Роза 30 см"
}
}, {
"_id" : "1",
"_score" : 0.30685282,
"_source" : {
"name" : "Роза"
}
}, {
"_id" : "5",
"_score" : 0.15342641,
"_source" : {
"name" : "Роза 50 см"
}
}, {
"_id" : "3",
"_score" : 0.15342641,
"_source" : {
"name" : "Роза 150 см"
}
} ]
}
}
Во-первых почему у "роза 130 см" и "роза 150 см" такой разный вес? Они даже не рядом в выдаче.
Во-вторых. Почему "лепести роз" находятся на первом месте. На мой взгляд документ "роза" является явно более релевантным запросу. Обычно же поисковые движки учитывают близость слова к началу документа. Тут вимо этого нет.
Используется плагин русской морфолигии, настройки выглядят так:
{
"analysis": {
"char_filter": {
"my_charfilter": {
"type": "mapping",
"mappings": ["Ё=>Е", "ё=>е"]
}
},
"analyzer": {
"default_index": {
"type": "custom",
"char_filter": ["my_charfilter"],
"tokenizer": "standard",
"filter": ["lowercase", "russian_morphology", "my_stopwords"]
},
"default_search": {
"type": "custom",
"char_filter": ["my_charfilter"],
"tokenizer": "standard",
"filter": ["lowercase", "russian_morphology", "my_stopwords"]
},
"lower_keyword": {
"type": "custom",
"tokenizer": "keyword",
"filter": "lowercase"
}
},
"filter": {
"my_stopwords": {
"type": "stop",
"stopwords": "а,без,более,бы,был,была,были,было,быть,в,вам,вас,весь,во,вот,все,всего,всех,вы,где,да,даже,для,до,его,ее,если,есть,еще,же,за,здесь,и,из,или,им,их,к,как,ко,когда,кто,ли,либо,мне,может,мы,на,надо,наш,не,него,нее,нет,ни,них,но,ну,о,об,однако,он,она,они,оно,от,очень,по,под,при,с,со,так,также,такой,там,те,тем,то,того,тоже,той,только,том,ты,у,уже,хотя,чего,чей,чем,что,чтобы,чье,чья,эта,эти,это,я"
}
}
}
}
Если кто хочет воспроизвести у себя, вот
Gist на гитхабе