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

Dejte některým polím větší relevanci a seřaďte je podle relevance ve fulltextovém vyhledávání mysql

Nejprve vytvořte tři FULLTEXTOVÉ indexy:

* one on the title column
* one on the body column
* one on both title and body columns

Poté vytvořte dotaz následujícím způsobem:

SELECT field1, field2, field3, title, body,
MATCH (title) AGAINST ('word_to_search') AS rel_title,
MATCH (body) AGAINST ('word_to_search') AS rel_body
FROM table_to_use
WHERE MATCH (title,body) AGAINST ('word_to_search')
ORDER BY (rel_title*2)+(rel_body)

Titul tak získá 2krát větší relevanci než tělo.

To je docela užitečné, když potřebujete povolit třídění obsahu, například podle značek (které uživatelé nevidí), protože vám to umožňuje vyladit výsledky ze zákulisí.




  1. Proč je zde potřeba EXECUTE IMMEDIATE?

  2. Hibernate – Existuje způsob, jak spojit 2 sloupce proti 1?

  3. Jak zjistit, zda se index mysql zcela vejde do paměti

  4. PHP:Třídění výsledků MySQL do vícerozměrného pole