sql >> Databasteknik >  >> RDS >> Mysql

Upptäcker spammare med MySQL

Fulltextmatchning

Du kan titta på att implementera något som liknar MATCH exempel här :

mysql> SELECT id, body, MATCH (title,body) AGAINST
    -> ('Security implications of running MySQL as root') AS score
    -> FROM articles WHERE MATCH (title,body) AGAINST
    -> ('Security implications of running MySQL as root');
+----+-------------------------------------+-----------------+
| id | body                                | score           |
+----+-------------------------------------+-----------------+
|  4 | 1. Never run mysqld as root. 2. ... | 1.5219271183014 |
|  6 | When configured properly, MySQL ... | 1.3114095926285 |
+----+-------------------------------------+-----------------+
2 rows in set (0.00 sec)

Så för ditt exempel, kanske:

SELECT id, MATCH (content) AGAINST ('your string') AS score
FROM messages 
WHERE MATCH (content) AGAINST ('your string')
    AND score > 1;

Observera att för att använda dessa funktioner ditt content kolumnen måste vara en FULLTEXT index.

Vad är score i det här exemplet?

Det är ett relevance value . Den beräknas genom processen som beskrivs nedan:

Från dokumentationen sida.




  1. Går igenom mysql-databasen

  2. Kapslad loop i mysql lagrad procedur

  3. Hur man avgör om talet är flytande eller heltal

  4. Hur kan jag få skillnaden mellan de individuella maxvärdena för olika dagar?