sql >> Databasteknik >  >> RDS >> Mysql

MySQL:Varför är poängen alltid 1 i fulltext?

BOOLEAN MODE stöder endast binära svar, betyder 0 eller 1 oavsett om söksträngen visas i kolumnen eller inte. För att få ett decimalresultat för att beräkna en vikt måste du använda matchning-mot på indexerade kolumner.

Du kan använda det booleska läget på detta sätt för att få din vikt antingen:

SELECT *, ((1.3 * (MATCH(column1) AGAINST ('query' IN BOOLEAN MODE))) +
(0.6 * (MATCH(column2) AGAINST ('query' IN BOOLEAN MODE)))) AS relevance
FROM table WHERE ( MATCH(column1,column2) AGAINST
('query' IN BOOLEAN MODE) ) ORDER BY relevance DESC

Fördelen med det booleska läget är att du kan använda det på icke-indexerade kolumner men endast med 0,1 som resultat, det icke-booleska läget returnerar ett decimalresultat men kan endast tillämpas på indexerade kolumner... se även här .



  1. Tre bord går med andra än INNER JOIN

  2. PostgreSQL GROUP_CONCAT() Ekvivalent

  3. SQL Server FOR XML Path gör repeterande noder

  4. Det går inte att skapa tabell (errnr:150) på FOREIGN KEY