intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

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

Chia sẻ: Nguyen Nhi | Ngày: | Loại File: PDF | Số trang:42

125
lượt xem
6
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

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...

Chủ đề:
Lưu

Nội dung Text: Tìm kiếm toàn văn bản XML trong DB2

  1. 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.
  2. 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
  3. 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.
  4. 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ụ
  5. truy vấn tiếp theo tìm kiếm các phần tử cụ thể của các tài liệu XML này. Cách chèn các tài liệu XML vào DB2 được trình bày trong bài "Hãy khởi đầu nhanh chóng với DB2 Viper" (developerWorks, 03.2006). Hình 1. Dữ liệu ví dụ của cột "product.description" Hình 2. Dữ liệu ví dụ của cột "product.comments"
  6. Trước tiên hãy xem xét những gì cần làm để thực hiện các hoạt động tìm kiếm văn bản trên bảng "product", giống như tìm kiếm tên của một sản phẩm có từ "satisfactory" (vừa ý) trong phần tử "message" (thông báo) của các nhận xét của nó hoặc một sản phẩm có cụm từ "sugar and creamer" (đường và kem) trong phần tử "details" (các chi tiết) của mô tả của nó. Trước khi bạn có thể sử dụng Net Search Extender, bạn phải khởi động các dịch vụ cá thể của nó, như trong Liệt kê 2. Liệt kê 2. Lệnh để khởi động các dịch vụ cá thể của Net Search Extender db2text start Lưu ý rằng lệnh này gọi một lệnh thực hiện riêng có tên là db2text. Như bạn thấy, bất kỳ nhiệm vụ quản trị chỉ mục văn bản nào cũng cần được thực hiện bằng lệnh db2text.
  7. Sau khi khởi động, Net Search Extender cho phép các cơ sở dữ liệu DB2 thực hiện các hoạt động tìm kiếm văn bản. Bước này tạo ra các bảng quản trị cần thiết và Các hàm do người dùng định nghĩa khác nhau (UDF) và Các thủ tục đã lưu trữ (STP) cần dùng để tìm kiếm toàn văn bản trên dữ liệu DB2 và được thực hiện chỉ một lần cho mỗi cơ sở dữ liệu. Lệnh cho phép "thử nghiệm" một cơ sở dữ liệu cho các hoạt động tìm kiếm văn bản trông như sau: Liệt kê 3. Lệnh này cho phép "thử nghiệm" cơ sở dữ liệu cho các hoạt động tìm kiếm văn bản db2text enable database for text connect to test Trong trường hợp bạn không thiết lập biến môi trường DB2DBDFT, tất cả các nhiệm vụ quản trị của Net Search Extender đều yêu cầu mệnh đề connect to , ở đây là tên của cơ sở dữ liệu của bạn. Các lệnh sau đây giả định rằng DB2DBDFT đã được thiết lập. Sau khi cho phép một cơ sở dữ liệu dùng cho văn bản, bạn có thể tạo các chỉ mục văn bản trên các cột đang lưu trữ dữ liệu văn bản theo các định dạng khác nhau, như XML. Lệnh create index thiết lập cơ sở hạ tầng chỉ mục văn bản bằng cách định nghĩa các thuộc tính chỉ mục văn bản, chẳng hạn nh ư tần số cập nhật, định dạng tài liệu, thư mục chỉ mục và v.v.. Để biết thêm thông tin về các thuộc tính chỉ mục khác nhau, hãy tham khảo tài liệu Net Extender Search. Ví dụ được dùng trong bài viết này sử dụng việc tạo chỉ mục văn bản cơ bản, như trong Liệt kê 4:
  8. Liệt kê 4. Việc tạo một chỉ mục văn bản ix1 trên cột "product.description" db2text create index ix1 for text on product(description) Lệnh trong Liệt kê 4 tạo ra một chỉ mục toàn văn bản có tên là "ix1" dựa vào các tài liệu XML được lưu trữ tự nhiên trong cột "description" của bảng "product". Lưu ý rằng sau khi bạn tạo một chỉ mục văn bản, việc tìm kiếm văn bản không tìm thấy bất kỳ kết quả nào, do chỉ mục văn bản không chứa dữ liệu ở điểm này. Dữ liệu của bạn và chỉ mục văn bản cần phải được đồng bộ một cách rõ ràng nếu không có tần số cập nhật nào được quy định. Nhiệm vụ đồng bộ hóa chỉ mục văn bản được gọi là cập nhật chỉ mục và thường làm ngay sau khi bạn đã tạo ra một chỉ mục văn bản. Liệt kê 5. Đồng bộ hóa chỉ mục văn bản với dữ liệu trong bảng cơ sở db2text update index ix1 for text Quá trình cập nhật chỉ mục có thể hoặc được thực hiện bằng thủ công khi sử dụng lệnh trong Liệt kê 5 hoặc được thực hiện tự động theo lịch biểu khi sử dụng một trình tiện ích tầng sau của nền tảng. Có thể quy định cập nhật chỉ mục tự động nh ư một thuộc tính chỉ mục trong quá trình tạo chỉ mục hoặc được quy định sau khi sử dụng một lệnh chỉ mục thay thế.
  9. Các bước cần được hoàn thành để chuẩn bị cho các hoạt động tìm kiếm toàn văn bản trong DB2 được tóm tắt dưới đây: Bảng 1. Các bước để chuẩn bị tìm kiếm toàn văn bản trong DB2 Các M ô tả Ví d ụ bước Khởi động các dịch vụ cá thể của Net Bước 1 db2text start Search Extender. Cho phép cơ sở dữ liệu của bạn dùng Bước 2 db2text enable database for text để tìm kiếm toàn văn bản. db2text create index ixName for Bước 3 Tạo một chỉ mục toàn văn bản. text on table(column) Cập nhật chỉ mục toàn văn bản được db2text update index ixName for Bước 4 tạo ra trước. text Sau khi hoàn thành bốn bước quản trị, bạn đã sẵn sàng đi tiếp và tìm kiếm toàn văn bản dữ liệu XML. Vậy, các tính năng tìm kiếm thật sự có thể được sử dụng để tìm thông tin liên quan là gì?
  10. Tìm thấy những gì bạn đang tìm kiếm Cách phổ biến nhất để thực hiện tìm kiếm toàn văn bản với Net Search Extender là sử dụng hàm tìm kiếm vô hướng SQL CONTAINS() của nó. Sử dụng hàm này ở nơi sử dụng SQL chuẩn và ở nơi bạn có thể dễ dàng kết hợp nó với các điều kiện khác trong một mệnh đề SQL WHERE. Ngoài ra, việc tích hợp chặt chẽ vào trình tối ưu hóa DB2 tạo ra hiệu năng thời gian chạy cao. (Hai phương thức tìm kiếm khác cũng có sẵn cho các tình huống chuyên nghiệp hơn, nhưng bài viết này không thảo luận về chúng). Ví dụ sau đây cho thấy cách sử dụng hàm vô hướng CONTAINS() để ban hành tìm kiếm toàn văn bản: Liệt kê 6. Hàm vô hướng CONTAINS SELECT column FROM table WHERE CONTAINS(column-name, 'search-criteria')=1; Hàm CONTAINS() có hai tham số: tên cột, thiết lập ngữ cảnh trong đó tìm kiếm toàn văn bản sẽ xảy ra và tiêu chuẩn tìm kiếm thực tế sẽ được áp dụng. Các tiêu chuẩn tìm kiếm cơ bản của Net Search Extender có các tính năng sau đây: Các phép toán Boolean để kết nối (AND), phân tách (OR) và loại trừ  (NOT) của các từ tìm kiếm.
  11. Các từ tìm kiếm riêng có thể là các từ đơn hay cụm từ, ví dụ như "New"  "York" hoặc "New York". Tìm kiếm gần đúng (Proximity) dùng cho các từ trong cùng một câu hoặc  cùng một đoạn. Tìm kiếm mờ (Fuzzy) dùng cho các từ có một cách viết chính tả tương tự  như từ tìm kiếm. Tìm kiếm Ký tự đại diện (Wildcard), sử dụng che dấu phần trước, phần  giữa và phần cuối. Net Search Extender cung cấp các tính năng tìm kiếm nâng cao hơn là: Hỗ trợ từ đồng nghĩa dùng cho các truy vấn rộng hơn, bằng cách tìm kiếm  không chỉ với một từ tìm kiếm cụ thể, mà còn với các từ có liên quan đến nó theo các quan hệ do người dùng định nghĩa. Tìm kiếm các dãy số, có thể hoặc trong các tài liệu có cấu trúc hoặc trong  các cột bổ sung. Tìm gốc từ để rút gọn từ tìm kiếm đến từ gốc của nó trước khi thực hiện  tìm kiếm (chỉ cho tiếng Anh). Để thực hiện tìm kiếm đích bên trong cấu trúc tài liệu của các tài liệu XML, Net Search Extender cung cấp tìm kiếm dựa theo phần bằng cách: giới hạn tìm kiếm theo các phần tử XML.  giới hạn tìm kiếm theo các thuộc tính XML.  hỗ trợ kiểu nội dung hỗn hợp của các phần tử XML. 
  12. Bây giờ bạn đã thấy Net Search Extender cung cấp những ý tưởng cơ bản của các tính năng tìm kiếm, chúng ta hãy tìm hiểu cách sử dụng thực tế của chúng bằng ví dụ. Tìm kiếm văn bản bằng cách sử dụng SQL và XQuery Các truy vấn sau đây truy cập vào bảng "product" đã được giới thiệu trong Liệt kê 1. Dữ liệu XML ví dụ đã lưu trữ trong cột "product.description" được thể hiện trong Hình 1. Các ví dụ truy vấn tiếp theo tìm kiếm các phần tử cụ thể của cột XML này. Hãy xem xét văn bản đơn giản sau đây tìm kiếm bảng "product" để trả về tất cả các trình định danh sản phẩm (dữ liệu "pid") có từ "creamer" (kem) ở một n ơi nào đó trong cấu trúc tài liệu về thông tin sản phẩm (trong cột "product.description"): Liệt kê 7. Cú pháp cơ bản để tìm kiếm văn bản SELECT pid FROM product WHERE CONTAINS(description,' "creamer" ')=1; Sử dụng hàm SQL/XML XMLQUERY(), các phần tử XML riêng biệt về thông tin sản phẩm có thể được chiếu vào trong kết quả. Truy vấn sau trả về phần tử "name" (tên) của sản phẩm có từ "creamer" ở một nơi nào đó trong cấu trúc tài liệu:
  13. Liệt kê 8. Sử dụng chức năng tìm kiếm văn bản kết hợp với XMLQUERY() SELECT XMLQUERY('$prod//name' passing description as "prod") FROM product WHERE CONTAINS(description, ' "creamer" ')=1; Truy vấn tìm kiếm toàn văn bản SQL tương tự, như trong Liệt kê 8 ở trên, có thể được thể hiện bằng XQuery như sau: Liệt kê 9. Tìm kiếm văn bản trong ngữ cảnh XQuery XQUERY for $prod in db2-fn:sqlquery("SELECT description FROM product WHERE CONTAINS (description, ' "creamer" ')=1") return $prod//name Biểu thức tìm kiếm toàn văn bản được thể hiện trong một ngữ cảnh SQL và các tài liệu XML có liên quan được xử lý trong ngữ cảnh XQuery khi sử dụng hàm đầu vào db2-fn:sqlquery().
  14. Trong các ví dụ ở trên, việc tìm kiếm văn bản được thực hiện trên toàn bộ cấu trúc tài liệu XML (nói cách khác, trong tất cả các nút văn bản và các giá trị thuộc tính không để ý đến nơi thỏa mãn tiêu chuẩn tìm kiếm trong tài liệu). Cái gì giới hạn việc tìm kiếm văn bản theo các phần tử XML hay các thuộc tính XML cụ thể? 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 Việc giới hạn tìm kiếm văn bản theo các phần cụ thể trong cấu trúc tài liệu là một trong những tính năng được sử dụng thường xuyên nhất để tìm kiếm toàn văn bản XML. Trong Net Search Extender của DB2, việc giới hạn tìm kiếm văn bản theo các phần tử cụ thể hoặc các cây con của các tài liệu XML được thể hiện bằng một XPath có đủ điều kiện hoàn toàn. XPath này xác định một phần của cấu trúc tài liệu XML muốn tìm kiếm. Net Search Extender hỗ trợ cú pháp bước-vị trí XPath đã rút gọn và cho phép sử dụng trục con (/) và trục thuộc tính (@). Không hỗ trợ các biểu thức hoặc h àm XPath khác. Ví dụ, có thể giới hạn việc tìm kiếm văn bản với các từ "creamer" và "pattern" (mẫu) theo phần tử "name" của tài liệu XML sản phẩm trong cột "product.description" cho truy vấn sau đây: Liệt kê 10. Giới hạn việc tìm kiếm các phần tử hoặc các thuộc tính XML với mệnh đề SECTION SELECT XMLQUERY('$prod//name' passing description as "prod") FROM product
  15. WHERE CONTAINS(description,' SECTION("/product/description/name") ("creamer","pattern") ')=1; Mệnh đề SECTION như là một phần trong tiêu chuẩn tìm kiếm văn bản xác định phần đó trong cấu trúc tài liệu XML, ở nơi sẽ xảy ra tìm kiếm văn bản. Với các bước vị trí, như được định nghĩa trong tiêu chuẩn XPath, phần tử "name" XML bên trong cấu trúc XML sản phẩm được xác định trong ví dụ trên. Câu lệnh SELECT trả về tất cả các phần tử name của các sản phẩm có từ "creamer" và từ "pattern" theo trình tự bất kỳ trong phần tử "name" tương ứng. Với XQuery làm ngôn ngữ chính, truy vấn tương tự trông như sau: Liệt kê 11. XQuery làm ngôn ngữ chính XQUERY for $prod in db2-fn:sqlquery("SELECT description FROM product WHERE CONTAINS(description, ' SECTION("/product/description/name") ("creamer","pattern" ')=1) return $prod//name
  16. Ngoài ra, cũng có thể giới hạn tìm kiếm văn bản theo các thuộc tính XML cụ thể, bằng cách sử dụng trục thuộc tính, như trong ví dụ sau đây: Liệt kê 12. Giới hạn tìm kiếm văn bản theo các thuộc tính XML SELECT XMLQUERY('$prod//name' passing description as "prod") FROM product WHERE CONTAINS(description,' SECTION("/product/description/category/ @catx")"sterling" ')=1; Mệnh đề SECTION quy định giới hạn tìm kiếm văn bản theo thuộc tính XML "catx" bằng cách sử dụng XPath tương ứng. Phần tử "name" của tất cả các sản phẩm có từ "sterling" (bảng Anh) dùng làm giá trị của thuộc tính XML "catx" được trả về. Liệt kê 12 cho thấy có thể thực hiện tìm kiếm các từ khác nhau trong cùng phần này như thế nào. Cũng có thể kết hợp tìm kiếm trong các phần khác. Khi sử dụng toán tử AND (&) của Boolean, truy vấn sau đây trong Liệt kê 13 trả về tất cả các phần tử "name" của những sản phẩm nào có từ "sterling" trong thuộc tính "catx" của phần tử "category" và từ "creamer" trong phần tử "name": Liệt kê 13. Tìm kiếm trong các phần khác nhau
  17. SELECT XMLQUERY('$prod//name' passing description as "prod") FROM product WHERE CONTAINS(description,' SECTION("/product/description/category/@catx")"sterling" & SECTION("/product/description/name")"creamer" ')=1; Việc tìm kiếm qua các ranh giới phần tử Đôi khi bạn bắt gặp các phần tử XML có một kiểu nội dung hỗn hợp chứa dữ liệu văn bản và các phần tử XML khác. Ví dụ, phần tử XML "sentence" sau đây chứa một số phần tử văn bản và phần tử "entity" (thực thể) khác: Hình 3. Phần tử XML của một kiểu nội dung hỗn hợp Trong trường hợp này, bạn muốn tìm kiếm qua các ranh giới phần tử (nói cách khác, việc tìm kiếm cụm từ "IBM Software Group" (Tập đoàn phần mềm IBM) trong phần tử "sentence" sẽ tìm ra các kết quả, mặc dù các phần của từ tìm kiếm này xuất hiện trong các phần tử khác nhau). Net Search Extender có khả năng xử lý nội dung hỗn hợp -- tìm kiếm qua các ranh giới phần tử.
  18. Hãy xem xét đoạn XML ở trên được lưu trữ trong một cột "description" trong bảng "product", truy vấn sau trả về một kết quả: Liệt kê 14. Các kết quả truy vấn SELECT description FROM product WHERE CONTAINS(description,' SECTION("/sentence") "IBM Software Group" ')=1; Mặc dù thẻ "IBM" là Text Node (nút văn bản) trực hệ của phần tử "entity" (thực thể) và phạm vi để tìm kiếm văn bản là phần tử XML "sentence", truy vấn trả về một yêu cầu nhấn chuột. Cho đến nay, sức mạnh của các chỉ mục toàn văn bản hoàn toàn chưa được khai thác. Đã thấy các ví dụ về cách giới hạn tìm kiếm theo các phần cụ thể trong cấu trúc tài liệu, Net Search Extender cung cấp nhiều cách thể hiện tiêu chuẩn tìm kiếm. Khai thác sức mạnh về tìm kiếm văn bản Ngoài ra để giới hạn tìm kiếm văn bản theo các phần tử hoặc các thuộc tính cụ thể, Net Search Extender cung cấp một số tính năng khác để định nghĩa tiêu chuẩn tìm kiếm văn bản. Ví dụ, bạn có thể giới hạn việc tìm kiếm văn bản theo các từ trùng khớp chỉ khi chúng xảy ra trong cùng một câu (tìm kiếm gần đúng).
  19. Những phần sau đây sẽ cung cấp các ví dụ về các tính năng tìm kiếm khác nhau đã được giới thiệu từ trước. Tìm kiếm gần đúng Truy vấn trong Liệt kê 15 tìm ra tất cả các trình định danh sản phẩm của những sản phẩm nào có từ "pattern" (mẫu) và "sugar và creamer" (đường và kem) không chỉ trong phần tử "details" (các chi tiết) của tài liệu XML, mà còn trong cùng một câu: Liệt kê 15. Tìm kiếm gần đúng SELECT pid FROM product WHERE CONTAINS(description, 'SECTION("/product/description/details") "pattern" IN SAME SENTENCE AS "sugar and creamer"')=1; Hai bắt buộc về cấu trúc được kết hợp trong ví dụ này: việc tìm kiếm bị giới hạn trong một phần tử cụ thể ("details") và trong nội dung văn bản của phần tử đó (nút văn bản của nó), việc tìm kiếm cũng bị giới hạn theo các từ xuất hiện trong cùng một câu. Lưu ý rằng một từ tìm kiếm "sugar and creamer" bao gồm một cụm từ trong đó các từ đơn "sugar", "and" và "creamer" được tìm kiếm theo trình tự chính xác này. Mặt khác, việc tìm kiếm các thẻ "creamer", "and" và "sugar" theo trình tự bất kỳ trong ngữ cảnh tương tự có thể được thể hiện như sau:
  20. Liệt kê 16. Sự khác biệt giữa tìm kiếm cụm từ và tìm kiếm các thẻ SELECT pid FROM product WHERE CONTAINS(description, 'SECTION("/product/description/details") "pattern" IN SAME SENTENCE AS ("creamer","and","sugar") ')=1; Các toán tử Boolean Các từ tìm kiếm khác nhau có thể được kết hợp với các từ tìm kiếm khác bằng cách sử dụng các toán tử Boolean "&" (AND), "|" (OR) và NOT. Ví dụ sau đây kết hợp một số từ bằng cách sử dụng các toán tử Boolean là AND và OR: Liệt kê 17. Sử dụng các toán tử Boolean là AND và OR SELECT pid FROM product WHERE CONTAINS(description, 'SECTION("/product/description") "pattern" & "creamer" | "sugar" ')=1;
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2