Mysql
 sql >> Database >  >> RDS >> Mysql

MySQL:perché il punteggio è sempre 1 in Fulltext?

La MODALITÀ BOOLEANA supporta solo risposte binarie, significa 0 o 1 indipendentemente dal fatto che la stringa di ricerca appaia o meno nella colonna. Per ottenere un risultato decimale per calcolare un peso, devi utilizzare la corrispondenza contrapposta su colonne indicizzate.

Puoi utilizzare la modalità booleana in questo modo per ottenere il tuo peso:

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

Il vantaggio della modalità booleana è che puoi usarla su colonne non indicizzate ma solo con 0,1 come risultato, la modalità non booleana restituisce un risultato decimale ma può essere applicata solo su colonne indicizzate... vedi anche qui .