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

Cách thực hiện tìm kiếm toàn văn bản mysql nhiều cột trong đó các từ một phần được so khớp

Trong chế độ boolean, yêu cầu các chuỗi phải có mặt (thay vì chỉ cho điểm cao hơn), được thực hiện với + . đối sánh tiền tố được thực hiện với một * kết thúc . Đây có vẻ là những gì bạn muốn, vì vậy hãy tìm kiếm:

+John* +S*
+John* +Smith*
+Smith* +J*
+Jo* +S*

Lưu ý rằng chỉ mục Toàn văn không thể giúp bạn tìm kiếm 'mọi nơi trong một từ'. vì vậy một cái gì đó giống như *mith* nhất định không thành công:chúng có nghĩa là khớp với ký tự 1 trong một chỉ mục.

Nếu bạn cũng muốn sắp xếp chúng theo giá trị đối sánh và chẳng hạn, cần có John Smith trước đây Johnny Smithson , bạn sẽ làm điều này:

 SELECT * FROM user 
 WHERE MATCH(..fields..) AGAINST ('match' IN BOOLEAN MODE)
 ORDER BY MATCH(..fields..) AGAINST ('match' IN BOOLEAN MODE) DESC;

Cái mà bạn nhìn thấy sẽ chẳng đưa bạn đến đâu trừ khi bạn thêm tất cả các từ> =ft_min_word_len một lần nữa riêng biệt:

+John* +S* John
+John* +Smith* John Smith
+Smith* +J* Smith
+Jo* +S*

Đối với cái cuối cùng, cả hai đều là <4 ký tự mặc định, vì vậy chúng tôi không thể thêm thông số sắp xếp cho thông số đó trong mysql mặc định, nhưng bạn có thể đặt ft_min_world_len khác nhau được mong muố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. Spring-Boot, Không thể lưu chuỗi unicode trong MySql bằng Spring-data JPA

  2. LỖI 2002 (HY000):Không thể kết nối với máy chủ MySQL cục bộ thông qua socket '/var/lib/mysql/mysql.sock'

  3. Xóa một trường Số điện thoại trong mySql

  4. Làm thế nào để gọi thủ tục lưu trữ MySQL trong khởi động mùa xuân bằng cách sử dụng hibernate?

  5. Cách so sánh giá trị rỗng trong MySQL