Mysql
 sql >> Datenbank >  >> RDS >> Mysql

FULLTEXT-Abfrage mit Punktzahlen/Rängen in Postgresql

Die Postgres-Volltextsuche unterscheidet sich ein wenig von der MySQL-Volltextsuche. Es hat viel mehr Optionen, kann aber etwas schwieriger sein, so zu arbeiten, wie Sie es möchten.

In diesem Dokument erfahren Sie, wie Sie Ihre Suchergebnisse einordnen können, aber ich empfehle Ihnen dringend, den gesamten Volltextabschnitt des Handbuchs zu lesen, um eine Vorstellung davon zu bekommen, was Sie damit tun können:http://www.postgresql.org/docs/current/interactive/textsearch-controls.html#TEXTSEARCH-RANKING

Im Grunde wäre das Äquivalent Ihrer Abfrage:

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

Wie Sie sehen können, verwendet dies textsearch was Sie selbst definieren müssen. Lesen Sie für die Kurzversion:http://www.postgresql. org/docs/current/interactive/textsearch-tables.html

Die Abfrage ist im Wesentlichen sehr einfach:

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

Aber ich würde dringend empfehlen, auch Indizes hinzuzufügen:

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