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

La ricerca in modalità booleana fulltext di MySQL restituisce troppi risultati

Per migliorare l'ordinamento dei risultati in modalità booleana, puoi utilizzare quanto segue:

SELECT column_names, MATCH (text) AGAINST ('word1 word2 word3')
AS col1 FROM table1
WHERE MATCH (text) AGAINST ('+word1 +word2 +word3' in boolean mode) 
order by col1 desc;

Utilizzando il primo MATCH() otteniamo il punteggio in modalità di ricerca non booleana (più distintiva) . Il secondo MATCH() assicura che otteniamo davvero solo i risultati che desideriamo (con tutte e 3 le parole) .

Quindi la tua richiesta diventerà:

SELECT *, MATCH (artist, title) AGAINST ('paul van dyk')
    AS score FROM tracks
    WHERE MATCH (artist, title) 
    AGAINST ('+paul +van +dyk' in boolean mode) 
    order by score desc;

Auspicabilmente; ora otterrai risultati migliori.

Se funziona o non funziona; per favore fatemi sapere.