unaccent

Фильтрующий словарь текстового поиска.
Схема размещения: ext.
Модуль представляет фильтрующий словарь текстового поиска, который убирает надстрочные (диакритические) знаки из лексем. Выводимые словарем данные всегда передаются следующему словарю, если он существует. Применяя словарь, можно выполнить полнотекстовый поиск без учета ударений (диакритики).
Конфигурирование словаря unaccent заключается в настройке параметра RULES, который задает базовое имя файла со списком правил преобразования. Этот файл должен находиться в каталоге $SHAREDIR/tsearch_data/ (под $SHAREDIR понимается каталог с общими данными инсталляции PostgreSQL). Имя файла должно заканчиваться расширением .rules. Расширение в параметре RULES не указывается.
Функция unaccent() удаляет надстрочные (диакритические) знаки из заданной строки, представляя собой обертку вокруг словарей в стиле unaccent. Может вызываться и вне обычного контекста текстового поиска.
unaccent([словарь regdictionary,] строка text) returns text
Если аргумент словарь опущен, будет использоваться словарь с именем unaccent, находящийся в той же схеме, что и сама функция unaccent().

Ограничения

Текущую реализацию unaccent нельзя использовать в качестве нормализующего словаря для словаря thesaurus.

Использование модуля

При установке расширения unaccent в базе создается шаблон текстового поиска unaccent и словарь unaccent на его основе. Для словаря unaccent по умолчанию определяется параметр RULES='unaccent', благодаря чему его можно сразу использовать со стандартным файлом unaccent.rules.
Можно изменить этот параметр, например:
ALTER TEXT SEARCH DICTIONARY unaccent (RULES='my_rules');
Протестировать этот словарь можно так:
SELECT ts_lexize('unaccent','Hôtel');
Пример вывода результата выполнения запроса:
Раскрыть type=sql
 ts_lexize
-----------
 {Hotel}
(1 row)
Функция unaccent():
SELECT unaccent('unaccent', 'Hôtel');
-- или следующий формат
SELECT unaccent('Hôtel');
Пример вывода результата выполнения запроса:
Раскрыть type=sql
 unaccent
----------
 Hotel
(1 row)
Следующий пример показывает, как вставить словарь unaccent в конфигурацию текстового поиска:
CREATE TEXT SEARCH CONFIGURATION fr ( COPY = french );

ALTER TEXT SEARCH CONFIGURATION fr
        ALTER MAPPING FOR hword, hword_part, word
        WITH unaccent, french_stem;

SELECT to_tsvector('fr','Hôtels de la Mer');
Пример вывода результата выполнения запроса:
Раскрыть type=sql
    to_tsvector
-------------------
 'hotel':1 'mer':4
(1 row)
SELECT to_tsvector('fr','Hôtel de la Mer') @@ to_tsquery('fr','Hotels');
Пример вывода результата выполнения запроса:
Раскрыть type=sql
 ?column?
----------
 t
(1 row)
SELECT ts_headline('fr','Hôtel de la Mer',to_tsquery('fr','Hotels'));
Пример вывода результата выполнения запроса:
Раскрыть type=sql
      ts_headline
------------------------
 <b>Hôtel</b> de la Mer
(1 row)

Ссылки на документацию разработчика

Дополнительную информацию по поставляемому модулю unaccent можно получить по ссылке.
Предыдущий раздел
tsm_system_time
Следующий раздел
uuid-ossp
Была ли страница полезной?