Saltar al contenido

Búsqueda de texto completo con PostgreSQL

Nuestro grupo especializado despúes de algunos días de investigación y de recopilar de datos, hallamos la solución, nuestro deseo es que todo este artículo sea de gran utilidad en tu proyecto.

Solución:

Además de lo que ya explicó @swasheck, probablemente obtendrá un mejor rendimiento con LIKE (~~) y ILIKE (~~*) en combinación con un trigrama GiST o índice GIN. Tendrás que instalar el módulo adicional pg_trgm para eso. Encuentre detalles en estas preguntas relacionadas:

  • ¿Cómo se implementa LIKE?
  • Coincidencia de patrones con LIKE, SIMILAR TO o expresiones regulares en PostgreSQL

Los índices de trigramas se pueden utilizar para básico coincidencias de expresiones regulares (~) también, pero LIKE es generalmente más rápido.

Crea un índice como:

CREATE INDEX stickers_title_gin_trgm_idx ON stickers
USING gin (title gin_trgm_ops);

Entonces esto debería ser muy rápido:

SELECT *
FROM   stickers
WHERE  title ~~* '%case 580%';

O (no está claro en su pregunta):

SELECT *
FROM   stickers
WHERE  title ~~* '%case%'
AND    title ~~  '%580%';

Este no es realmente un caso de uso para la búsqueda de texto completo porque el texto completo se basa en derivar el texto y analizar los fragmentos en tokens. Como puedes ver desde keywords, ‘580h’ se analiza como su propia palabra porque no hay ningún idioma en el que ‘580’ sea una “raíz” de ‘580h’. Probablemente estaría mejor con la coincidencia de expresiones regulares.

Aquí hay una consulta que trabajé para usted:

SELECT id, title 
  FROM stickers WHERE
    (title ~* '580')
      AND
    (title ~* 'case')
ORDER BY id

SELECT
*
FROM
stickers
WHERE
keywords @@ to_tsquery('case & 580:*')

trabajará.

La búsqueda de texto de Postgres permite prefix búsqueda, que está representada por :* en la consulta. Coincidirá con cualquier token que comience con 580

Si guardas alguna incertidumbre y disposición de progresar nuestro escrito eres capaz de añadir una acotación y con deseo lo interpretaremos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *