Una configuración de búsqueda de texto especifica todas las opciones necesarias para transformar un
documento en un tsvector: el analizador que se utilizará para dividir el texto
en tokens, y los diccionarios que se utilizarán para transformar cada token en un
lexema. Cada llamada de
to_tsvector o to_tsquery
necesita una configuración de búsqueda de texto para realizar su procesamiento.
El parámetro de configuración
default_text_search_config
especifica el nombre de la configuración por omisión, que es la
que utilizan las funciones de búsqueda de texto si se omite un parámetro de configuración
explícito.
Se puede establecer en postgresql.conf, o establecerse para una
sesión individual utilizando el comando SET.
Están disponibles varias configuraciones de búsqueda de texto predefinidas, y puedes crear configuraciones personalizadas fácilmente. Para facilitar la administración de objetos de búsqueda de texto, está disponible un conjunto de comandos SQL, y existen varios comandos de psql que muestran información sobre objetos de búsqueda de texto (Section 12.10).
Como ejemplo crearemos una configuración
pg, comenzando por duplicar la configuración incorporada
english:
CREATE TEXT SEARCH CONFIGURATION public.pg ( COPY = pg_catalog.english );
Utilizaremos una lista de sinónimos específica de PostgreSQL
y la guardaremos en $SHAREDIR/tsearch_data/pg_dict.syn.
El contenido del archivo se ve así:
postgres pg pgsql pg postgresql pg
Definimos el diccionario de sinónimos de esta manera:
CREATE TEXT SEARCH DICTIONARY pg_dict (
TEMPLATE = synonym,
SYNONYMS = pg_dict
);
A continuación, registramos el diccionario Ispell
english_ispell, el cual tiene sus propios archivos de configuración:
CREATE TEXT SEARCH DICTIONARY english_ispell (
TEMPLATE = ispell,
DictFile = english,
AffFile = english,
StopWords = english
);
Ahora podemos configurar las asociaciones para las palabras en la configuración
pg:
ALTER TEXT SEARCH CONFIGURATION pg
ALTER MAPPING FOR asciiword, asciihword, hword_asciipart,
word, hword, hword_part
WITH pg_dict, english_ispell, english_stem;
Elegimos no indexar ni buscar algunos tipos de tokens que la configuración incorporada sí maneja:
ALTER TEXT SEARCH CONFIGURATION pg
DROP MAPPING FOR email, url, url_path, sfloat, float;
Ahora podemos probar nuestra configuración:
SELECT * FROM ts_debug('public.pg', '
PostgreSQL, the highly scalable, SQL compliant, open source object-relational
database management system, is now undergoing beta testing of the next
version of our software.
');
El siguiente paso es configurar la sesión para utilizar la nueva configuración, que fue creada
en el esquema public:
=> \dF List of text search configurations Schema | Name | Description ---------+------+------------- public | pg | SET default_text_search_config = 'public.pg'; SET SHOW default_text_search_config; default_text_search_config ---------------------------- public.pg