sql >> Database >  >> RDS >> Mysql

FULLTEXT-query met scores/rangen in Postgresql

Het zoeken in volledige tekst van Postgres is een beetje anders dan het zoeken in volledige tekst van MySQL. Het heeft veel meer opties, maar het kan wat moeilijker zijn om het te laten werken zoals jij het wilt.

Dit document vertelt u hoe u uw zoekresultaten kunt rangschikken, maar ik raad u ten zeerste aan het volledige gedeelte met volledige tekst uit de handleiding te lezen om een ​​idee te krijgen van wat u ermee kunt doen:http://www.postgresql.org/docs/current/interactive/textsearch-controls.html#TEXTSEARCH-RANKING

In principe zou het equivalent van uw vraag dit zijn:

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

Zoals je kunt zien, gebruikt dit textsearch dat is iets wat je zelf zult moeten definiëren. Lees voor de korte versie:http://www.postgresql. org/docs/current/interactive/textsearch-tables.html

De vraag is in wezen heel eenvoudig:

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

Maar ik zou sterk aanbevelen om ook indexen toe te voegen:

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



  1. mysql om diepte van het record te krijgen, ouder- en voorouderrecords te tellen

  2. Hoe vervang ik een reguliere expressie in MySQL?

  3. Hoe kan ik (hoofdletterongevoelig) in een kolom zoeken met LIKE-wildcard?

  4. WFLYJCA0041:Kan module voor stuurprogramma [com.mysql] niet laden op Jboss 7 met MySQL-database