В какую сторону двигаться для реализации реализация автокомплита адреса по данным ФИАС?

День добрый, пытаюсь реализовать автокомплит для адреса вроде этого: https://dadata.ru/suggestions/ по данным из фиаса.
На текущий момент просто перенесены таблицы из фиаса и построены индексы, добавлены внешние ключи между улицами-городами-районами-регионами. Структура базы не менялась.
На текущий момент поиск осуществляется поочерёдным указанием региона, города, улицы, дома.
Но хочется чтобы в адресную строку можно было ввести строку "алтай павловс ленин" и получить улицу ленина в селе павловск алтайского края, и некоторое количество менее подходящих вариантов.
Если искать что-то из базы по каждому слову, строить цепочку до уровня региона, а потом смотреть сколько в цепочке подходящих слов, то так не хватит оперативы. Если делать это же пакетно, уйдёт неразумно много времени. Если реализовывать это через джойны, то я не уверен, что это хороший вариант и пока что плохо представляю, как это можно сделать, потому что количество уровней в адресе может различаться. Но если это оптимальный вариант, разберусь.
Может кто-нибудь направить, в какую сторону двигаться при решении этого вопроса?
  • Вопрос задан
  • 622 просмотра
Решения вопроса 1
Hayate
@Hayate Автор вопроса
Похоже теги в tsvector и gin индекс спасают отца русской демократии. 20ms на поиск нужного адреса.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы