, поэтому я пытаюсь получить хорошие результаты поиска из установки Elasticsearch.
Но у меня возникают проблемы, когда я пытаюсь сделать нечеткий поиск по некоторым очень простым данным.
Как-то несколько (некоторыеиз них частично) слова оцениваются слишком низко и оцениваются только выше, когда в поисковом запросе присутствует больше букв слова.
Позвольте мне объяснить:
У меня есть простой индекс, построенный из двух простыхдокументы.
{
"name": "Product with good qualities and awesome sound system"
},
{
"name": "Another Product that has better acustics than the other one"
}
Теперь я запрашиваю индекс с такими параметрами:
{
"query": {
"multi_match": {
"fields": ["name"],
"query": "product acust",
"fuzziness": "auto"
}
}
}
И результаты выглядят так:
"hits": [
{
"_index": "test_products",
"_type": "_doc",
"_id": "1",
"_score": 0.19100355,
"_source": {
"name": "Product with good qualities and awesome sound system"
}
},
{
"_index": "test_products",
"_type": "_doc",
"_id": "2",
"_score": 0.17439455,
"_source": {
"name": "Another Product that has better acustics than the other one"
}
}
]
Как вы можете видеть продукт сID 2 оценивается меньше, чем другой продукт, хотя он, возможно, имеет больше сходства с данной строкой запроса, чем другой продукт, потому что он имеет 1 совпадение полного слова и 1 совпадение частичного слова.
Когда запрос будет выглядеть как "productacusti "результаты начнут вести себя правильно.
Я уже возился с поиском bool, но результаты идентичны.
Есть идеи, как вернуть желаемые результаты быстрее, чем вводить почти все второе слово?