Tìm kiếm toàn văn bản XML trong DB2

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ốngcơ 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ừ.

pdf42 trang | Chuyên mục: XML | Chia sẻ: dkS00TYs | Lượt xem: 2541 | Lượt tải: 2download
Tóm tắt nội dung Tìm kiếm toàn văn bản XML trong DB2, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
liệu, bao gồm bất kỳ tiền tố vùng tên nào. Tuy nhiên, nếu bạn đang sử dụng 
một vùng tên mặc định, bạn không phải thêm tiền tố cho các phần tử này! 
Một phương thức để cấu hình cách xử lý các phần riêng lẻ trong một cấu trúc tài 
liệu XML được thực hiện theo một mô hình tài liệu Net Search Extender. Cách sử 
dụng của nó được giải thích trong phần sau. 
Làm rõ mô hình tài liệu NSE 
Bạn có thể sử dụng một mô hình tài liệu Net Search Extender để cấu hình phạm vi 
tìm kiếm trong các tài liệu có cấu trúc, chẳng hạn như XML. Một mô hình tài liệu 
trước tiên kiểm soát những phần nào của một cấu trúc tài liệu cần được lập chỉ 
mục, các phần này được lập chỉ mục như thế nào và bạn có thể tham chiếu các 
phần tài liệu này theo tên nào trong quá trình tìm kiếm. 
Có hai kiểu mô hình tài liệu: 
 Tài liệu mặc định. 
 Một mô hình tài liệu tùy chỉnh do người dùng định nghĩa. 
Để sử dụng một mô hình tài liệu tùy chỉnh, bạn phải chỉ định một mô hình lúc tạo 
chỉ mục văn bản. Nếu không có mô hình tài liệu tùy chỉnh nào được cung cấp làm 
tham số chỉ mục, Net Search Extender sử dụng mô hình tài liệu mặc định của nó. 
Cho đến nay, các ví dụ trong bài viết này đã làm việc với mô hình tài liệu mặc 
định do Net Search Extender cung cấp. Các đặc điểm của mô hình tài liệu mặc 
định là: 
 Tất cả các phần của tài liệu được lập chỉ mục (đối với tài liệu XML, việc 
này bao gồm tất cả các phần tử và các thuộc tính). 
 Việc tìm kiếm có thể được cải tiến cho các phần tài liệu cụ thể khi sử dụng 
một cú pháp giống như XPath. 
 Không lập chỉ mục các giá trị số, do đó, không hỗ trợ các phép so sánh số 
hoặc tìm kiếm dải rộng. 
Sử dụng một mô hình tài liệu tùy chỉnh cho phép: 
 Định nghĩa các phần tài liệu XML nào sẽ được lập chỉ mục và phần nào sẽ 
bị loại trừ. 
 Định nghĩa các tên tuỳ chỉnh cho các cây con XML, các phần tử hoặc các 
thuộc tính XML cụ thể. 
 Định nghĩa nội dung phần tử hoặc thuộc tính XML bằng số, cho phép các 
phép so sánh số hoặc tìm kiếm dải rộng trên nội dung này. 
Bản thân mô hình tài liệu là một tài liệu XML theo sau một ngữ pháp được định 
nghĩa trước (với định nghĩa ngữ pháp này, hãy xem tài liệu Net Search Extender). 
Ví dụ, mô hình tài liệu, được định nghĩa trong một tệp, chỉ rõ một mô hình dùng 
để phân tích cú pháp và lập chỉ mục tài liệu có cấu trúc theo định dạng XML. Tệp 
mô hình được chuyển qua làm một tham số trong quá trình tạo chỉ mục và chỉ đọc 
trong lúc tạo chỉ mục; các thay đổi sau đó không ảnh hưởng đến các chỉ mục hiện 
tại. 
Hình 5 định nghĩa một mô hình tài liệu tùy chỉnh trên cơ sở dữ liệu sản phẩm 
(tham khảo Liệt kê 1). Mô hình tài liệu được lưu trữ trong một tệp nsemodel.xml. 
Hình 5. Một mô hình tài liệu tùy chỉnh 
Mỗi mô hình tài liệu XML bắt đầu bằng phần tử "XMLModel". Cho phép có hai 
phần tử XML cho XMLModel: 
Bảng 2. Các phần tử modelfile (tệp mô hình) XML của NSE 
Phần tử modelfile Mô tả 
XMLFieldDefinition 
Phần tử này định nghĩa một tên tuỳ chỉnh cho một phần, 
phần tử hoặc thuộc tính cụ thể của tài liệu XML, được 
xác định bằng cách sử dụng thuộc tính "locator" của 
"XMLFieldDefinition". 
XMLAttributeDefinition 
Phần tử này định nghĩa một thuộc tính NSE dựa trên một 
phần tử XML hoặc thuộc tính XML có thể được sử dụng 
để tìm kiếm số (tham số). 
 Thuộc tính locator 
