sql >> Database teknologi >  >> RDS >> Mysql

FULLTEXT-forespørgsel med score/rang i Postgresql

Postgres fuldtekstsøgning er lidt anderledes end MySQL fuldtekstsøgning. Det har mange flere muligheder, men det kan være lidt sværere at få det til at fungere, som du kan lide det.

Dette dokument fortæller dig, hvordan du rangerer dine søgeresultater, men jeg anbefaler stærkt, at du læser hele fuldtekstafsnittet fra manualen for at få en idé om, hvad du kan gøre med det:http://www.postgresql.org/docs/current/interactive/textsearch-controls.html#TEXTSEARCH-RANKING

Grundlæggende ville det, der svarer til din forespørgsel, være dette:

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

Som du kan se, bruger dette textsearch hvilket er noget du selv bliver nødt til at definere. For den korte version, læs:http://www.postgresql. org/docs/current/interactive/textsearch-tables.html

Forespørgslen er grundlæggende meget enkel:

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

Men jeg vil stærkt anbefale også at tilføje indekser:

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



  1. Oracle PLS-00363:udtryk '' kan ikke bruges som et tildelingsmål

  2. Hent overordnet MySQL på øverste niveau

  3. Sammenligning af binære værdier i MySQL

  4. SQL Venstre Join