Jeg tror, du vil bruge Boolean Full-Text Search a>
Hvis du matcher uden operatorer + - mod såsom green red blue alle rækker returneres, hvor en post indeholder mindst ét ord:green eller red eller blue .
IN BOOLEAN MODE og uden operatorer vil hvert matchet ord score 1 . Så hvis der er en post, der matcher to ud af de tre ord, får den 2 .
For at få rækkerne med mindst 2 point:
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
I Naturlig sprogtilstand scoring fungerer helt anderledes. Tror det primært er baseret på BM25 .
På store datasæt boolsk fuldtekstsøgning (ved hjælp af et fuldtekstindeks
) overgår normalt REGEXP eller LIKE langt om matchende ord et eller andet sted i teksten. Ville kun bruge like/regexp til at matche fra initialen såsom REGEXP '^word' eller LIKE 'word%' - hvis et indeks kan bruges.