CHẾ ĐỘ BOOLEAN MySQL




Tôi có truy vấn giống như thế này.

SELECT DISTINCT id, MATCH[column] AGAINST['%s' IN BOOLEAN MODE] AS score
FROM table
WHERE
MATCH[column] AGAINST ['%s' IN BOOLEAN MODE]
ORDER BY score DESC

Tôi thực sự không SỬ DỤNG "điểm số" trong kết quả, tuy nhiên, nó chỉ ở đó để sắp xếp.

Nhưng khi nhìn lại, tôi thực sự không chắc tại sao mình lại sử dụng "IN BOOLEAN MODE". Tôi nhận ra rằng tôi có thể làm điều này và nhận được kết quả tương tự [nó tự động sắp xếp theo "mức độ liên quan"].

SELECT DISTINCT id
FROM table
WHERE
MATCH[column] AGAINST ['%s' IN NATURAL LANGUAGE MODE]

Tôi đã đọc tài liệu về cả hai nhưng tôi không thực sự chắc chắn về sự khác biệt giữa hai chế độ.

Chế độ ngôn ngữ tự nhiên.
[dev. mysql. com. ]

Chế độ Boolean.
[dev. mysql. com. ]

Tôi không sử dụng InnoDB.

Tôi biết rằng người dùng có thể sử dụng + và - trong Chế độ Boolean, cũng như các toán tử khác, nhưng tôi không thể mong đợi người dùng biết điều đó. Và tôi không thực sự chắc chắn rằng họ sẽ vượt qua được mysqli_real_escape_string[], dù sao đi nữa. Tôi đoán rằng tôi có thể thiết lập một biểu mẫu với người dùng để chọn các tùy chọn rồi tự cắm chúng vào?

Tôi cũng không biết "ngưỡng 50%" mà nó đề cập là gì.

Các bạn và các bạn nghĩ sao, cái nào tốt hơn cho một biểu mẫu tìm kiếm đơn giản mà người dùng gửi từ PHP?

Chào mừng bạn đến với phần 3 của loạt bài này về lập chỉ mục toàn văn và tìm kiếm trong MySQL. Trong , chúng ta đã thấy cách MySQL cung cấp khả năng tìm kiếm toàn văn thông qua lập chỉ mục FULLTEXT cùng với ba loại tìm kiếm toàn văn khác biệt sau đây

  • Tìm kiếm toàn văn bằng ngôn ngữ tự nhiên
  • Tìm kiếm toàn văn Boolean
  • Tìm kiếm mở rộng truy vấn

Trong , tôi đã mô tả cách thực hiện các tìm kiếm toàn văn bằng Ngôn ngữ tự nhiên trong. Blog hôm nay tiếp nối phần 2 đã dừng lại và đề cập đến kiểu tìm kiếm toàn văn tiếp theo. Tìm kiếm toàn văn Boolean

Chế độ Boolean hướng đến từ nhiều hơn so với tìm kiếm ngôn ngữ tự nhiên. Như vậy, tìm kiếm toàn văn Boolean hỗ trợ các truy vấn rất phức tạp bao gồm các toán tử Boolean. Đối với người dùng có kinh nghiệm, tìm kiếm toàn văn bản Boolean cung cấp phương tiện để thực hiện một số tìm kiếm nâng cao

Đây là cách nó hoạt động

Để thực hiện tìm kiếm toàn văn ở chế độ Boolean, bạn bao gồm công cụ sửa đổi IN BOOLEAN MODE trong biểu thức CHỐNG LẠI. Nhớ lại rằng, trong phần trước, chúng tôi đã thêm chỉ mục toàn văn vào bảng phim để chúng tôi có thể thực hiện tìm kiếm toàn văn trên trường mô tả. Đây là một ví dụ trả về tất cả các phim có phần mô tả chứa từ "Quản gia"

