sql >> Databáze >  >> RDS >> Mysql

FULLTEXTOVÝ dotaz se skóre/hodnocením v Postgresql

Fulltextové vyhledávání Postgres je trochu odlišné od fulltextového vyhledávání MySQL. Má mnohem více možností, ale může být trochu obtížnější pracovat tak, jak se vám líbí.

Tento dokument vám řekne, jak seřadit výsledky vyhledávání, ale důrazně vám doporučuji, abyste si přečetli celý plný text z příručky, abyste získali představu o tom, co s tím můžete dělat:http://www.postgresql.org/docs/current/interactive/textsearch-controls.html#TEXTSEARCH-RANKING

V zásadě by ekvivalent vašeho dotazu byl tento:

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

Jak můžete vidět, toto používá textsearch což je něco, co budete muset definovat sami. Krátkou verzi si přečtěte:http://www.postgresql. org/docs/current/interactive/textsearch-tables.html

Dotaz je v podstatě velmi jednoduchý:

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

Ale důrazně bych doporučil přidat i indexy:

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



  1. Textové nebo číselné pole – jednoduchá metoda SQL pro přepínání datových typů

  2. Vrácení „posledního“ řádku každého „seskupit podle“ v MySQL

  3. Jaký je nejrychlejší způsob výpisu a načtení databáze MySQL InnoDB pomocí mysqldump?

  4. APPARENT DEADLOCK Vytváření nouzových vláken pro nepřiřazené nevyřízené úkoly