Buenas tardes , he leído sobre el tema Postgres y FTS en varios sitios y lo
he utilizado varias veces pero al decir verdad, sigo entendiendolo muy poco.
Si alguno tiene tiempo y puede ayudarme, les comento mi inquietud.

Tengo la siguiente consulta:
SELECT *
FROM tescrito t
WHERE to_tsvector('spanish',escritodtxt)   @@ to_tsquery('spanish','*salta*
')

y tengo un índice creado

CREATE INDEX fts_escritodtxt ON public.tescrito
  USING gin (to_tsvector('spanish'::regconfig, escritodtxt));

La tabla tiene 65300 registros
El planificado me dice que realizará un seq scan y de hecho, la consulta
demora mucho.
Si cambio la palabra a buscar, por ejemplo por 'casa'
SELECT *
FROM tescrito t
WHERE to_tsvector('spanish',escritodtxt)   @@ to_tsquery('spanish','*casa*')

Entonces demora menos y el planificador ahora dice que si utilizará el
índice.

Preguntas:
En que se basa postgres para decidir si utiliza o no el índice si lo único
que cambié es la palabra a buscar?
Será que el tsquery de 'salta' es una palabra que no se indexa?
Para el caso de 'spanish' Aparte de crear el índice es necesario crear o
configurar algo mas?
Desde ya les agradezco la ayuda que me puedan brindar.
Saludos

Guillermo

Responder a