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

Giới hạn lập chỉ mục toàn văn Mysql?

Chắc chắn là không!

Bất kỳ cụm từ tìm kiếm nào bao gồm hoàn toàn từ các từ bị chặn sẽ âm thầm không thành công. Các từ có thể bị chặn do giới hạn độ dài tối thiểu / tối đa và / hoặc tệp từ dừng.

Tôi thấy tệp từ dừng mặc định quá hung hãn, nó đang cản trở nhiều tìm kiếm hợp lệ. Ngoài ra, độ dài tối thiểu mặc định là 4 rất thường xuyên được sử dụng cho các từ viết tắt mà mọi người có thể muốn tìm kiếm. Tôi đã giảm ft_min_word_len xuống 3 và xóa hoàn toàn danh sách dừng (ft_stopword_file =''). Tài liệu: http://dev.mysql.com /doc/refman/5.1/en/fulltext-fine-tuning.html

Bạn cũng có thể kiểm tra truy vấn tìm kiếm để xem liệu nó có chỉ chứa các từ <4 chữ cái hay không và quay lại tìm kiếm LIKE trong trường hợp đó. Không có cách nào dễ dàng như vậy để vượt qua danh sách dừng ở cấp ứng dụng.

Việc lựa chọn 'ký tự từ' có thể không đáp ứng nhu cầu của bạn và rất khó để thay đổi. Ví dụ:tìm kiếm "Terry" sẽ không khớp với "Terry's". Nói chung, không có bất kỳ loại thân cây nào hỗ trợ, vì vậy “bánh quy” cũng sẽ không khớp với “bánh quy”.

Cuối cùng, như cg đã đề cập, không có hỗ trợ cho InnoDB. Trong thời đại ngày nay, bạn không muốn đặt tất cả dữ liệu của mình vào một bảng MyISAM.

Nếu bạn có bộ nhớ dự phòng, những gì bạn có thể làm là đặt phiên bản chính, chuẩn của dữ liệu vào bảng InnoDB, sau đó tạo một bảng MyISAM riêng biệt có chứa bản sao của nội dung freetext, hoàn toàn để sử dụng như searchbait. Bạn phải cập nhật cả hai bảng khi có thay đổi, nhưng nếu bảng MyISAM mất tính toàn vẹn thì ít nhất bạn chỉ mất khả năng tìm kiếm trên các hàng liên quan, thay vì thu thập dữ liệu trực tiếp thực và nhận lỗi ứng dụng.

Sau đó, bạn có thể, nếu bạn có chu kỳ rảnh rỗi, thực hiện xử lý văn bản của riêng bạn trên searchbait và truy vấn các từ để giải quyết một số hạn chế ở trên. Ví dụ:bạn có thể thoát các ký tự mà bạn muốn trở thành ký tự từ, xóa các ký tự bạn không muốn trở thành ký tự từ và thực hiện việc ghép gốc tiếng Anh thủ công đơn giản.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Trình tạo truy vấn hùng hồn Laravel - Tính tổng với nhóm trên mối quan hệ

  2. Python Mysql, các lệnh không đồng bộ; bạn không thể chạy lệnh này bây giờ

  3. Hiệu suất của mysql GIỮA .. là gì?

  4. Đóng các kết nối đang hoạt động bằng RMySQL

  5. Truy vấn MySQL PHP không chèn