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