12.7. Пример конфигурации#
12.7. Пример конфигурации #
Конфигурация полнотекстового поиска определяет все параметры, необходимые для преобразования документа в тип tsvector
: парсер, используемый для разбиения текста на компоненты, и словари, используемые для преобразования каждого компонента в лексему. Каждый вызов функции to_tsvector
или to_tsquery
требует наличия конфигурации полнотекстового поиска для выполнения своей обработки.
Параметр конфигурации default_text_search_config определяет имя конфигурации по умолчанию, которая используется функциями полнотекстового поиска, если явно не указан параметр конфигурации. Его можно установить в файле postgresql.conf
или установить для отдельной сессии с помощью команды SET
.
Существует несколько предопределенных конфигураций полнотекстового поиска, и вы можете легко создавать пользовательские конфигурации. Для упрощения управления объектами полнотекстового поиска доступен набор команд SQL, а также несколько команд psql, которые отображают информацию о объектах полнотекстового поиска (Раздел 12.10).
В качестве примера мы создадим конфигурацию pg
, начав с дублирования встроенной конфигурации english
:
CREATE TEXT SEARCH CONFIGURATION public.pg ( COPY = pg_catalog.english );
Мы будем использовать специфичный для PostgreSQL список синонимов
и сохранить его в $SHAREDIR/tsearch_data/pg_dict.syn
.
Содержимое файла выглядит так:
postgres pg pgsql pg postgresql pg
Мы определяем синонимический словарь следующим образом:
CREATE TEXT SEARCH DICTIONARY pg_dict ( TEMPLATE = synonym, SYNONYMS = pg_dict );
Далее мы регистрируем словарь Ispell english_ispell
, который имеет свои собственные файлы конфигурации:
CREATE TEXT SEARCH DICTIONARY english_ispell ( TEMPLATE = ispell, DictFile = english, AffFile = english, StopWords = english );
Теперь можно настроить отображения для слов в конфигурации
pg
:
ALTER TEXT SEARCH CONFIGURATION pg ALTER MAPPING FOR asciiword, asciihword, hword_asciipart, word, hword, hword_part WITH pg_dict, english_ispell, english_stem;
Мы решили не индексировать или искать некоторые типы компонентов, которые обрабатывает встроенная конфигурация:
ALTER TEXT SEARCH CONFIGURATION pg DROP MAPPING FOR email, url, url_path, sfloat, float;
Теперь можно протестировать нашу конфигурацию:
SELECT * FROM ts_debug('public.pg', ' PostgreSQL, the highly scalable, SQL compliant, open source object-relational database management system, is now undergoing beta testing of the next version of our software. ');
Следующим шагом является установка сессии для использования новой конфигурации, которая была создана в схеме public
:
=> \dF List of text search configurations Schema | Name | Description ---------+------+------------- public | pg | SET default_text_search_config = 'public.pg'; SET SHOW default_text_search_config; default_text_search_config ---------------------------- public.pg