Конфигурация текстового поиска определяет все параметры, необходимые для преобразования документа в tsvector: парсер, применяемый для разбиения текста на токены, и словари, используемые для преобразования каждого токена в лексему. Каждый вызов функции
to_tsvector или to_tsquery
требует указания конфигурации текстового поиска для выполнения обработки.
Параметр конфигурации
default_text_search_config
определяет имя конфигурации по умолчанию, которая используется функциями текстового поиска в случае отсутствия явно указанного параметра конфигурации. Это значение можно задать в файле postgresql.confили установить для текущего сеанса с помощью SET команды.
В системе доступно несколько встроенных конфигураций текстового поиска; также существует возможность создания пользовательских конфигураций. Для упрощения управления объектами текстового поиска предусмотрен набор SQL команд, а также существует несколько psql команд для вывода информации об объектах текстового поиска (Раздел 2.9.10).
В качестве примера создадим конфигурацию
pg, предварительно скопировав встроенную
english конфигурацию:
CREATE TEXT SEARCH CONFIGURATION public.pg ( COPY = pg_catalog.english );
Будет использован специфичный для Digital Q.DataBase список синонимов,
сохраненный в файле $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 Список конфигураций текстового поиска Схема | Имя | Описание ---------+------+------------- public | pg | SET default_text_search_config = 'public.pg'; SET SHOW default_text_search_config; default_text_search_config ---------------------------- public.pg