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

MySQL Full Text Search Mystery

Từ Tài liệu MySQL

  • + Dấu cộng ở đầu cho biết từ này phải có ở mỗi hàng được trả về.

  • * Dấu hoa thị đóng vai trò là toán tử tổ hợp (hoặc ký tự đại diện). Không giống như các toán tử khác, nó nên được thêm vào từ để giảm bớt. Các từ khớp nếu chúng bắt đầu bằng từ đứng trước toán tử *.

    Nếu một từ được chỉ định bằng toán tử hàm, nó không bị bắt đầu từ truy vấn boolean, nếu nó quá ngắn (như được xác định từ cài đặt ft_min_word_len) hoặc từ dừng. Điều này xảy ra bởi vì từ khóa không được xem là quá ngắn hoặc sai từ ngữ, mà là một tiền tố phải xuất hiện trong tài liệu dưới dạng một từ bắt đầu bằng tiền tố .

Trong ngữ cảnh:

TRẬN ĐẤU (...) LẠI (...)

MATCH (name) AGAINST ('+ski*' IN BOOLEAN MODE) có nghĩa là bạn đang tìm kiếm các hàng có một từ trong name cột phải chứa ski phải bắt đầu với từ ski .

Từ bộ bạn đã đăng, Dartmouth Skiwayname duy nhất phù hợp với các yêu cầu này:nó chứa từ ski , và có tiền tố là từ ski .

name khác , mặc dù chúng phù hợp với quy tắc đầu tiên: phải chứa ski , chúng không có tiền tố ski , như được quy định trong quy tắc của bạn. Hàng được trả về bởi tìm kiếm boolean của bạn là hàng duy nhất có name cột chứa một từ vừa chứa ski và là một từ có tiền tố bởi ski .

Theo đề xuất của ajreal, hãy thử giảm ft_min_len_word_setting trong my.cnf . Tìm kiếm của bạn có thể không đưa ra kết quả như bạn mong đợi do cài đặt mặc định. Hãy thử giảm nó xuống còn 3.

Cột WHERE LIKE% text%

WHERE name LIKE "%ski%" tìm kiếm các hàng có name các cột chứa ski , bất kể từ xuất hiện ở đâu.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để kiểm tra xem một biến có phải là NULL hay không, sau đó đặt nó bằng một thủ tục được lưu trữ trong MySQL?

  2. Làm cách nào để chọn (các) cột theo vị trí số của chúng trong bảng?

  3. Mysql, lưu trữ nhiều giá trị trong một cột từ một bảng khác

  4. MySQL nối tất cả các cột

  5. Trộn một bảng trong MySQL với một thủ tục được lưu trữ