Cả hai phần tử mô hình, "XMLFieldDefinition" và "XMLAttributeDefinition," xác 
định phần của tài liệu XML nguồn bằng thuộc tính "locator" (định vị). Thuộc tính 
định vị hỗ trợ trục con (/), trục-chính nó-và-con cháu (//), và trục thuộc tính (@). 
Hơn nữa, một tệp mô hình cũng hỗ trợ việc sử dụng các ký tự đại diện (*) trong 
đặc tả các vị trí. Ví dụ (1) trong Liệt kê 30 định nghĩa thuộc tính định vị nhận biết 
tất cả các phần tử con của phần tử "product". Trong ví dụ (2), thuộc tính định vị 
liên quan đến tất cả các thành phần con của phần tử "product" thuộc vùng tên cụ 
thể "ns". 
Ngoài ra, có thể xác định các kiểu nút cụ thể bằng một thuộc tính định vị . Net 
Search Extender hỗ trợ các nút nhận xét (ví dụ 3 trong Liệt kê 30) và các chế độ 
hướng dẫn xử lý (PI). Ngoài ra, có thể định nghĩa sự kết hợp các phần tử như được 
hiển thị trong ví dụ 4. 
Liệt kê 30. Các ví dụ cho các giá trị thuộc tính locator 
(1) locator="/product/*" 
(2) locator="/product/ns:*" 
(3) locator="/product/comment() 
(4) locator="name | details" 
Tóm lại, thuộc tính định vị định nghĩa phần tài liệu nên được lập chỉ mục. Bạn có 
thể sử dụng một tập con của các biểu thức XPath để xác định các thuộc tính định 
vị: 
 Trục con ('/' or 'child::') 
 Trục-chính nó-và-con cháu ('//') 
 Trục thuộc tính ('@' hoặc 'attribute::') 
 Kiểm tra nút kiểu nhận xét ('comment()') và kiểm tra nút kiểu PI 
('processing-instruction ()') 
 Kết hợp các nút ('|') 
 Ký tự đại diện ('*') 
Thuộc tính tên 
Thuộc tính "name" của một phần tử "XMLFieldDefinition" hoặc 
"XMLAttributeDefinition" định nghĩa tên thường dùng để chỉ ra một phần của cấu 
trúc tài liệu XML do giá trị của thuộc tính "locator" xác định. 
Đối với định nghĩa các tên, có ba biến đặc biệt có sẵn hỗ trợ việc tạo một giá trị 
tên tự động: 
Bảng 3. Các giá trị đặc biệt của thuộc tính tên 
Giá trị thuộc tính Mô tả 
name="$(NAME)" 
Biểu diễn tên đủ điều kiện (QName) của phần tử hoặc 
thuộc tính XML được biểu thức XPath của thuộc tính 
locator xác định. 
name="$(LOCALNAME") 
Biểu diễn tên cục bộ (không có một tiền tố vùng tên) 
của phần tử XML được biểu thức XPath của thuộc tính 
locator xác định. 
name="$(PATH)" 
Biểu diễn đường dẫn tuyệt đối đến phần tử hay thuộc 
tính XML được biểu thức XPath của thuộc tính locator 
xác định. 
Ghi nhớ các đặc điểm của mô hình tài liệu mặc định, nó được định nghĩa như sau: 
Hình 6. Định nghĩa mô hình tài liệu mặc định 
Thuộc tính kiểu 
Chỉ có thể sử dụng thuộc tính "type" kết hợp với một phần tử 
"XMLAttributeDefinition". Giá trị duy nhất được phép là NUMBER, quy định 
rằng có thể sử dụng phần tử hay thuộc tính được xác định bởi thuộc tính định vị để 
tìm kiếm tham số. 
Định nghĩa chỉ mục với một mô hình tài liệu tuỳ chỉnh 
Một khi bạn đã định nghĩa một tệp mô hình tùy chỉnh, có thể dùng nó để tạo chỉ 
mục. Định nghĩa về một chỉ mục văn bản với một mô hình tài liệu tùy chỉnh trông 
như sau: 
Liệt kê 31. Xác định một chỉ mục văn bản với một mô hình tài liệu tùy chỉnh 
db2text create index ix2 for text on product(description) 
 format xml documentmodel XMLModel in nsemodel.xml 
