Задать вопрос
@Malkolm163

Как выполнить поиск в postgresql по частям слова но без соблюдения порядка слов?

есть таблица в БД, в которой содержится комбинированная информация с других полей. там "<адрес> <название> <короткий комментарий>".
по этому полю есть поиск
сейчас я разделяю слова в поисковом запросе по пробелу и заменяю пробел % (ну а далее оператор ilike), таким образом я могу найти любое значение в т.ч. по частям слов (и поиском по части слова пользуются очень часто, поэтому от этого отказаться нельзя).
проблема в том, что такой поиск не может найти слова, если они расположены в другом порядке.
Например "зубчаниновка" (поселок по сути часть города можно сказать) - это значение может быть записано как в адресе (<индекс> <город> <поселок> <адрес>), так и в комментарий (например ели искомое находится фактически не в п. Зубчаниновка, а практически на границе - тогда в комент могут написать, что это зубчаниновка)
пользователь может забить в поиске "самара зубчаниновка" все нормально найдет, на если забить наоборот "зубчаниновка самара", тогда найдено ничего не будет. (это только простой пример для описания сути)

Я пробовал экспериментировать с поиском через @@ и там действительно нет проблемы с очередностью, но я не нашел возможности искать по части слова (максимум по префиксу, что актуально для всей поисковой фразы а не для каждого слова в отдельности).

Может кто подсказать как такой поиск выполнить чтобы и по подстроке можно было искать и при этом чтобы порядок слов не был важен?
  • Вопрос задан
  • 47 просмотров
Подписаться 1 Простой 2 комментария
Решения вопроса 1
@elderl
STRING_SPLIT
LIKE'%зубчаниновка%' AND LIKE '%самара%'
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Everything_is_bad
но я не нашел возможности искать по части слова
обычно для такого используют pg_trgm
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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