F.16. dict_int#

F.16. dict_int

F.16. dict_int

dict_int - это пример шаблона дополнительного словаря для полнотекстового поиска. Мотивацией для этого словаря является контроль индексирования целых чисел (со знаком и без знака), позволяя индексировать такие числа, при этом предотвращая чрезмерный рост количества уникальных слов, что сильно влияет на производительность поиска.

Этот модуль считается "доверенным", то есть его можно установить недоступным пользователям, у которых есть привилегия CREATE в текущей базе данных.

F.16.1. Конфигурация

Словарь принимает три варианта:

  • Параметр maxlen определяет максимальное количество цифр, разрешенных в целочисленном слове. Значение по умолчанию - 6.

  • Параметр rejectlong определяет, должно ли быть обрезано или проигнорировано слишком длинное целое число. Если rejectlong равно false (по умолчанию), словарь возвращает первые maxlen цифр целого числа. Если rejectlong равно true, словарь рассматривает слишком длинное целое число как стоп-слово, поэтому оно не будет проиндексировано. Обратите внимание, что это также означает, что такое целое число нельзя искать.

  • Параметр absval определяет, должны ли удаляться ведущие знаки + или - из целочисленных слов. По умолчанию значение равно false. Когда значение равно true, знак удаляется перед применением maxlen.

F.16.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;