Tham số mô hình tài liệu được quy định lúc tạo chỉ mục xác định phần tử gốc 
trong tệp mô hình. Trong trường hợp của XML, phần tử gốc là . 
Ngoài ra, bạn cần xác định vị trí (tên tệp của tệp mô hình). 
Sau khi bạn tạo chỉ mục mới "ix2" dựa trên một mô hình tài liệu tùy chỉnh và cập 
nhật chỉ mục vừa mới được tạo ra, bạn có thể bắt đầu tìm kiếm cấu trúc tài liệu 
dựa trên các quy tắc được nêu trong mô hình tài liệu. 
Tìm kiếm trong cấu trúc với một mô hình tài liệu tuỳ chỉnh 
Theo các đặc điểm của mô hình tài liệu tùy chỉnh, một phần của cấu trúc tài liệu ở 
đó việc tìm kiếm sẽ xảy ra được xác định bằng tên, như được định nghĩa trong mô 
hình tài liệu. Bất kỳ các phần tài liệu khác, vẫn chưa được các thuộc tính định vị 
tương ứng nhận ra trong mô hình tài liệu, sẽ không được lập chỉ mục và do đó 
không thể tìm kiếm được. 
Ví dụ, truy vấn sau trả về một kết quả bằng cách giới hạn việc tìm kiếm phần tài 
liệu được xác định bằng "description" tên trong mô hình tài liệu của Hình 5: 
Liệt kê 32. Các kết quả truy vấn 
SELECT pid 
FROM product 
WHERE CONTAINS(description,'SECTION("description") "pattern"')=1; 
Tuy nhiên, việc phát hành truy vấn sau đây, dựa trên một chỉ mục được định nghĩa 
với mô hình tài liệu tùy chỉnh trong Hình 5, sẽ không có kết quả nào, mặc dù đã 
tham chiếu phần tương tự của tài liệu: 
Liệt kê 33. Các kết quả truy vấn 
SELECT pid 
FROM product 
WHERE CONTAINS(description, 'SECTION("/product/description/details") 
"pattern"')=1; 
 Tìm kiếm tham số 
Dựa vào phần tử "XMLAttributeDefinition" trong tệp mô hình trong Hình 5, có 
thể tìm kiếm tham số trên các giá trị của phần tử "price" (giá). Truy vấn sau đây 
tìm ra các sản phẩm có mức giá trong dải từ 50 đến 120: 
Liệt kê 34. Tìm kiếm tham số 
SELECT pid 
FROM product 
WHERE CONTAINS(description, 'ATTRIBUTE "price" BETWEEN 50 AND 
120')=1; 
Điều gì sẽ xảy ra nếu bạn muốn tìm các sản phẩm có một mức giá cao hơn 120 Đô 
la Mỹ, vẫn dùng loại tiền này? Nhìn vào tài liệu XML ví dụ trong Hình 1, loại tiền 
này có sẵn như là một thuộc tính của phần tử XML "price". Ngoài phạm vi các tìm 
kiếm khi sử dụng từ khoá "BETWEEN", cũng có thể tìm kiếm tham số bằng các 
toán tử GREATER THAN ('>') và LESS THAN ('<'). Việc dùng loại tiền này đòi 
hỏi sử dụng hàm SQL/XML XMLEXISTS(): 
Liệt kê 35. Sử dụng hàm SQL/XML XMLEXISTS() 
SELECT pid 
FROM product 
WHERE CONTAINS(description, 'ATTRIBUTE "price" > 120')=1 AND 
 XMLEXISTS('$prod/product/description/price[@currency="us"]' 
 passing description as "prod"); 
Tóm tắt 
Net Search Extender của DB2 cung cấp một ngôn ngữ truy vấn linh hoạt để tìm ra 
thông tin liên quan dựa trên các hoạt động lấy ra phức tạp, ví dụ, bao gồm tìm 
kiếm kết hợp Boolean, tìm kiếm ký tự đại diện và tìm kiếm mờ. Theo cách ấy, có 
thể giới hạn việc tìm kiếm theo các phần tử XML hay các thuộc tính XML cụ thể 
trong cấu trúc tài liệu. Việc khai thác sức mạnh của một mô hình tài liệu tùy chỉnh 
của Net Search Extender cho phép cấu hình bổ sung tìm kiếm nhận biết-cấu trúc 
trong DB2. 
Lời cảm ơn 
Cảm ơn Cindy Saracco, Bert van der Linden, Stefan Momma và Michael Haide về 
đóng góp của họ cho bài viết này. 
Mục lục 
 Trình mở rộng tìm kiếm Net của DB2 rút gọn lại 
 Chuẩn bị để tìm kiếm văn bản 
 Tìm thấy những gì bạn đang tìm kiếm 
 Giới hạn tìm kiếm văn bản theo các phần tử hay các thuộc tính XML 
 Khai thác sức mạnh về tìm kiếm văn bản 
 Một điều bạn luôn cần xem xét ... 
 Xem xét vùng tên của XML 
 Làm rõ mô hình tài liệu NSE 
 Tóm tắt 

File đính kèm:

  • pdfTìm kiếm toàn văn bản XML trong DB2.pdf