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

làm thế nào để sử dụng Fuzzy tra cứu để tìm câu trong SQL?

Đây không phải là một câu hỏi đơn giản. Đặt cược tốt nhất của bạn là sử dụng một số loại tìm kiếm toàn văn bản . Tìm kiếm toàn văn bản có thể được định cấu hình để có các từ dừng (các từ bị loại bỏ khỏi tìm kiếm - như từ the ) và cũng có thể có giới hạn độ dài từ tối thiểu (các từ có độ dài ít hơn một số ký tự nhất định cũng bị loại bỏ khỏi tìm kiếm.

Tuy nhiên, nếu bạn chỉ sử dụng

SELECT * FROM testtable
WHERE MATCH (sentence)
AGAINST ('ISBN number on site');

Sau đó, MySQL sẽ trả về không chỉ bản ghi với giá trị bạn đang tìm kiếm mà còn trả về các bản ghi chỉ có một số từ và theo thứ tự khác nhau. Cái bạn đã hiển thị có thể sẽ là một trong những cái xếp hạng cao nhất, nhưng không có gì đảm bảo rằng nó sẽ là cái được xếp hạng cao nhất.

Bạn có thể muốn sử dụng Tìm kiếm toàn văn bản Boolean và thêm + cho mọi từ tìm kiếm để buộc MySQL chỉ trả lại những bản ghi có tất cả các từ tìm kiếm:

SELECT * FROM testtable
WHERE MATCH (sentence)
AGAINST ('+ISBN +number +on +site' IN BOOLEAN MODE);

Nhưng, on phải là một từ dừng (nằm trong danh sách từ khóa mặc định) hoặc phải ngắn hơn với độ dài từ tối thiểu, do đó nên được bỏ qua khỏi biểu thức tìm kiếm (bạn sẽ không nhận lại bất kỳ kết quả nào):

SELECT * FROM testtable
WHERE MATCH (sentence)
AGAINST ('+ISBN +number +site' IN BOOLEAN MODE);

Tôi biết rằng điều này yêu cầu thay đổi biểu thức tìm kiếm, tuy nhiên, điều này sẽ giúp bạn có được kết quả tốt nhất bằng cách sử dụng chức năng tích hợp của MySQL.

Giải pháp thay thế là sử dụng các công cụ tìm kiếm toàn văn bản khác, chẳng hạn như sphinx để thực hiện tìm kiếm cho bạ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. cách tạo trình kích hoạt cập nhật để Tăng / Giảm 1 số đến tổng số phiếu bầu

  2. Cái nào nên thực hiện nhiệm vụ chủ động khi khôi phục, Ứng dụng hoặc DB?

  3. MySQL:Cột chứa từ từ danh sách từ

  4. Nhận hàng có giá trị cao nhất hoặc thấp nhất từ ​​GROUP BY

  5. PHP MYSQL - Điền các hàng được đánh số trong bảng HTML dựa trên việc chúng có khớp với số hàng hay không