Bài 5: Sử dụng mở rộng truy vấn MySQL(WITH QUERY EXPANSION)

Tóm tắt : trong hướng dẫn này, bạn sẽ tìm hiểu về mở rộng truy vấn MySQL để mở rộng kết quả tìm kiếm dựa trên phản hồi liên quan tự động.

Giới thiệu về mở rộng truy vấn MySQL

Trong một số trường hợp, người dùng muốn tìm kiếm thông tin dựa trên kiến ​​thức mà họ có. Người dùng sử dụng kinh nghiệm của họ để xác định từ khóa để tìm kiếm thông tin và thông thường những từ khóa đó quá ngắn.

Để giúp người dùng tìm thông tin dựa trên các từ khóa quá ngắn, công cụ tìm kiếm toàn văn bản của 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 tìm kiếm toàn văn dựa trên phản hồi liên quan tự động (hoặc mở rộng truy vấn mù). Về mặt kỹ thuật, công cụ tìm kiếm toàn văn bản của MySQL thực hiện các bước sau khi mở rộng truy vấn được sử dụng:

  • Đầu tiên, công cụ tìm kiếm toàn văn bản của MySQL tìm kiếm tất cả các hàng khớp với truy vấn tìm kiếm.

  • Thứ hai, nó kiểm tra tất cả các hàng trong kết quả tìm kiếm và tìm các từ có liên quan.

  • Thứ ba, nó thực hiện 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 cung cấp bởi người dùng.

Từ góc độ ứng 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 nhưng với mở rộng truy vấn để cung cấp cho người dùng nhiều thông tin có liên quan và liên quan đến những gì họ đang tìm kiếm.

Để sử dụng mở rộng truy vấn, bạn sử dụng công WITH QUERY EXPANSIONcụ sửa đổi tìm kiếm trong AGAINST()hàm. Dưới đây minh họa cú pháp của truy vấn bằng cách sử dụng WITH QUERY EXPANSIONcông cụ sửa đổi tìm kiếm.

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

Ví dụ mở rộng truy vấn MySQL

Hãy xem xét một ví dụ về mở rộng truy vấn để xem nó hoạt động như thế nào.

Chúng tôi sẽ sử dụng productNamecột của productsbảng để thể hiện tính năng mở rộng truy vấn.

Đầu tiên, chúng tôi kích hoạt chỉ mục tìm kiếm toàn văn cho cột này.

ALTER TABLE products 
ADD FULLTEXT(productName);

Thứ hai, chúng tôi tìm kiếm một sản phẩm có tên sản phẩm chứa 1992thuật ngữ mà không sử dụng mở rộng truy vấn.

SELECT productName 
FROM products 
WHERE MATCH(productName) 
      AGAINST('1992');
+-----------------------------------+
| productName                       |
+-----------------------------------+
| 1992 Ferrari 360 Spider red       |
| 1992 Porsche Cayenne Turbo Silver |
+-----------------------------------+
2 rows in set (0.00 sec)

Như bạn thấy, kết quả tìm kiếm có hai sản phẩm có tên sản phẩm chứa thuật ngữ 1992.

Thứ ba, chúng ta có thể mở rộng kết quả tìm kiếm bằng cách sử dụng mở rộng truy vấn như câu lệnh sau:

SELECT productName
FROM products
WHERE MATCH(productName) 
      AGAINST('1992' WITH QUERY EXPANSION);
+-------------------------------------+
| productName                         |
+-------------------------------------+
| 1992 Porsche Cayenne Turbo Silver   |
| 1992 Ferrari 360 Spider red         |
| 2001 Ferrari Enzo                   |
| 1932 Alfa Romeo 8C2300 Spider Sport |
| 1948 Porsche 356-A Roadster         |
| 1948 Porsche Type 356 Roadster      |
| 1956 Porsche 356A Coupe             |
+-------------------------------------+
7 rows in set (0.00 sec)

Chúng tôi có nhiều hàng hơn trong kết quả tìm kiếm khi chúng tôi sử dụng mở rộng truy vấn. Hai hàng đầu tiên có liên quan nhất và các hàng khác đến từ từ khóa có liên quan ở hai hàng đầu tiên, ví dụ:Ferrari

Lưu ý rằng mở rộng truy vấn mù có xu hướng tăng tiếng ồn đáng kể bằng cách trả về kết quả không liên quan. Rất khuyến khích bạn chỉ sử dụng mở rộng truy vấn khi từ khóa tìm kiếm ngắn.

Trong hướng dẫn này, chúng tôi đã giới thiệu cho bạn mở rộng truy vấn MySQL để mở rộng kết quả tìm kiếm khi từ khóa do người dùng cung cấp ngắn.

Last updated