Secondo il vostro commento sulla risposta precedente, è possibile passare facilmente tra l'utilizzo parole di stop e tutte le parole fermarsi. È possibile raggiungere questo obiettivo con una configurazione di ricerca personalizzata:
(1) È possibile creare un dizionario personalizzato senza utilizzare il file parole stop, ad esempio:
CREATE TEXT SEARCH DICTIONARY english_stem_nostop (
Template = snowball
, Language = english
);
nota, in quanto sopra ho lasciato fuori il StopWords
parametro.
(2) quindi creare una nuova configurazione di utilizzare il nuovo dizionario:
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) Poi, quando si cerca di specificare la configurazione che si desidera utilizzare (in alternativa si può modificare l'opzione default_text_search_config
ogni volta), ad esempio:
SELECT
title
FROM
articles
WHERE
to_tsvector('english_nostop', COALESCE(title,'') || ' ' || COALESCE(body,''))
@@ to_tsquery('english_nostop', 'how & to');
È possibile specificare solo 'english'
in SQL sopra per utilizzare la configurazione normale.
Note, in questo esempio che utilizza la configurazione standard si tradurrà in comunicazioni perché ci sono solo fermare parole.
Tenete a mente quanto segue, però:
- Se si utilizza indici, avrete bisogno di due - uno per ogni configurazione. (vedere questi documenti: tsearch tables e triggers).
- Doppio controllo su quale token del parser si desidera utilizzare questa mappatura come descritto al passaggio n. 2, sopra (vedere Parsers).
Grazie, catchdave: questo è quello che stavo cercando. – tomd