F.54. pg_trgm_mchar — поиск схожих строк типов mchar и mvarchar на основе триграмм #
pg_trgm_mchar — расширение Postgres Pro, которое обеспечивает быстрый поиск схожих строк типов mchar и mvarchar на основе триграмм. Функциональность этого расширения во многом пересекается с функциональностью pg_trgm: оно предоставляет аналогичные функции и операторы, адаптированные для типов mchar и mvarchar. Однако для поиска по столбцам этих типов pg_trgm_mchar поддерживает только классы операторов GIN.
Примечание
Оператор LIKE поддерживает только операнды типов (mchar, mvarchar). Операции с операндами типов (mchar, mchar) не поддерживаются.
F.54.1. Установка #
Расширение pg_trgm_mchar включено в состав Postgres Pro Standard как стандартное расширение. Оно зависит как от pg_trgm, так и от mchar. Эти модули необходимо установить до создания pg_trgm_mchar, либо можно установить все зависимости автоматически с помощью команды:
CREATE EXTENSION pg_trgm_mchar CASCADE;
Также, если оба требуемых модуля уже установлены, расширение pg_trgm_mchar можно включить, выполнив следующий запрос:
CREATE EXTENSION pg_trgm_mchar;
Поскольку типы данных mchar и mvarchar используют библиотеку ICU, её наличие также необходимо для корректной работы расширения.
F.54.2. Пример #
Поскольку pg_trgm_mchar функционирует практически идентично pg_trgm, за примерами использования обратитесь к документации pg_trgm.
Однако процессы создания индексов различаются: расширение pg_trgm_mchar использует семейство операторов gin_trgm_ops_mvarchar/gin_trgm_ops_mchar вместо gin_trgm_ops, используемого в pg_trgm:
CREATE TABLE test_trgm(t mvarchar); CREATE INDEX trgm_idx ON test_trgm USING gin (t gin_trgm_ops_mvarchar); ... CREATE TABLE test_trgm_mchar(t mchar); CREATE INDEX trgm_mchar_idx ON test_trgm_mchar USING gin (t gin_trgm_ops_mchar);
Во всех остальных случаях поведение этих двух модулей идентично.
F.54. pg_trgm_mchar — trigram-based search for similar mchar and mvarchar strings #
pg_trgm_mchar is a Postgres Pro extension that allows fast trigram-based search for similar mchar and mvarchar strings. The functionality provided by this extension overlaps substantially with the functionality of pg_trgm: it provides equivalent functions and operators adjusted for mchar and mvarchar types. However, pg_trgm_mchar supports only the GIN operator classes for searching these column types.
Note
The LIKE operator supports only (mchar, mvarchar) operand types. (mchar, mchar) operands are not supported.
F.54.1. Installation #
pg_trgm_mchar is a built-in extension included into Postgres Pro Standard. It depends on both pg_trgm and mchar. You must install these modules before creating pg_trgm_mchar, or you can install all dependencies automatically with:
CREATE EXTENSION pg_trgm_mchar CASCADE;
Alternatively, if both required modules are already installed, you can enable pg_trgm_mchar using the following query:
CREATE EXTENSION pg_trgm_mchar;
Since mchar and mvarchar data types use the ICU library, it is also required for correct operation of the extension.
F.54.2. Example #
Since pg_trgm_mchar operates almost identically to pg_trgm, for usage examples, refer to the pg_trgm documentation.
However, there is a difference in index creation processes. The pg_trgm_mchar extension uses the gin_trgm_ops_mvarchar/gin_trgm_ops_mchar operator family instead of gin_trgm_ops used by pg_trgm:
CREATE TABLE test_trgm(t mvarchar); CREATE INDEX trgm_idx ON test_trgm USING gin (t gin_trgm_ops_mvarchar); ... CREATE TABLE test_trgm_mchar(t mchar); CREATE INDEX trgm_mchar_idx ON test_trgm_mchar USING gin (t gin_trgm_ops_mchar);
In all other cases, these two modules behave identically.