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

Как искать полнотекстовым для частей слова?

Есть таблица с названиями медицинских препаратов.
Нужно составить запрос так, чтобы он находил их более качественно.
Сейчас запрос выглядит вот так
select
    ts_rank(tsv, q) as rank,
    "PRODUCT_NAME",
    ts_headline('russian', "PRODUCT_NAME", q)
from nomenclature,
     to_tsquery('russian', 'арбидол & капс') as q,
     to_tsvector('russian',"PRODUCT_NAME") as tsv
where tsv @@ q
order by rank DESC
limit 10

Но при такой постановке, если в поиск например передать
to_tsquery('russian', 'арбидол & капс'),
то не будут найдены совпадения со словом "капсулы", если же передать
to_tsquery('russian', 'арбидол & капсулы')
то не будут найдены "капс" и т.д.
Проблема в том, что товары могут иметь названия с сокращениями или без.
Кстати та же проблема возникает например для товаров
Арбидол Максимум капс. 200мг №10
и
Арбидол Максимум капс. 200 мг №20
в одном случае 200мг без пробела, а в другом 200 мг - с пробелом.
Если пользователь забьет в поиске просто 200, то найдено будет только то, что с пробелом, т.е. не выполняется поиск по части слова.
Как сделать так чтобы это было возможно. Без дополнительного софта для поиска - только штатными средствами.
  • Вопрос задан
  • 66 просмотров
Подписаться 1 Простой 2 комментария
Помогут разобраться в теме Все курсы
  • Нетология
    Python-разработчик: расширенный курс + нейросети
    12 месяцев
    Далее
  • Академия Эдюсон
    Python-разработчик + ИИ
    9 месяцев
    Далее
  • ProductStar × РБК
    Профессия DevOps-инженер + ИИ
    5 месяцев
    Далее
Пригласить эксперта
Ваш ответ на вопрос

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

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