sql >> Databasteknik >  >> RDS >> Mysql

mysql - fulltext index - vad är naturligt språkläge

MySQL:s Natural Language Full-Text Searches syftar till att matcha sökfrågor mot en korpus för att hitta de mest relevanta matchningarna. Så anta att vi har en artikel som innehåller "I love pie" och vi har dokument d1, d2, d3 (databasen i ditt fall). Dokument 1 och 2 handlar om idrott respektive religion och dokument 3 handlar om mat. Din fråga,

Returnerar d3, och sedan d2, d1 (slumpmässig ordning på d2,d1 beroende på vilken som är mer lika med artikeln) eftersom d3 matchar artikeln bäst.

Den underliggande algoritmen som MYSQL använder är förmodligen tf-idf-algoritmen, där tf står för termfrekvens och idf för invers dokumentfrekvens. tf är som det står, bara antalet gånger ett ord w i artikeln förekommer i ett dokument. idf baseras på hur många dokument ordet förekommer. Så ord som förekommer i många dokument bidrar inte till att avgöra det mest representativa dokumentet. Produkten av tf*idf ger en poäng, ju högre, desto bättre representerar ordet ett dokument. Så 'paj' kommer bara att förekomma i dokument d3 och kommer alltså att ha ett högt tf och ett högt idf (eftersom det är det omvända). Medan 'the' kommer att ha ett högt tf men ett lågt idf som kommer att ta bort tf och ge ett lågt betyg.

MYSQL Natural Language Mode kommer också med en uppsättning stoppord (the, a, some etc) och tar bort ord som är mindre än 4 bokstäver. Vilket kan ses i länken du angav.




  1. ORA-01002:hämta ut ur sekvens C++

  2. Hur ringer man ett Oracle-databas sekvensnummer med MyBatis?

  3. MYSQL raderar alla resultat som har count(*)=1

  4. Är det möjligt att använda GROUP BY med bindningsvariabler?