Mysql
 sql >> база данни >  >> RDS >> Mysql

php/mysql. Има ли mysql функция, която да открие дали съществуват поне 2 определени думи в поне едно поле-ред на mysql

Мисля, че искате да използвате 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%' - ако може да се използва индекс.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Липсващ резултат в задължителните полета

  2. Как работи функцията LPAD() в MySQL

  3. Как да съхранявате многоезично текстово поле в mysql с php?

  4. Предупреждение:mysql_num_rows() очаква параметър 1 да бъде ресурс, булев, даден в /home/folder/public_html/folder/folder/login.php на ред 18

  5. Вмъкването в mySQL на JSON кодирана стойност със специални знаци е неуспешна