18c0693f

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];

  • FTS конфигурация принадлежит пользователю, который создал ее
  • Имя конфигурации cfgname может содержать название схемы, тогда она будет создана в этой схеме, иначе конфигурация будет создана в текущей схеме.
  • PARSER prsname задает парсер, который который используется для разбивания текста на токены. Имя парсера также может содержать название схемы.
  • LOCALE localename - задает название серверной локале, для которой эта конфигурация будет выбираться по умолчанию, если задана опция AS DEFAULT.

  • LIKE template_cfg указывает, что в качестве шаблона используется существующая FTS конфигурация template_cfg.
  • WITH MAP используется с LIKE template_cfg и означает, что также копируются правила обработки токенов словарями.
  • Примеры:

    =# 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 ];

  • IF EXISTS указывать не выдавать ошибку, если удаляемая конфигурация не существует.
  • CASCADE - автоматически удалить все FTS объекты, зависящие от удаляемой FTS конфигурации.
  • RESTRICT - не удалять FTS конфигурацию, если есть какие-либо FTS объекты, зависящие от нее. Этот режим используется по умолчанию.
  • 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;

  • Название словаря dictname может содержать название схемы, в которой он будет создан, например, public.english.


  • LEXIZE lexize_function - название функции, которая занимается преобразованием токена в лексему.


  • INIT init_function - название функции, которая инициализирует словарь


  • OPTION opt_text - задает текстовую строку, которая доступна словарю. Обычно, ее используют для указания файлов, используемых словарем. Относительные пути для словарных файлов интерпретируются относительно директории $PGROOT/share/dicts_data.


  • LIKE template_dictname - задает словарь-шаблон, используемый для создания словаря. При этом, значения параметров INIT, LEXIZE, OPTION, если заданы, перекрывают значения по умолчанию.


  • Для примера, создадим словарь 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,...

    и словарями, через которые эти токены этих типов будут проходить.