Если у меня есть запрос, который ищет фразу, как я могу сделать так, чтобы Elasticsearch взвешивал оценки на основе порядка и расстояния каждого слова в фразе, а не их присутствия? Например, если я ищу «дом в аренду», я строю запрос:
{
"query": {
"bool": {
"must": [{
"query_string": {
"query": "house for rent"
}
}]
}
}
}
Этот запрос возвращает результаты в следующем порядке:
"I am looking to rent a house" -> all terms present out of order with words in between
"I am looking for a house that would be for me to rent" -> all terms present in order with words in between
"I am looking for house to rent" -> 'house for rent' exactly
"I live in a house" -> only 1 term present
В первых трех результатах содержатся все словав фразе, но иногда не в порядке или со словами между ними. Я ожидаю, что точное совпадение фразы будет иметь самый высокий балл, но это не так. Как я могу настроить оценку, чтобы учесть порядок и расстояние фразы? Могу ли я достичь этого с помощью query_string
или есть другой тип запроса, который я должен использовать?