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

php/mysql. Er der mysql-funktion til at opdage, om der findes mindst 2 bestemte ord i mindst ét ​​mysql-rækkefelt

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.



  1. Er det muligt at sende tabelnavn som en parameter i Oracle?

  2. Forståelse af beskidt læseproblem med SQL Server

  3. Hvordan redigerer man hurtigt værdier i tabel i SQL Server Management Studio?

  4. 2 måder at returnere rækker, der kun indeholder ikke-alfanumeriske tegn i MariaDB