Tìm kiếm trên đủ đơn giản để không yêu cầu tìm kiếm toàn văn. Sẽ thú vị hơn rất nhiều khi bạn bắt đầu thực hiện những việc như loại trừ các kết quả khớp có chứa các từ khóa nhất định. Chẳng hạn, chúng ta có thể tìm những bộ phim có phần mô tả chứa từ "Quản gia" không phải là phim tài liệu bằng cách đặt trước từ "Phim tài liệu" bằng toán tử Boolean loại trừ [ - ]

Điều đó trả về 61 hàng, so với 73 cho truy vấn trước đó của chúng tôi

Chúng tôi cũng có thể tìm kiếm các hàng có mô tả khớp với nhiều từ bằng cách sử dụng toán tử bao gồm [ + ]. Tiền tố một từ với nó cho công cụ tìm kiếm chỉ khớp với các hàng có chứa từ đó. Điều đó trở thành một điểm khác biệt quan trọng khi có nhiều từ, chẳng hạn như "+Nữ hầu bàn thợ săn quản gia". Trong trường hợp đó, tất cả các hàng có mô tả chứa từ "Quản gia" và một trong hai từ còn lại sẽ được trả về

Đối chiếu các kết quả trên với kết quả do truy vấn tạo ra với cả hai từ "Quản gia" và "Thợ săn" có tiền tố là toán tử bao gồm [+]

Bây giờ, các hàng phù hợp phải chứa cả "Quản gia" và "Thợ săn" nhưng không nhất thiết phải có "Cô hầu bàn"

Các kết quả tìm kiếm toàn văn xếp hạng cho InnoDB khác với MyISAM vì tìm kiếm toàn văn của InnoDB được mô hình hóa trên công cụ tìm kiếm toàn văn Sphinx và các thuật toán được sử dụng dựa trên các thuật toán xếp hạng BM25 và TF-IDF

Một số toán tử ảnh hưởng đến xếp hạng để chúng tôi có thể tinh chỉnh thêm kết quả. Ví dụ: chúng ta có thể tìm kiếm các hàng có chứa từ "Quản gia" nhưng xếp hạng hàng đó thấp hơn nếu nó chứa các từ "Thợ săn" hoặc "Cô hầu bàn"

Trong blog hôm nay, chúng ta đã học cách thực hiện tìm kiếm toàn văn Boolean bằng cách sử dụng. Quan tâm đến việc tìm hiểu thêm về Navicat cho MySQL?

Làm cách nào để chèn boolean trong MySQL?

Bạn có thể sử dụng tinyint[1] hoặc bool hoặc boolean . Tất cả đều đồng nghĩa. Nếu bạn sử dụng kiểu dữ liệu bool hoặc boolean, thì nó sẽ thay đổi bên trong thành tinyint[1].

MySQL có hỗ trợ kiểu dữ liệu Boolean không?

Kiểu dữ liệu này chỉ có hai giá trị. MySQL không cung cấp kiểu dữ liệu Boolean tích hợp sẵn . Nó sử dụng TINYINT[1] thay vì hoạt động tương tự. Để thuận tiện, MySQL cung cấp các từ đồng nghĩa của TINYINT[1] là BOOLEAN hoặc BOOL, để bạn có thể sử dụng chúng cho đơn giản hóa.

Làm cách nào để đặt giá trị boolean mặc định trong MySQL?

Bạn phải chỉ định 0 [có nghĩa là sai] hoặc 1 [có nghĩa là đúng] làm giá trị mặc định . Đây là một ví dụ. tạo bảng mytable [ mybool boolean not null default 0 ];

Cách tìm kiếm đầy đủ

Để sử dụng tìm kiếm toàn văn bản trong MySQL, bạn cần phải sử dụng các chỉ mục toàn văn bản và hàm MATCH[] . Chỉ mục toàn văn là FULLTEXT. Mysql hỗ trợ các chỉ mục toàn văn trên các bảng MyISAM. Hỗ trợ InnoDB đã được thêm vào kể từ phiên bản 5. 6.

Chủ Đề