Bài 3: Tìm kiếm toàn văn bản ngôn ngữ tự nhiên
Last updated
Last updated
Tóm tắt : trong hướng dẫn này, bạn sẽ tìm hiểu về tìm kiếm toàn văn bản ngôn ngữ tự nhiên của MySQL bằng cách sử dụng các hàm MATCH()
và AGAINST()
.
Trong các tìm kiếm toàn văn bản ngôn ngữ tự nhiên, MySQL tìm kiếm các hàng hoặc tài liệu có liên quan đến truy vấn ngôn ngữ tự nhiên của văn bản tự do, ví dụ, Cách sử dụng tìm kiếm toàn văn bản ngôn ngữ tự nhiên của MySQL.
Sự liên quan là một số dấu phẩy động dương. Khi mức độ liên quan bằng 0, điều đó có nghĩa là không có sự tương đồng. MySQL tính toán mức độ liên quan dựa trên các yếu tố khác nhau bao gồm số lượng từ trong tài liệu, số lượng từ duy nhất trong tài liệu, tổng số từ trong bộ sưu tập và số lượng tài liệu (hàng) có chứa một từ cụ thể.
Để thực hiện tìm kiếm toàn văn bản ngôn ngữ tự nhiên, bạn sử dụng MATCH()
và các AGAINST()
chức năng. Các MATCH()
chức năng xác định cột mà bạn muốn tìm kiếm và AGAINST()
chức năng xác định sự biểu hiện tìm kiếm để được sử dụng.
Chúng tôi sẽ sử dụng products
bảng trong cơ sở dữ liệu mẫu cho trình diễn.
Trước tiên, bạn cần kích hoạt tìm kiếm toàn văn bản trong productLine
cột của products
bảng bằng cách sử dụng ALTER TABLE ADD FULLTEXT
câu lệnh:
Thứ hai, bạn có thể tìm kiếm các sản phẩm có dòng sản phẩm chứa thuật ngữ này Classic
. Bạn sử dụng MATCH()
và các AGAINST()
chức năng như truy vấn sau đây:
Ví dụ 1: Tìm kiếm sử dụng MATH() và AGAINST()
Để tìm kiếm sản phẩm có dòng sản phẩm chứa Classic
hoặc Vintage
thuật ngữ, bạn có thể thực hiện truy vấn sau:
Ví dụ 2: Sử dụng thuật ngữ hoặc để tìm kiếm
Các AGAINST()
chức năng sử dụng IN NATURAL LANGUAGE MODE
sửa đổi tìm kiếm mặc định do đó bạn có thể bỏ qua nó trong truy vấn. Có những sửa đổi tìm kiếm khác, ví dụ, IN BOOLEAN MODE
đối với tìm kiếm văn bản Boolean .
Bạn rõ ràng có thể sử dụng công IN NATURAL LANGUAGE MODE
cụ sửa đổi tìm kiếm trong truy vấn của mình như sau:
Theo mặc định, MySQL thực hiện các tìm kiếm theo kiểu không phân biệt chữ hoa chữ thường. Tuy nhiên, bạn có thể hướng dẫn MySQL thực hiện các tìm kiếm phân biệt chữ hoa chữ thường bằng cách sử dụng đối chiếu nhị phân cho các cột được lập chỉ mục.
Một tính năng rất quan trọng của tìm kiếm toàn văn bản là cách MySQL xếp các hàng trong tập kết quả dựa trên mức độ liên quan của chúng. Khi MATCH()
hàm được sử dụng trong mệnh đề WHERE , MySQL sẽ trả về các hàng có liên quan hơn trước.
Ví dụ sau đây cho bạn thấy cách MySQL sắp xếp kết quả được đặt theo mức độ liên quan.
Đầu tiên, bạn kích hoạt tính năng tìm kiếm toàn văn cho productName
cột của products
bảng.
Thứ hai, bạn tìm kiếm các sản phẩm có tên chứa Ford
và / hoặc 1932
sử dụng truy vấn sau:
Hãy xem xét đầu ra:
Các sản phẩm có tên chứa cả hai 1932
và Ford
được trả về trước và sau đó là các sản phẩm có tên chứa Ford
từ khóa duy nhất .
Có một số điểm quan trọng bạn nên nhớ khi sử dụng tìm kiếm toàn văn bản:
Chiều dài tối thiểu của thuật ngữ tìm kiếm định nghĩa trong công cụ tìm kiếm toàn văn MySQL là 4. Điều này có nghĩa rằng nếu bạn tìm kiếm từ khóa có chiều dài nhỏ hơn 4 ví dụ car
, cat
vv, bạn sẽ không nhận được bất kỳ kết quả.
Từ dừng được bỏ qua. MySQL định nghĩa một danh sách các từ dừng trong phân phối mã nguồn MySQL storage/myisam/ft_static.c
Trong hướng dẫn này, bạn đã chỉ cho bạn cách sử dụng MATCH()
và các AGAINST()
chức năng để thực hiện tìm kiếm ngôn ngữ tự nhiên trong MySQL.