De acuerdo con sus comentarios sobre la respuesta anterior, se puede cambiar fácilmente entre el uso de no hay palabras vacías ytodo dejar de palabras. Puede lograr esto con una configuración de búsqueda personalizada:
(1) Se puede crear un diccionario personalizado sin necesidad de utilizar el archivo de palabras vacías, por ejemplo:
CREATE TEXT SEARCH DICTIONARY english_stem_nostop (
Template = snowball
, Language = english
);
nota, en lo anterior me he dejado la StopWords
parámetro.
(2) A continuación, cree una nueva configuración a utilizar su nuevo diccionario:
CREATE TEXT SEARCH CONFIGURATION public.english_nostop (COPY = pg_catalog.english);
ALTER TEXT SEARCH CONFIGURATION public.english_nostop
ALTER MAPPING FOR asciiword, asciihword, hword_asciipart, hword, hword_part, word WITH english_stem_nostop;
(3) Entonces, cuando se busca especificar la configuración que desea utilizar (alternativamente, se puede cambiar la opción default_text_search_config
cada vez), por ejemplo:
SELECT
title
FROM
articles
WHERE
to_tsvector('english_nostop', COALESCE(title,'') || ' ' || COALESCE(body,''))
@@ to_tsquery('english_nostop', 'how & to');
puede especificar simplemente 'english'
en el SQL anterior para utilizar la configuración normal.
Nota, en este ejemplo que el uso de la configuración estándar dará lugar a avisos porque hay sólo palabras vacías.
Tenga en cuenta lo siguiente, sin embargo:
- Si está utilizando índices, se necesitan dos - uno para cada configuración. (vea estos documentos: tsearch tables y triggers).
- Comprueba qué fichas del analizador quieres usar esta asignación según el paso 2 anterior (consulta Parsers).
Gracias, catchdave, eso es lo que estaba buscando. – tomd