F.15. dict_int — пример словаря полнотекстового поиска для целых чисел#
F.15. dict_int — пример словаря полнотекстового поиска для целых чисел #
dict_int - это пример шаблона дополнительного словаря для полнотекстового поиска. Мотивацией для этого словаря является контроль индексирования целых чисел (со знаком и без знака), позволяя индексировать такие числа, при этом предотвращая чрезмерный рост количества уникальных слов, что сильно влияет на производительность поиска.
Этот модуль считается "доверенным", то есть его можно установить
недоступным пользователям, у которых есть привилегия CREATE
в текущей базе данных.
F.15.1. Конфигурация #
Словарь принимает три варианта:
Параметр
maxlenопределяет максимальное количество цифр, разрешенных в целочисленном слове. Значение по умолчанию - 6.Параметр
rejectlongопределяет, должно ли быть обрезано или проигнорировано слишком длинное целое число. Еслиrejectlongравноfalse(по умолчанию), словарь возвращает первыеmaxlenцифр целого числа. Еслиrejectlongравноtrue, словарь рассматривает слишком длинное целое число как стоп-слово, поэтому оно не будет проиндексировано. Обратите внимание, что это также означает, что такое целое число нельзя искать.Параметр
absvalопределяет, должны ли удаляться ведущие знаки “+” или “-” из целочисленных слов. По умолчанию значение равноfalse. Когда значение равноtrue, знак удаляется перед применениемmaxlen.
F.15.2. Использование #
Установка расширения dict_int создает шаблон текстового поиска intdict_template и словарь intdict на его основе с параметрами по умолчанию. Вы можете изменить параметры, например,
mydb# ALTER TEXT SEARCH DICTIONARY intdict (MAXLEN = 4, REJECTLONG = true); ALTER TEXT SEARCH DICTIONARY
или создайте новые словари на основе шаблона.
Чтобы протестировать словарь, вы можете попробовать
mydb# select ts_lexize('intdict', '12345678');
ts_lexize
-----------
{123456}
но в реальном мире его использование будет включать его в конфигурацию текстового поиска, как описано в Глава 12. Это может выглядеть так:
ALTER TEXT SEARCH CONFIGURATION english
ALTER MAPPING FOR int, uint WITH intdict;