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

Cách tìm kiếm một cụm từ bên trong bảng SQL

Vấn đề sai chính tả rất khó, nếu không muốn nói là không thể, để giải quyết tốt trong MySQL thuần túy.

FULLTEXT nhiều cột tìm kiếm không quá tệ.

Truy vấn của bạn sẽ trông giống như thế này ...

 SELECT column, column
   FROM table
  WHERE MATCH(Company, FirstName, LastName, whatever, whatever) 
      AGAINST('search terms' IN NATURAL LANGUAGE MODE)

Nó sẽ tạo ra một loạt các kết quả, được sắp xếp theo thứ mà MySQL đoán là có khả năng bị tấn công đầu tiên nhất. Các phỏng đoán của MySQL không tuyệt vời, nhưng chúng thường phù hợp.

Bạn sẽ cần FULLTEXT chỉ mục khớp với danh sách các cột trong MATCH() của bạn mệnh đề. Tạo chỉ mục đó trông như thế này.

ALTER TABLE book 
ADD FULLTEXT INDEX Fulltext_search_index_1 
    (Company, FirstName, LastName, whatever, whatever);

Mặc dù có nhận xét trong câu hỏi của bạn, bạn chỉ cần một chỉ mục cho nhóm cột mà bạn sẽ tìm kiếm.

20K hàng sẽ không phải là gánh nặng lớn đối với bất kỳ phần cứng máy chủ cổ điển nào gần đây.

Viết sai chính tả:Bạn có thể thử SOUNDEX() , nhưng đó là một thuật toán đầu thế kỷ 20 do Hệ thống Bell thiết kế để tra cứu tên của các dân tộc bằng tiếng Anh Mỹ. Nó được thiết kế để nhận được nhiều lượt truy cập dương tính giả và nó thực sự tồi tệ hơn một xô đá.

Nếu bạn thực sự cần sửa lỗi chính tả, bạn có thể cần điều tra Sphinx.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. cột cập nhật mysql với giá trị từ bảng khác

  2. Chỉ mục tổng hợp MySQL và toán tử GIỮA

  3. Sử dụng PyMySQL, tôi không thể kết nối với RDS

  4. Hiển thị bản ghi cũ hơn 3 tháng trong sql

  5. Cách sử dụng nhóm kết nối với java, MySQL và Tomcat 6