Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL:Warum ist die Punktzahl im Volltext immer 1?

Der BOOLEAN MODE unterstützt nur binäre Antworten, also 0 oder 1, unabhängig davon, ob der Suchstring in der Spalte erscheint oder nicht. Um ein Dezimalergebnis zur Berechnung einer Gewichtung zu erhalten, müssen Sie Match-Again für indizierte Spalten verwenden.

Sie können den booleschen Modus auf folgende Weise verwenden, um Ihr Gewicht zu erhalten:

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

Der Vorteil des booleschen Modus ist, dass Sie ihn auf nicht indizierte Spalten anwenden können, aber nur mit 0,1 als Ergebnis, der nicht boolesche Modus gibt ein dezimales Ergebnis zurück, kann aber nur auf indizierte Spalten angewendet werden ... siehe auch hier .