Riveran
@Riveran
Astartes

Реализация поиска по но нескольким полям psql?

Есть таблица адресов такого вида
5da5883531471716631487.png
Если пользователь вводит в инпут адрес такого типа "Блеларусь, Минск, ул. Сухаревская, 79, 3"
Как найти наиболее точное совпадение по данной строке и к какому виду лучше привести данные для передачи в sql запрос?
  • Вопрос задан
  • 244 просмотра
Решения вопроса 1
@anikavoi
Ну если таблица заполняется так как у вас показана, и запрос такой как у вас показан, то сплит по запятым и WHERE ... ILIKE... AND .... ILIKE...

Но я вам все-таки советую сначала поискать аналог FIAS в РБ.
Потому как адреса, штука очень странная и загадочная.
Не знаю как в РБ, а у нас есть такие вещи:

город Москва, город Зеленоград, микрорайон .... (ага, Зеленоград не в Московской области, а в Москве)
"область Такая-то, поселок Сякой-то, дом 2" без улицы, но в том же поселке может быть ул. Ленина, дом 2 - и это другой дом.
Про корпуса\литеры\строения - можно написать отдельную сагу, сплошь из нецензурных выражений, потому как, например дом в котором я сейчас нахожусь, в одних ГОСУДАРСТВЕННЫХ ресурсах обозначен как 4/1, в других 4 корпус 1.

На хабре были несколько статей как люди прикручивали fias к postgres. Поищите.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
ИМХО можно сделать что-то типа lookup.
Т.е. вводить первые символы города, ему подсказывают все города начинающиеся на эти символы, потом улицы и т.д.
А так парсить строку ввода на части, по этим частям определять что это - страна, город, улица. Ну а дальше формировать запрос.
Можно еще посмотреть в сторону Elastic Seacrh
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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