Мисля, че искате да използвате Boolean Full-Text Search
Ако отговаряте без оператори + - срещу като green red blue се връщат всички редове, където записът съдържа поне една дума:green или red или blue .
IN BOOLEAN MODE и без оператори всяка съвпадаща дума ще получи 1 . Така че, ако има запис, отговарящ на две от трите думи, той ще получи 2 .
За да получите редовете с поне 2 точки:
SELECT *,
MATCH (`TextToCheckIn`) AGAINST ('green red blue' IN BOOLEAN MODE) `score`
FROM `my_tab` WHERE
MATCH (`TextToCheckIn`) AGAINST ('green red blue' IN BOOLEAN MODE)
HAVING `score` >= 2
ORDER BY `score` DESC
В Режим на естествен език точкуването работи съвсем различно. Мислете, че е основно базиран на BM25 .
При големи набори от данни булево търсене в пълен текст (с помощта на пълнотекстов индекс
) обикновено превъзхожда REGEXP или LIKE далеч, ако съвпадат думи някъде в текста. Ще използва само like/regexp за съвпадение от инициала, като REGEXP '^word' или LIKE 'word%' - ако може да се използва индекс.