F.58. pg_tsparser — текстовый поиск #
pg_tsparser
— это расширение Postgres Pro для текстового поиска. Это расширение меняет стандартную стратегию разбора текста для слов, включающих:
подчёркивания
цифры и буквы, разделённые знаком минуса
В дополнение к отдельным частям слова, возвращаемых по умолчанию, pg_tsparser
также возвращает всё слово.
F.58.1. Установка и подготовка #
Расширение pg_tsparser
входит в состав Postgres Pro. Чтобы задействовать pg_tsparser
, установив Postgres Pro, создайте расширение pg_tsparser
в каждой базе данных, где вы планируете его использовать:
CREATE EXTENSION pg_tsparser;
Активировав pg_tsparser
, вы можете создавать собственные конфигурации текстового поиска. Вместе с pg_tsparser
можно использовать любой имеющийся словарь.
Например, так можно создать конфигурацию english_ts
для английского языка:
CREATE TEXT SEARCH CONFIGURATION english_ts ( PARSER = tsparser ); COMMENT ON TEXT SEARCH CONFIGURATION english_ts IS 'text search configuration for english language'; ALTER TEXT SEARCH CONFIGURATION english_ts ADD MAPPING FOR email, file, float, host, hword_numpart, int, numhword, numword, sfloat, uint, url, url_path, version WITH simple; ALTER TEXT SEARCH CONFIGURATION english_ts ADD MAPPING FOR asciiword, asciihword, hword_asciipart, word, hword, hword_part WITH english_stem;
F.58.2. Примеры #
Следующие примеры иллюстрируют различия в результатах поиска, возвращаемых анализатором текста pg_tsparser
и стандартным анализатором:
SELECT to_tsvector('english', 'pg_trgm') as def_parser, to_tsvector('english_ts', 'pg_trgm') as new_parser; def_parser | new_parser -----------------+----------------------------- 'pg':1 'trgm':2 | 'pg':2 'pg_trgm':1 'trgm':3 (1 row) SELECT to_tsvector('english', '123-abc') as def_parser, to_tsvector('english_ts', '123-abc') as new_parser; def_parser | new_parser -----------------+----------------------------- '123':1 'abc':2 | '123':2 '123-abc':1 'abc':3 (1 row) SELECT to_tsvector('english', 'rel-3.2-A') as def_parser, to_tsvector('english_ts', 'rel-3.2-A') as new_parser; def_parser | new_parser ------------------+------------------------------- '-3.2':2 'rel':1 | '3.2':3 'rel':2 'rel-3.2-a':1 (1 row)
См. также
F.58.3. Авторы #
Postgres Professional, Москва, Россия