После выполнения запроса
{
"query": {
"simple_query_string": {
"query": "масло моторное",
"minimum_should_match": "90%",
"default_operator": "or"
}
}
}
Получаю такие результаты,
"hits": [
{
"source": {
"code": "ФН21817",
"name": "Масло трансмиссионное Gazpromneft Promo (GL-5) (ТАД-17) 80W90 (205л.) 2389901278",
"manufacturer": "Gazpromneft",
"article_number": "GL-5 205л 2389901278",
"brand": "Gazpromneft",
"brand_number": "Масло трансмиссионное Gazpromn",
"deficit": false,
"unit": "шт.",
"stock": {
"count": "10.0",
"price": "11.1"
}
}
},
{
"source": {
"code": "ФН41665",
"name": "Масло моторное HYUNDAI XTeer 5W30",
"manufacturer": "Hyundai-Kia",
"article_number": "1041002",
"brand": "HYUNDAI XTeer",
"brand_number": "1041002",
"deficit": false,
"unit": "шт.",
"stock": {
"count": "10.0",
"price": "11.1"
}
}
}
]
С точки зрения пользователя Масло моторное HYUNDAI XTeer 5W30
должно быть выше, так как он точно совпадает. Но результат который первый имеет несколько вхождений слова масло
(бывает даже в разных полях) от сюда и ранжирование выше. Подскажите пожалуйста в какую сторону правильно смотреть для изменения такого примера?
Конфиг
{
"settings": {
"analysis": {
"analyzer": {
"my_analyzer": {
"tokenizer": "standard",
"filter": [
"lowercase",
"russian_stop",
"russian_keywords",
"russian_stemmer"
]
}
},
"filter": {
"russian_stop": {
"type": "stop",
"stopwords": "_russian_"
},
"russian_keywords": {
"type": "keyword_marker",
"keywords": []
},
"russian_stemmer": {
"type": "stemmer",
"language": "russian"
}
}
}
},
"mappings": {
"properties": {
"code": {
"type": "keyword"
},
"name": {
"type": "text",
"analyzer": "my_analyzer"
},
"article_number": {
"type": "text",
"analyzer": "my_analyzer"
},
"brand": {
"type": "text",
"analyzer": "my_analyzer"
},
"brand_number": {
"type": "text",
"analyzer": "my_analyzer"
},
"manufacturer": {
"type": "text",
"analyzer": "my_analyzer"
}
}
}
}