VIEW
STORED PROCEDURE
INDEX
FULL TEXT SEARCH
TRIGGER
TIPS
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
Dự án mới của mình là gamehow.net, mời anh em ghé thăm và góp ý ạ.

Query Expansion Full Text Search trong MySQL

Trong bài này ta sẽ học một kiến thức rất hay đó là cách mở rộng truy vấn tìm kiếm trong Full Text Search MySQL, dựa trên phản hồi liên quan tự nhiên.

* Lưu ý: Để tiện cho việc viết bài thì cụm từ mở rộng truy vấn mình sẽ gọi là query expansion.

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

1. Hiểu hơn về query expansion trong Full Text Search

Thông thường, người dùng tìm kiếm thông tin dựa trên kiến ​​thức của họ. Họ sử dụng kinh nghiệm của mình để đưa ra các từ khóa để tìm kiếm thông tin và đôi khi, những từ khóa này quá ngắn.

Để giúp người dùng tìm thông tin dựa trên những từ khóa quá ngắn này, công cụ tìm kiếm toàn văn bản MySQL giới thiệu một khái niệm gọi là mở rộng truy vấn.

Việc mở rộng truy vấn được sử dụng để mở rộng kết quả tìm kiếm của các full text search dựa trên phản hồi liên quan (hoặc mở rộng truy vấn mù). Về mặt kỹ thuật, MySQL full text search thực hiện các bước sau khi mở rộng truy vấn được sử dụng:

  • Đầu tiên, tìm kiếm tất cả các hàng khớp với truy vấn tìm kiếm.
  • Thứ hai, tìm các từ có liên quan trong tất cả các hàng từ kết quả tìm kiếm.
  • Thứ ba, tìm kiếm lại dựa trên các từ có liên quan thay vì các từ khóa ban đầu được chỉ định bởi người dùng.

Bạn có thể sử dụng mở rộng truy vấn khi kết quả tìm kiếm quá ít. Bạn thực hiện lại các tìm kiếm với việc mở rộng truy vấn nhằm cung cấp cho người dùng nhiều thông tin liên quan và phù hợp với những gì họ đang tìm kiếm.

Để sử dụng query expansion thì ta sử dụng từ khóa WITH QUERY EXPANSION đặt trong hàm AGAINST (). Dưới đây là minh họa cú pháp của truy vấn bằng cách sử dụng WITH QUERY EXPANSION.

SELECT column1, column2
FROM table1
WHERE MATCH(column1,column2) 
      AGAINST('keyword',WITH QUERY EXPANSION);

2. Ví dụ query expansion trong MySQL

Hãy xem một vài ví dụ sẽ giúp bạn hiểu rõ hơn là đống lý thuyết cồng kềnh phía trên.

Trong ví dụ này chúng ta sẽ sử dụng cột ProductName của bảng products để thử nghiệm tính năng mở rộng truy vấn.

products png

Bước 1: Hãy tạo một full text search vào cột productName.

ALTER TABLE products 
ADD FULLTEXT(productName);

Bước 2: Tìm kiếm với từ khóa 1992, bước này chưa sử dụng query expansion.

SELECT 
    productName
FROM
    products
WHERE
    MATCH (productName) 
    AGAINST ('1992' );

Bạn sẽ nhận được kết quả như sau:

MySQL Query Expansion example png

Như bạn thấy trong kết quả trả về có 2 record bởi vì chỉ có hai dòng này là xuất hiện từ 1992.

Bước 3: Hãy thử sử dụng Query Expansion xem thế nào nhé.

SELECT 
	productName 
FROM 
	products 
WHERE 
	MATCH(productName) 
    AGAINST('1992' WITH QUERY EXPANSION);

MySQL Query Expansion example 2 png

Kết quả trả về nhiều hơn 2 hàng bởi vì ta sử dụng mở rộng tìm kiếm. Hai hàng đầu tiên là tương quan giống nhất nên được xếp lên đầu, các hàng khác chính là phần mở rộng bởi nó chứa những từ nằm trong hai hàng đầu tiên. Ví dụ từ "Ferrari".

Lưu ý rằng kết quả trả về của việc mở rộng tìm kiếm đôi khi có thể không như người dùng mong đợi, nhưng cũng nên khuyến khích sử dụng bởi đó là giải pháp giúp giữ chân khách hàng trên website của mình.

Như vậy là mình đã hướng dẫn xong cách sử dụng mở rộng tìm kiếm WITH QUERY EXPANSION trong MySQL. Đây là một phần kiến thức rất hay và nếu áp dụng vào các ứng dụng website thực tế thì sẽ rất hữu ích.

Cùng chuyên mục:

Hàm ENCRYPT trong MySQL

Hàm ENCRYPT trong MySQL

Cách sử dụng ENCRYPT trong MySQL

Hàm MD5 trong MySQL

Hàm MD5 trong MySQL

Cách sử dụng MD5 trong MySQL

Hàm OLD_PASSWORD trong MySQL

Hàm OLD_PASSWORD trong MySQL

Cách sử dụng OLD_PASSWORD trong MySQL

Hàm PASSWORD trong MySQL

Hàm PASSWORD trong MySQL

Cách sử dụng PASSWORD trong MySQL

Hàm ASCII trong MySQL

Hàm ASCII trong MySQL

Cách sử dụng ASCII trong MySQL

Hàm CHAR_LENGTH trong MySQL

Hàm CHAR_LENGTH trong MySQL

Cách sử dụng CHAR_LENGTH trong MySQL

Hàm CHARACTER_LENGTH trong MySQL

Hàm CHARACTER_LENGTH trong MySQL

Cách sử dụng CHARACTER_LENGTH trong MySQL

Hàm CONCAT trong MySQL

Hàm CONCAT trong MySQL

Cách sử dụng CONCAT trong MySQL

Hàm CONCAT_WS trong MySQL

Hàm CONCAT_WS trong MySQL

Cách sử dụng CONCAT_WS trong MySQL

Hàm FIELD trong MySQL

Hàm FIELD trong MySQL

Cách sử dụng FIELD trong MySQL

Hàm FIND_IN_SET trong MySQL

Hàm FIND_IN_SET trong MySQL

Cách sử dụng FIND_IN_SET trong MySQL

Hàm FORMAT trong MySQL

Hàm FORMAT trong MySQL

Cách sử dụng FORMAT trong MySQL

Hàm INSERT trong MySQL

Hàm INSERT trong MySQL

Cách sử dụng INSERT trong MySQL

Hàm INSTR trong MySQL

Hàm INSTR trong MySQL

Cách sử dụng INSTR trong MySQL

Hàm LCASE trong MySQL

Hàm LCASE trong MySQL

Cách sử dụng LCASE trong MySQL

Hàm LEFT trong MySQL

Hàm LEFT trong MySQL

Cách sử dụng LEFT trong MySQL

Hàm LENGTH trong MySQL

Hàm LENGTH trong MySQL

Cách sử dụng LENGTH trong MySQL

Hàm LOCATE trong MySQL

Hàm LOCATE trong MySQL

Cách sử dụng LOCATE trong MySQL

Hàm LOWER trong MySQL

Hàm LOWER trong MySQL

Cách sử dụng LOWER trong MySQL

Hàm LPAD trong MySQL

Hàm LPAD trong MySQL

Cách sử dụng LPAD trong MySQL

Top