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

MySQL Fulltext Boolean Mode-søgning giver for mange resultater

For at forbedre sorteringen af ​​resultaterne i boolesk tilstand kan du bruge følgende:

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;

Brug af den første MATCH() vi får scoren i ikke-boolsk søgetilstand (mere karakteristisk) . den anden MATCH() sikrer, at vi virkelig kun får de resultater tilbage, vi ønsker (med alle 3 ord) .

Så din forespørgsel bliver:

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;

Forhåbentlig; du vil få bedre resultater nu.

Hvis det virker eller ikke virker; lad mig det vide.



  1. Hvad er der med (nolock) i SQL Server?

  2. Hvad er primær nøglebegrænsning i SQL Server-database - SQL Server / T-SQL vejledning del 54

  3. Hvordan skriver man en forespørgsel for at sammenligne den nuværende dato med oprettet_at tidsstempler i databasen?

  4. konverter Unix-epoketidsstempler til JavaScript-datotidsstempler