Comments 12
Совсем не ясно, как оператор LIMIT может "оптимизировать" поиск. Ну, допустим, мы ищем схожие данные с каким-то строковым значением. Для того, чтобы нам понять, на сколько строка близка к запрашиваемой, нам нужно строку сравнить. И вот первая строка на 0 похожа, вторая на 0.1, третья на 0.5, .... сто тридцать третья на 1, пятьсот восьмая на 0.99. И что нам даст LIMIT? Просто первые ЭН строк с отличным от нуля значением? И чем это будет полезно продукту в принципе? Ведь пользователь хочет получить максимально похожие строки, а не первые ЭН хоть как-то похожих.
Я вот давно думаю, с какого фига я не могу ничего и нигде толком найти (на том же алике или авито), а вот, оказывается, кто пилит им эти системы. Аффтор, убей себя апстену.
@moderator
меня хотят убить :(
CREATE INDEX trgm_document_idx ON documents USING gin (content gin_trgm_ops);
При изменении индексируемого поля индекс будет автоматически поддерживаться в актуальном состоянии, или его надо перестраивать?
Возможно не прав, но pg_trgm не очень корректно называть полнотекстовым поиском. Все же триграммы про символы, а полнотекстовый поиск про фразы.
B-деревянные индексы: B-дерево
предлагаю пойти еще дальше и называть их С-Дерево ( сбалансированное то бишь дерево ). А то какое-то Бэ непонятное.
B-деревянные индексы
Ну вы хоть немного перевод вычитывайте перед тем, как запостить. Мне из-за вас любимый диван прожгло.
А почему в обзоре pg_trgm индексов нигде не написано, что и обычные like/ilike он очень даже весомо ускоряет? Я практически уверен, что в 99% случаев их используют именно для ускорения запросов с like/ilke.
И в контексте использования для ускорения с like'ми было бы интересно узнать про выбор типа индекса gin/gist - в каком случае какой больше подходит.
В сравнении и оптимизации ни одного explain не приложено. Это как сравнить тёплое с мягким получается.
Забыли про регулярные выражения, которые иногда могут оказаться очень полезны в сочетании с полнотекстовым поиском.
Использовал этот gin индекс. Получал хороший результат на like запросы.
И также получил деградацию на запись.
Андрей Сальников из Data Egret в одном из докладов упоминал об этом недостатке.
Индексирование полнотекстовых данных в PostgreSQL с использованием модуля pg_trgm