F.12. dict_int — ejemplo de diccionario de búsqueda de texto completo para enteros #

F.12.1. Configuración
F.12.2. Uso

dict_int es un ejemplo de una plantilla de diccionario adicional para la búsqueda de texto completo. La motivación de este diccionario de ejemplo es controlar la indexación de números enteros (con y sin signo), permitiendo que dichos números sean indexados al mismo tiempo que se evita el crecimiento excesivo en el número de palabras únicas, lo cual afecta encarecidamente el rendimiento de las búsquedas.

Este módulo se considera trusted (de confianza), es decir, puede ser instalado por usuarios que no sean superusuarios y que tengan el privilegio CREATE en la base de datos actual.

F.12.1. Configuración #

El diccionario acepta tres opciones:

  • El parámetro maxlen especifica el número máximo de dígitos permitidos en una palabra entera. El valor predeterminado es 6.

  • El parámetro rejectlong especifica si un número entero que excede la longitud debe ser truncado o ignorado. Si rejectlong es false (el valor predeterminado), el diccionario devuelve los primeros maxlen dígitos del número entero. Si rejectlong es true, el diccionario trata a un entero que excede la longitud como una palabra vacía (stop word), de modo que no se indexará. Ten en cuenta que esto también significa que no se podrá buscar dicho entero.

  • El parámetro absval especifica si se deben eliminar los signos iniciales + o - de las palabras enteras. El valor predeterminado es false. Cuando es true, el signo se elimina antes de que se aplique maxlen.

F.12.2. Uso #

La instalación de la extensión dict_int crea una plantilla de búsqueda de texto intdict_template y un diccionario intdict basado en ella, con los parámetros predeterminados. Puedes modificar los parámetros, por ejemplo:

mydb# ALTER TEXT SEARCH DICTIONARY intdict (MAXLEN = 4, REJECTLONG = true);
ALTER TEXT SEARCH DICTIONARY

o crear nuevos diccionarios basados en la plantilla.

Para probar el diccionario, puedes intentar:

mydb# select ts_lexize('intdict', '12345678');
 ts_lexize
-----------
 {123456}

pero el uso en el mundo real implicará incluirlo en una configuración de búsqueda de texto como se describe en la Chapter 12. Eso podría verse así:

ALTER TEXT SEARCH CONFIGURATION english
    ALTER MAPPING FOR int, uint WITH intdict;