Поиск по части города или Как создать анализатор для городов?

Делаю поиск по городам.
Первое поле 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',Москва на первом месте, как и должна.
Как сделать запрос, что бы по части слова искало и максимально похожий результат был первый в выдаче?
  • Вопрос задан
  • 271 просмотр
Пригласить эксперта
Ответы на вопрос 1
dimonchik2013
@dimonchik2013
non progredi est regredi
'query' => $q.'*',
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
SpectrumData Екатеринбург
от 300 000 до 400 000 ₽
LIME Москва
от 280 000 до 350 000 ₽
27 нояб. 2024, в 17:41
2000 руб./за проект
27 нояб. 2024, в 17:26
1 руб./за проект
27 нояб. 2024, в 17:17
3000 руб./за проект