sql >> Base de Datos >  >> RDS >> Mysql

Consulta de TEXTO COMPLETO con puntajes / rangos en Postgresql

La búsqueda de texto completo de Postgres es un poco diferente de la búsqueda de texto completo de MySQL. Tiene muchas más opciones, pero puede ser un poco más difícil hacer que funcione como a ti te gusta.

Este documento le indica cómo clasificar los resultados de su búsqueda, pero le recomiendo que lea la sección de texto completo del manual para tener una idea de lo que puede hacer con él:http://www.postgresql.org/docs/current/interactive/textsearch-controls.html#TEXTSEARCH-RANKING

Básicamente, el equivalente de su consulta sería esta:

SELECT pictures.id, ts_rank_cd(textsearch, 'phrase') AS score
FROM pictures
ORDER BY score DESC

Como puede ver, esto usa textsearch que es algo que tendrás que definir tú mismo. Para la versión corta, lea:http://www.postgresql. org/docs/current/interactive/textsearch-tables.html

La consulta es esencialmente muy simple:

SELECT pictures.id, ts_rank_cd(to_tsvector('english', pictures.title), 'phrase') AS score
FROM pictures
ORDER BY score DESC

Pero recomendaría encarecidamente agregar índices también:

CREATE INDEX pictures_title ON pictures USING gin(to_tsvector('english', title));