Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

php / mysql. Có hàm mysql để phát hiện xem có ít nhất 2 từ nhất định tồn tại trong ít nhất một trường hàng mysql không

Tôi nghĩ bạn muốn sử dụng Tìm kiếm toàn văn bản Boolean

Nếu bạn khớp không có toán tử + - chống lại chẳng hạn như green red blue tất cả các hàng được trả về, trong đó bản ghi chứa ít nhất một từ:green hoặc red hoặc blue .

IN BOOLEAN MODE và không có toán tử, mỗi từ phù hợp sẽ đạt điểm 1 . Vì vậy, nếu có một bản ghi khớp với hai trong số ba từ, nó sẽ đạt điểm 2 .

Để nhận các hàng có ít nhất 2 điểm:

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

Trong chế độ Ngôn ngữ tự nhiên tính điểm hoạt động hoàn toàn khác nhau. Hãy nghĩ rằng nó chủ yếu dựa trên BM25 .

Trên bộ dữ liệu lớn, tìm kiếm toàn văn bản boolean (sử dụng chỉ mục văn bản đầy đủ ) thường hoạt động tốt hơn REGEXP hoặc LIKE cho đến nay nếu các từ phù hợp với đâu đó trong văn bản. Chỉ sử dụng like / regexp để đối sánh từ đầu chẳng hạn như REGEXP '^word' hoặc LIKE 'word%' - nếu một chỉ mục có thể được sử dụng.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kết quả này chỉ là tập hợp kết quả chuyển tiếp, việc gọi rewind () sau khi chuyển tiếp không được hỗ trợ - Zend

  2. Sự khác biệt giữa MyISAM và InnoDB là gì?

  3. Sách hướng dẫn cài đặt MySQL Ansible Idempotent

  4. Chuyển đổi giây thành ngày, giờ, phút, giây (MySQL)

  5. Không thể chọn 'OK' trong mysql-apt-config [Ubuntu 14.04]