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ừ.
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:
- Tìm kiếm toàn văn bản XML trong DB2.pdf