Pull to refresh

Comments 10

Хорошая статья, хочу лишь добавить что в случае когда тексты написаны на разных языках, нужно добавить колонку типа REGCONFIG в которой будет храниться язык например:
ALTER TABLE documents_document ADD COLUMN lang REGCONFIG NOT NULL DEFAULT 'russian'::regconfig;
индекс:
CREATE INDEX idx_gin_document
ON documents_document
USING gin (to_tsvector( lang, «document_text»));

или
добавить колонку lang типа VARCHAR:
ALTER TABLE documents_document ADD COLUMN lang VARCHAR NOT NULL DEFAULT 'russian';
индекс:
CREATE INDEX idx_gin_document
ON documents_document
USING gin (to_tsvector( lang::REGCONFIG, «document_text»));
Насколько актуальны по Вашему мнению полнотекстовые индексы без нечеткого поиска («с опечатками»)? Их по-прежнему имеет смысл использовать например в веб-приложениях?

Считаю, что да, вполне стоит. В них есть поиск по словоформам, этого для большинства сайтов достаточно.
Всё-таки поисковый движок – не самая важная часть сайта.

Спасибо, интересно.
Ждем продолжения.
Пробовал использовать полнотекстовый поиск на postgresql, но затем оказалось удачнее подключить Lucene к JPA, все культурно подключается и индексируется, поиск работает быстро.
Спасибо за статью!
Кстати, если создать индекс с конфигурацией russian
CREATE INDEX idx_gin_document 
ON documents_document 
USING gin (to_tsvector('russian', "document_text"));

И выполнять запрос без
to_tsvector("document_text"), plainto_tsquery('запрос')

То индекс использоваться не будет

Да, конечно. Вы правы.
Наверное, стоило написать об этом явно. Но в выводе EXPLAIN для функционального индекса можно увидеть, что я делаю запросы с Russian.

Странно, я очень давно пользовался FTS в PostgreSQL, но в моем случае, после миграции с PostgresSQL FTS на SphinxSearch, который индексировал Postgres, скорость поиска выросла значительно, а нагрузка на базу данных существенно упала.


Из всех деталей помню только, что тогда переход на SphinxSearch позволил спать спокойно как минимум несколько следующих месяцев.


Правда это было в стародавние времена (едва ли не 10 лет назад, даже не помню, какая тогда версия Postgres была, наверное 8), и наверное, большое влияние оказывает размер документов и характер доступа к ним.

У меня (да и на большей части сайтов тоже) полнотекстовый поиск выполняет довольно формальный характер. В таких случаях настроить постгрес, имхо, намного более логично, чем тащить лишнюю сущность в виде сфинкса.
Sign up to leave a comment.

Articles