Делаю поиск по городам.
Первое поле
name например:
СНТ Москва
Второе поле
text детально, например:
Россия, Московская область, Орехово-Зуевский район, СНТ Москва
Делаю запрос:
'query' => [
'query_string' => [
'query' => $q,
'boost' => 1,
'phrase_slop' => 2,
'fields' => [
'name^3',
'text^2',
],
'default_operator' => 'and',
]
],
'sort' => [
'_score' => [
'order' => 'desc'
]
]
Но если ввожу только часть города
Моск или
барнаул кург то ни чего не выдает.
А выдает только по целым названиям:
Москва или
барнаул курганская
Если ставлю запрос через звездочки -
'query' => '*'.$q.'*',
То перестает работать сортировка и по запросу Москва, на первом месте например
деревня Новая Москва, а просто
Москва на 5-7 месте оказывается.
А без звездочек в запросе
'query' => $q',
Москва на первом месте, как и должна.
Как сделать запрос, что бы по части слова искало и максимально похожий результат был первый в выдаче?