SQL команды
CREATE FULLTEXT CONFIGURATION - создание полнотекстовой конфигурации
CREATE FULLTEXT CONFIGURATION cfgname PARSER prsname [ LOCALE localename] [AS DEFAULT];
CREATE FULLTEXT CONFIGURATION cfgname [{ PARSER prsname | LOCALE localename } [ ...]] LIKE template_cfg [WITH MAP] [AS DEFAULT];
LOCALE localename - задает название серверной локале, для которой эта конфигурация будет выбираться по умолчанию, если задана опция AS DEFAULT.
Примеры:
=# CREATE FULLTEXT CONFIGURATION test LIKE pg_catalog.russian_utf8 AS DEFAULT; =# \dF public.test List of fulltext configurations Schema | Name | Locale | Default | Description --------+------+-------------+---------+------------- public | test | ru_RU.UTF-8 | Y |
DROP FULLTEXT CONFIGURATION - удалить FTS конфигурацию
DROP FULLTEXT CONFIGURATION [IF EXISTS]cfgname [ CASCADE | RESTRICT ];
ALTER FULLTEXT CONFIGURATION - изменить FTS конфигурацию
ALTER FULLTEXT CONFIGURATION cfgname RENAME TO newcfgname;
ALTER FULLTEXT CONFIGURATION cfgname SET { LOCALE localename | PARSER prsname } [, ...];
ALTER FULLTEXT CONFIGURATION cfgname { SET AS | DROP } DEFAULT;
Эта команда позволяет изменить параметры, задаваемые при ее создании.
CREATE FULLTEXT DICTIONARY - создать словарь
CREATE FULLTEXT DICTIONARY dictname LEXIZE lexize_function [INIT init_function ] [OPTION opt_text ] ;
CREATE FULLTEXT DICTIONARY dictname [ { INIT init_function | LEXIZE lexize_function | OPTION opt_text } [ ... ]] LIKE template_dictname;
Для примера, создадим словарь my_simple, который будет аналогичен встроенному словарю simple, но способен различать стоп-слова английского языка.
=# CREATE FULLTEXT DICTIONARY public.my_simple OPTION 'english.stop' LIKE pg_catalog.simple; =# select lexize('public.my_simple','YeS'); lexize -------- {yes} =# select lexize('public.my_simple','The'); lexize -------- {}
Пример создания нового словаря можно посмотреть в .
DROP FULLTEXT DICTIONARY - удаляет словарь
DROP FULLTEXT DICTIONARY [IF EXISTS]dictname [ CASCADE | RESTRICT ];
ALTER FULLTEXT DICTIONARY - изменяет параметры словаря
ALTER FULLTEXT DICTIONARY dictname RENAME TO newdictname;
ALTER FULLTEXT DICTIONARY dictname SET OPTION opt_text;
CREATE FULLTEXT MAPPING - создать правила обработки токенов словарями
CREATE FULLTEXT MAPPING ON cfgname FOR tokentypename[, ...] WITH dictname1[, ...];
Для FTS конфигурации cfgname задается соответствие между списком tokentypename1,tokentypename2,...
и словарями, через которые эти токены этих типов будут проходить.
- tokentypename[, ...] - список типов токенов, например, lword,lhword,lpart_hword.
- dictname1[, ...] - список словарей, которые будут пытаться опознать токены. Порядок словарей важен.
- prsname - имя создаваемого парсера, может содержать название схемы, в которой он будет создан.
- start_function - название функции, которая инициализирует парсер.
- gettoken_function - название функции, которая возвращает токен.
- end_function - название функции, которая вызывается после окончания работы парсера.
- headline_function, - название функции, которая возвращает часть документа, содержащая запрос.
- Комментарий виден при использовании + в команде psql, например, \dFd+ - показать расширенную информацию о словарях.
Например, создадим тестовую конфигурацию testcfg на основе шаблона russian_utf8 и зададим правила обработки английских слов lhword,lpart_hword,lword.
=# CREATE FULLTEXT CONFIGURATION testcfg LOCALE 'testlocale' LIKE russian_utf8; =# CREATE FULLTEXT MAPPING ON testcfg FOR lword,lhword,lpart_hword WITH simple,en_stem; =# \dF+ testcfg Configuration 'testcfg' Parser name: 'default' Locale: 'testlocale' Token | Dictionaries -------------+---------------- lhword | simple,en_stem lpart_hword | simple,en_stem lword | simple,en_stem
ALTER FULLTEXT MAPPING - изменить правило обработки токенов
ALTER FULLTEXT MAPPING ON cfgname FOR tokentypename[, ...] WITH dictname1[, ...];
ALTER FULLTEXT MAPPING ON cfgname [FOR tokentypename[, ...] ] REPLACE olddictname TO newdictname;
Позволяет добавлять новые правила обработки токенов или изменять старые. Изменим правило для токена типа lword, см. предыдущий пример.
=# ALTER FULLTEXT MAPPING ON testcfg FOR lhword WITH simple; =# \dF+ testcfg Configuration 'testcfg' Parser name: 'default' Locale: 'testlocale' Token | Dictionaries --------+---------------- lhword | simple,en_stem lpart_hword | simple,en_stem lword | simple
DROP FULLTEXT MAPPING - удалить правило обработки токена
DROP FULLTEXT MAPPING [IF EXISTS] ON cfgname FOR tokentypename;
CREATE FULLTEXT PARSER - создать FTS парсер
CREATE FULLTEXT PARSER prsname START= start_function GETTOKEN gettoken_function END end_function LEXTYPES lextypes_function [ HEADLINE headline_function ] ;
lextypes_function - название функции, которая возвращает массив, содержащий {id,alias,full descr} - идентификатор, краткое название токена и полное описание. Подробнее, смотри в src/include/utils/ts_public.h.
Встроенный парсер называется default и распознает 23 типа токенов, список которых можно получить с помощью функции token_type(prsname). Пример создания нового парсера можно посмотреть в
DROP FULLTEXT PARSER - удалить FTS парсер
DROP FULLTEXT PARSER [IF EXISTS] prsname [ CASCADE | RESTRICT ];
ALTER FULLTEXT PARSER - изменить имя FTS парсера
ALTER FULLTEXT PARSER prsname RENAME TO newprsname;
ALTER FULLTEXT ... OWNER - изменить владельца
ALTER FULLTEXT { PARSER|DICTIONARY|CONFIGURATION } name OWNER TO newowner;
По умолчанию, владельцем FTS объекта является тот, кто создал его. Команда ALTER FULLTEXT ... OWNER позволяет менять владельца.
COMMENT ON FULLTEXT - создать или изменить комментарий FTS объекта
COMMENT ON FULLTEXT { CONFIGURATION | DICTIONARY | PARSER } objname IS text;
Для того чтобы убрать комментарий, надо задать NULL для параметра text.
=# COMMENT ON FULLTEXT DICTIONARY intdict IS 'Dictionary for integers';