sql >> Databasteknik >  >> RDS >> Mysql

FULLTEXT-fråga med poäng/rankningar i Postgresql

Postgres fulltextsökning skiljer sig lite från MySQL fulltextsökning. Det har många fler alternativ men kan vara lite svårare att få det att fungera som du vill.

Det här dokumentet berättar hur du rangordnar dina sökresultat, men jag rekommenderar starkt att du läser hela fulltextavsnittet från manualen för att få en uppfattning om vad du kan göra med den:http://www.postgresql.org/docs/current/interactive/textsearch-controls.html#TEXTSEARCH-RANKING

I grund och botten skulle motsvarigheten till din fråga vara denna:

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

Som du kan se använder detta textsearch vilket är något du måste definiera själv. För den korta versionen, läs:http://www.postgresql. org/docs/current/interactive/textsearch-tables.html

Frågan är i grunden väldigt enkel:

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

Men jag rekommenderar starkt att du också lägger till index:

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



  1. Hur infogar man kolumner på en specifik position i befintlig tabell?

  2. Installera Oracle 11g Release 2 Enterprise Edition på Windows 7 32-bitars

  3. ORA-01843 inte en giltig månad- Jämför datum

  4. Hur fixar jag:mysql:[FEL] Hittade alternativet utan föregående grupp i konfigurationsfilen /etc/mysql/my.cnf?