Thư viện tri thức trực tuyến
Kho tài liệu với 50,000+ tài liệu học thuật
© 2023 Siêu thị PDF - Kho tài liệu học thuật hàng đầu Việt Nam

Tìm kiếm toàn văn bản XML trong DB2 pot
Nội dung xem thử
Mô tả chi tiết
Tìm kiếm toàn văn bản XML trong DB2
Holger Seubert, Kỹ sư phần mềm, IBM
Sabine Perathoner-Tschaffler, Kỹ sư phần mềm, IBM
Tóm tắt: Với sự hỗ trợ của các tài liệu XML lưu trữ tự nhiên, DB2® 9 của
IBM® có một bước tiến hóa theo hướng hệ thống cơ sở dữ liệu lai. XQuery, một
ngôn ngữ chính mới trong DB2, cho phép làm việc theo cách tối ưu với XML. Tuy
nhiên, XML cũng thường chứa các phần văn bản lớn không dễ tìm kiếm được
bằng XQuery. Để tìm kiếm có hiệu quả các phần tài liệu không có cấu trúc này,
DB2 cung cấp một giải pháp tìm kiếm toàn văn bản. Bài viết này tập trung vào các
vấn đề cơ bản về tìm kiếm văn bản của DB2, bao gồm cả việc tạo và quản trị chỉ
mục văn bản. Bài viết này cùng tìm hiểu sâu về các tính năng cụ thể của việc tìm
kiếm toàn văn bản của DB2, chẳng hạn như tìm kiếm các từ khóa hoặc các cụm từ
trong cấu trúc tài liệu XML với tìm kiếm mờ, tìm kiếm gần đúng và tìm gốc của
từ.
XQuery, tiêu chuẩn W3C để truy cập dữ liệu XML, cung cấp nhiều biểu thức khác
nhau để tìm vị trí và truy vấn các tài liệu XML. Hơn nữa bạn có thể sử dụng sức
mạnh của ngôn ngữ này để tìm ra các tài liệu XML dựa vào tiêu chuẩn tìm kiếm
toàn văn bản được không? Câu trả lời "vẫn chưa có". Hiện nay vẫn không có sự hỗ
trợ nào cho các tính năng tìm kiếm toàn văn bản trong XQuery. Lý do của điều
này nằm trong Mô hình dữ liệu XQuery (XQuery Data Model), dùng làm cơ sở
cho mọi biểu thức XQuery. Để có thể tìm kiếm có hiệu quả dữ liệu toàn văn bản,
cần có thông tin về các từ riêng lẻ tạo thành nội dung văn bản của dữ liệu đó và vị
trí của chúng. Tuy nhiên, trong Mô hình dữ liệu XQuery, văn bản chỉ đơn giản là
một "hộp đen". Mô hình dữ liệu không có khái niệm nào về các từ hoặc các thẻ ở
bên trong một nút văn bản; nó chỉ biểu diễn nội dung văn bản của một phần tử
hoặc thuộc tính như là một nút kề nhau.
Vì vậy, XQuery có thể không cung cấp thứ gì tốt hơn so với việc phối hợp chuỗi
ký tự-con. Chức năng này được triển khai thực hiện với hàm contains() có sẵn,
hàm này lấy một ngữ cảnh và một thời hạn tìm kiếm làm các tham số.
Do DB2 9 hỗ trợ XQuery như là ngôn ngữ chính, nên có thể thực hiện biểu thức
XQuery sau đây trong một cửa sổ lệnh của DB2:
db2 => XQuery contains("The power of XML", "owe")
Như đã đề cập ở trên, hàm contains() triển khai thực hiện phối hợp chuỗi ký tựcon và do đó trả về giá trị true (đúng) cho truy vấn ở trên. Mặc dù người sử dụng
tìm kiếm thuật ngữ "owe", kết quả lại là "power" và v.v.. cũng do hàm contains()
trả về, hàm này có thể dẫn đến các kết quả tìm kiếm mà bạn thực sự không muốn
tìm kiếm. Vẫn chưa có tiêu chuẩn nào bao gồm chức năng tìm kiếm văn bản trong
ngôn ngữ XQuery. Rõ ràng, đây là một nhiệm vụ của Phiên bản 1 của XQuery sau,
đã bắt đầu trong một nhóm làm việc riêng biệt: toàn văn bản XQuery 1.0 và XPath
2.0.
Trong khi chờ đợi tiêu chuẩn mới này, hiện nay bạn có thể làm gì để tìm ra các tài
liệu XML có liên quan dựa vào các từ khoá và cụm từ? Phần dưới đây đưa ra một
tổng quan ngắn gọn về chức năng tìm kiếm toàn văn bản của DB2, giúp cho có
khả năng tìm kiếm văn bản nhận biết-cấu trúc trên XML.
Trình mở rộng tìm kiếm Net của DB2 rút gọn lại
Khi nói đến các tài liệu XML tìm kiếm văn bản, hãy xem xét cả hai cấu trúc nội
dung và cấu trúc tài liệu thực tế. Một kịch bản điển hình là giới hạn việc tìm kiếm
văn bản theo một phần tử cụ thể hoặc cây con của cấu trúc toàn bộ tài liệu XML,
giống như:
"Hãy tìm tất cả các tài liệu có từ 'XML' và 'database' trong phần tử abstract (trừu
tượng), cụm từ 'text search' (tìm kiếm văn bản) và 'Viper Release' ' (Phiên bản
Viper) trong phần tử title (tiêu đề) và cả hai từ phải ở trong cùng một câu."
Việc tìm kiếm toàn văn bản nhận biết-cấu trúc như vậy trên tài liệu XML trong
DB2 được triển khai thực hiện với Trình mở rộng tìm kiếm Net (Net Search
Extender - NSE) của DB2, một tính năng được cài đặt riêng rẽ đi kèm với DB2.
Việc tìm kiếm văn bản được tích hợp trong SQL và được tối ưu hóa bằng trình tối
ưu hóa của DB2 trong thời gian chạy. Các nhiệm vụ quản trị, chẳng hạn như việc
tạo và bảo trì chỉ mục, có thể được thực hiện bằng cách sử dụng Trung tâm Kiểm
soát DB2.
Khi sử dụng SQL, Net Search Extender tìm kiếm dữ liệu văn bản đã được lưu giữ
trong cột của một bảng cơ sở dữ liệu. Thay vì tìm kiếm liên tục thông qua dữ liệu
văn bản bằng cách sử dụng phối hợp chuỗi ký tự, như đã thực hiện bằng hàm
XQuery contains(), Net Search Extender sử dụng một chỉ mục văn bản. Việc sử
dụng một chỉ mục văn bản làm cho việc tìm kiếm tài liệu hiệu quả hơn nhiều, do
không cần kiểm tra dữ liệu văn bản lúc truy vấn giống như khi thực hiện nó bằng
phối hợp chuỗi ký tự-con. Một chỉ mục văn bản thường bao gồm thông tin về các
số hạng liên quan được trích xuất từ các tài liệu văn bản. Trong các trường hợp
XML, không chỉ các số hạng quan trọng, mà còn cả vị trí của chúng trong cấu trúc
tài liệu XML được duy trì trong chỉ mục văn bản.
Bây giờ bạn đã quen thuộc với các nguyên tắc cơ bản của Net Search Extender,
bạn đã sẵn sàng để tìm hiểu cách sử dụng nó để thực hiện các tìm kiếm toàn văn
bản trên dữ liệu XML. Hãy tìm hiểu cách tạo ra một chỉ mục văn bản trong phần
tiếp theo.
Chuẩn bị để tìm kiếm văn bản
Các nhiệm vụ cần được thực hiện để tìm kiếm trong các tài liệu XML trong DB2
có thể được chia thành hai phần:
1. Các nhiệm vụ quản lý chỉ mục.
2. Tìm kiếm toàn văn bản.
Phần này đi nhanh qua cả hai kiểu nhiệm vụ bằng cách sử dụng các ví dụ xem xét
bảng "product" (sản phẩm) như được định nghĩa trong Liệt kê 1. Lưu ý rằng cột
"description" (mô tả) và "comments" (các nhận xét) của bảng "product" là kiểu
XML (nói cách khác, các tài liệu XML "description" và "comments" được lưu trữ
tự nhiên trong cơ sở dữ liệu).
Liệt kê 1. Định nghĩa bảng
create table product (
pid varchar(10) primary key not null,
description xml,
comments xml
);
Dữ liệu XML ví dụ được lưu trữ trong các cột "product.description" và
"product.comment" được thể hiện tương ứng trong Hình 1 và Hình 2 Các ví dụ