Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

php/mysql. Apakah ada fungsi mysql untuk mendeteksi jika setidaknya ada 2 kata tertentu di setidaknya satu bidang baris mysql?

Saya rasa Anda ingin menggunakan Penelusuran Teks Lengkap Boolean

Jika Anda mencocokkan tanpa operator + - terhadap seperti green red blue semua baris dikembalikan, di mana catatan berisi setidaknya satu kata:green atau red atau blue .

IN BOOLEAN MODE dan tanpa operator setiap kata yang cocok akan mendapat skor 1 . Jadi jika ada catatan yang cocok dengan dua dari tiga kata itu akan mencetak 2 .

Untuk mendapatkan baris dengan setidaknya 2 skor:

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

Dalam mode Bahasa Alami penilaian bekerja sama sekali berbeda. Pikirkan itu terutama didasarkan pada BM25 .

Pada kumpulan data besar, penelusuran teks lengkap boolean (menggunakan indeks teks lengkap ) biasanya mengungguli REGEXP atau LIKE sejauh ini jika mencocokkan kata di suatu tempat dalam teks. Hanya akan menggunakan suka/regexp untuk pencocokan dari inisial seperti REGEXP '^word' atau LIKE 'word%' - jika indeks dapat digunakan.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tidak ada operasi yang diizinkan setelah koneksi ditutup MYSQL

  2. Batasan kunci asing gagal

  3. String karakter UTF8 MySQL tidak valid saat mengimpor tabel csv

  4. Campuran ilegal dari collation Kesalahan MySQL

  5. Mengambil Baris Tunggal dari Tabel Gabung