Búsqueda de texto completosolo PostgreSQL

TO_TSQUERY

Construye una consulta de búsqueda de texto completo: palabras con condiciones «y», «o» y «no».

Sintaxis

TO_TSQUERY('<configuración de idioma>', '<consulta>')
WEBSEARCH_TO_TSQUERY('<configuración de idioma>', <texto del buscador>)

En la consulta, las palabras se unen con operadores: &, «y»; |, «o»; !, «no»; <->, «una justo después de la otra». Las palabras se reducen a su raíz igual que en TO_TSVECTOR. WEBSEARCH_TO_TSQUERY acepta el texto normal de un buscador —palabras, comillas y signos menos— y lo convierte en consulta por sí sola.

Una consulta con «y»
SELECT TO_TSQUERY('english', 'running & foxes') AS query;
query
'run' & 'fox'
«Y» y «no» en una búsqueda
SELECT TO_TSVECTOR('english', 'Fast delivery and friendly support')
@@ TO_TSQUERY('english', 'delivery & !slow') AS match;
match
true

Está delivery y no está slow: hay coincidencia.

Como en un buscador
SELECT WEBSEARCH_TO_TSQUERY('english', 'fast delivery -slow') AS query;
query
'fast' & 'deliveri' & !'slow'

El signo menos delante de una palabra se convirtió en «no», y el espacio, en «y». deliveri es la raíz de la palabra delivery.

Ten en cuenta

Un espacio entre palabras es un error: TO_TSQUERY('english', 'fast delivery') dice syntax error in tsquery. Une las palabras con & o usa WEBSEARCH_TO_TSQUERY.

No pases a TO_TSQUERY lo que escribe el usuario: cualquier carácter de más rompe la consulta. Para un buscador existen WEBSEARCH_TO_TSQUERY y PLAINTO_TSQUERY.

La configuración de la consulta y la del documento deben coincidir: TO_TSVECTOR('english', 'running') @@ TO_TSQUERY('simple', 'running') da false, porque en el documento está la raíz run y en la consulta, la palabra entera running.

Funciones relacionadas

Más detalles en el curso