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

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

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

Войти через центр авторизации
Похожие вопросы