LINUX.ORG.RU

Найти маску по слову

 ,


0

2

Привет, ЛОР овец. Есть одна БД. У неё в одной табличке лежит огромный список доменов с категориями, типа «linux.org.ru - учебно-образовательные ресурсы, pornolab.net - культура и досуг». Нужно по домену тупо находить его категорию, ничего сложного. Засада в том, что в таблицу хочется добавить паттерны типа «*.livejournal.com» или «192.168.*». Как это сделать по-умному? Постгрес случайно не умеет какие-то хитрые индексы, чтобы быстро искать SELECT category FROM domains WHERE 'spb.hh.ru' LIKE domain или что-то типо тово? (Подразумевая что в таблице лежит '%.hh.ru', например.) Или как вообще это нормально делается?

В постгресе есть фултекст-индексы и индексы для ускорения поиска для `like 'hh.ru%'` но работает только для префиксов.

AnDoR ★★★★★
()
Ответ на: комментарий от AnDoR

Дык для domain like '%.hh.ru' и дефолтного индекса достаточно. Только надо делать наоборот: 'hh.ru' like '%' || domain. По идее, это тоже можно делать по индексу, только постргес этого не понимает.

Ещё нашёл https://github.com/dimitri/prefix - модуль, который добавляет свой тип индекса и свои операторы для поиска префиксов. Но как-то это заморочено для моего случая, заставлять всех юзеров ставить себе отдельный модуль в постгрес. Да и суффиксы оно не ищет, только префиксы. Буду дальше чесать репу.

HeipaVai1o
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.