Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Consulta FULLTEXT com pontuações/classificações no Postgresql


A pesquisa de texto completo do Postgres é um pouco diferente da pesquisa de texto completo do MySQL. Tem muito mais opções, mas pode ser um pouco mais difícil trabalhar do jeito que você gosta.

Este documento informa como classificar seus resultados de pesquisa, mas recomendo fortemente que você leia toda a seção de texto completo do manual para ter uma ideia do que você pode fazer com ele:http://www.postgresql.org/docs/current/interactive/textsearch-controls.html#TEXTSEARCH-RANKING

Basicamente, o equivalente da sua consulta seria isso:
SELECT pictures.id, ts_rank_cd(textsearch, 'phrase') AS score
FROM pictures
ORDER BY score DESC

Como você pode ver, isso usa textsearch que é algo que você terá que definir a si mesmo. Para a versão curta, leia:http://www.postgresql. org/docs/current/interactive/textsearch-tables.html

A consulta é essencialmente muito simples:
SELECT pictures.id, ts_rank_cd(to_tsvector('english', pictures.title), 'phrase') AS score
FROM pictures
ORDER BY score DESC

Mas eu recomendaria fortemente adicionar índices também:
CREATE INDEX pictures_title ON pictures USING gin(to_tsvector('english', title));