dict_int — пример словаря полнотекстового поиска для целых чисел
Эта страница переведена при помощи нейросети GigaChat.
dict_int
является примером шаблона словаря дополнений для полнотекстового поиска. Цель этого примера словаря – контролировать индексацию целых чисел (со знаком и без знака), позволяя таким числам индексироваться, предотвращая при этом чрезмерный рост количества уникальных слов, что значительно влияет на производительность поиска.
Этот модуль считается «надежным», то есть его могут устанавливать обычные пользователи, имеющие привилегию CREATE
в текущей базе данных.
Конфигурирование
Словарь принимает три опции:
- Параметр
maxlen
задает максимальное количество цифр, разрешенных в целочисленном слове. Значение по умолчанию равно 6. - Параметр
rejectlong
определяет, следует ли усекать целое число с избыточной длиной или игнорировать его. Еслиrejectlong
равенfalse
(значение по умолчанию), словарь возвращает первыеmaxlen
цифры целого числа. Еслиrejectlong
равноtrue
, то словарь рассматривает целое число с избыточной длиной как стоп-слово, так что оно не будет проиндексировано. Обратите внимание, что это также означает, что такое целое число нельзя искать. - Параметр
absval
указывает, должны ли быть удалены ведущие знаки+
или-
из целых чисел. По умолчанию используетсяfalse
. Когдаtrue
, знак удаляется перед применениемmaxlen
.
Использование
Установка расширения 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}
Но реальное использование будет включать включение его в конфигурацию поиска по тексту. Это может выглядеть так:
ALTER TEXT SEARCH CONFIGURATION english
ALTER MAPPING FOR int, uint WITH intdict;