logo

TÌM HIỂU CONTEXT CATRIDGE TRONG ORACLE 8

Oracle bao gồm một tập hợp hoàn thiện các sản phẩm xây dựng ứng dụng và người dùng cuối được trang bị các giải pháp kỹ thuật thông tin hoàn hảo. Các ứng dụng Oracle tương thích với hầu hết các hệ điều hành từ các máy tính cá nhân đến các hệ thống xử lý song song lớn. Oracle cung cấp một hệ quản trị cơ sở dữ liệu (Database Management System - DBMS) uy n ...
 KHOA CÔNG NGHỆ THÔNG TIN TRƯỜNG ĐẠI HỌC KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH LUẬN VĂN TỐT NGHIỆP Đề tài :  TÌM HIỂU CONTEXT CATRIDGE TRONG ORACLE 8  VIẾT CHƯƠNG TRÌNH QUẢN LÝ LVTN Giáo viên hướng dẫn : TRẦN QUANG Học viên thực hiện : NGUYỄN THANH GIANG Lớp : KS2 - K6 Niên khoá : 1996-1999 Tháng 7-1999 MỤC LỤC I.GIỚI THIỆU CHUNG II.TÌM HIỂU CONTEXT CARTRIDGE TRONG ORACLE 8 1.Các khái niệm cơ bản của Oracle 1.1.Giới thiệu Oracle 1.2.Cấu trúc cơ sở dữ liệu (CSDL) : 1.2.1. Tablespaces & Data files 1.2.2. Schema Objects (đối tượng CSDL) 1.2.3. Datatypes 1.2.4. Data Integrity (ràng buộc dữ liệu) 1.2.5. Từ điển dữ liệu 1.3. Data Access 1.3.1. SQL & PL/SQL 1.3.2. Transaction (giao dịch) 1.4. Programmatic Constructs 1.4.1.Procedures & Packages 1.4.2.Database Triggers 2.Context Cartridge 2.1.Giới thiệu 2.2.Một số khái niệm 2.3.Text Query 2.4.Theme Query 2.5.Query Methods 2.6.Linguistic services 2.7.Thực hiện Context III.PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG 1.Phân tích Hệ thống 1.1.Bài toán "Quản lý luận văn tốt nghiệp" 1.2.Các chức năng của Hệ thống 1.3.Sơ đồ dòng Dữ liệu (DFD) 1.4.Sơ đồ thực thể-Mối liên kết (ERD) 1.5.Đặc tả quá trình 1.6.Từ điển Dữ liệu 2.Thiết kế Hệ thống 2.1.Thiết kế Mã 2.2.Thiết kế File 2.3.Thiết kế Input 2.4.Thiết kế Form IV.HIỆN THỰC HỆ THỐNG 1.Input Screens 2.Physical File 3.Source Code V.ĐÁNH GIÁ KẾT LUẬN Tài liệu tham khảo III-2 III-3 CHƯƠNG I GIỚI THIỆU CHUNG III-4 Trong cuộc sống hàng ngày Quản lý là một công việc người ta luôn phải làm. Các công việc quản lý xảy ra trong mọi lĩnh vực. Có rất nhiều bài toán quản lý : Quản lý nhân sự, quản lý vật tư, … Trong lĩnh vực quản lý, việc xử lý các thông tin nhận được là một vấn đề rất phức tạp vì lượng thông tin nhận được ngày càng lớn và thường xuyên. Để giải phóng công việc của người làm công tác quản lý thì cần đến sự trợ giúp của máy tính rất nhiều. Bài toán quản lý các thông tin dạng không có cấu trúc (văn bản, hình ảnh, …) luôn luôn là một bài toán rất phức tạp, nhất là trong việc tổ chức Cơ sở dữ liệu. Đề tài nhận được ở đây là "Tìm hiểu Context Cartridge - Viết chương trình quản lý luận văn tốt nghiệp" , đã đưa ra một hướng giải quyết bài toán này. Dựa trên một số công cụ và chức năng mạnh của Oracle 8, Đề tài đã giải quyết tốt vấn đề tổ chức, lưu trữ và tra cứu các dữ liệu không có cấu trúc, mà cụ thể là các luận văn tốt nghiệp, giúp cho việc tra cứu các luận văn tốt nghiệp được thực hiện chính xác, nhanh chóng và dễ dàng. Ngoài ra với ưu thế của Hệ Cơ sở dữ liệu Oracle là cơ chế bảo mật dữ liệu rất chặt chẽ giúp cho Hệ thống hoạt động rất tốt và rất an toàn trong việc cập nhật và truy cập dữ liệu, tránh được việc mất dữ liệu. III-5 CHƯƠNG II TÌM HIỂU CONTEXT CARTRIDGE TRONG ORACLE 8 III-6 1.CÁC KHÁI NIỆM CƠ BẢN CỦA ORACLE 1.1.Giới thiệu Oracle Oracle bao gồm một tập hợp hoàn thiện các sản phẩm xây dựng ứng dụng và người dùng cuối được trang bị các giải pháp kỹ thuật thông tin hoàn hảo. Các ứng dụng Oracle tương thích với hầu hết các hệ điều hành từ các máy tính cá nhân đến các hệ thống xử lý song song lớn. Oracle cung cấp một hệ quản trị cơ sở dữ liệu (Database Management System - DBMS) uyển chuyển : Oracle Server để lưu giữ và quản lý các thông tin dùng trong các ứng dụng. Phiên bản Oracle 7 quản lý cơ sở dữ liệu với tất cả các ưu điểm của cấu trúc CSDL quan hệ cộng thêm khả năng lưu giữ và thực thi các đối tượng CSDL như các procedure và các trigger. Oracle Server là một hệ quản trị CSDL điều khiển : -Lưu giữ dữ liệu trên các vùng dữ liệu đã thiết kế. -Truy xuất dữ liệu cho các ứng dụng, dùng các kỹ thuật tương đối tối ưu. -Bảo mật dữ liệu, cấp quyền khác nhau cho các user. -Liên kết và toàn vẹn dữ liệu khi CSDL được phân bố trên mạng. Ngoài các chức năng chuẩn cung cấp các tiện ích CSDL, Oracle Server còn có thêm một số chức năng sau : -Procedural Option -Distributed Option -Parallel Server Option -Trusted Oracle. Các sản phẩm của Oracle bao gồm : -Oracle TextRetrieval -Pro* ORACLE -Oracle Card -Oracle CASE -SQL * Plus SQL, SQL * Plus và PL/SQL là các đặc tính của Oracle. SQL : -Là ngôn ngữ dùng để truy xuất cơ sở dữ liệu quan hệ, kể cả Oracle. -Có thể được dùng với mỗi công cụ Oracle khi có yêu cầu truy xuất dữ liệu. PL/SQL : -Là ngôn ngữ thủ tục Oracle để viết các ứng dụng luận lý và thao tác dữ liệu bên ngoài CSDL. -Có thể bao gồm một tập con các lệnh SQL khi có yêu cầu truy xuất dữ liệu. -Sẵn có trong Oracle Server. SQL * Plus : -Là sản phẩm Oracle trong đó có thể dùng cả SQL và PL/SQL. -Còn có các ngôn ngữ lệnh riêng để điều khiển hành vi của sản phẩm và định dạng output từ các truy vấn SQL. 1.2. Cấu trúc cơ sở dữ liệu (CSDL) : 1.2.1. Tablespaces & Data files: Một CSDL Oracle được lưu giữ trong một hoặc nhiều đơn vị nhớ logic gọi là tablespace. Mỗi tablespace được lưu giữ thành một hoặc nhiều file vật lý gọi là Data file. 1.2.2. Schema Objects (đối tượng CSDL): III-7 Schema Objects là cấu trúc logic lưu trữ dữ liệu. Schema Objects bao gồm tables, views, sequences, synonyms, indexes, clusters, database links, procedures, packages. -Tables : Là đơn vị nhỏ nhất của việc lưu trữ dữ liệu trong một CSDL Oracle. Dữ liệu được lưu thành dòng và cột. Mỗi table được định nghĩa bằng 1 table name và tập các cột. Mỗi cột (field) có một tên cột, kiểu, và độ lớn. Mỗi dòng là tập hợp những thông tin của các cột gọi là 1 record. -Views : View tương tự như Window mà qua đó dữ liệu trong table có thể được xem hoặc biến đổi. Một view chỉ được lưu giữ dưới dạng câu lệnh SELECT. View là một dạng table ảo nghĩa là table không thực sự tồn tại mà chỉ xuất hiện để user xem. Một view tự nó không có dữ liệu mà sẽ tương tác dữ liệu dựa vào các table cơ sở. View giới hạn việc xâm nhập dữ liệu, cho phép các users nhập các câu truy vấn đơn giản để lấy kết quả từ các câu truy vấn phức tạp thông qua 1 view, cung cấp dữ liệu độc lập cho nhiều người sử dụng hay các chương trình ứng dụng. View được chia thành 2 loại : view đơn và view phức. View đơn là view chỉ truy xuất dữ liệu từ 1 table và không chứa bất kỳ hàm hay GROUP dữ liệu nào, ngược lại gọi là view phức. -Synonyms : Synonym là một bí danh của một table, view, sequence, procedure , function hay một package. Synonym được sử dụng cho việc bảo mật và tiện lợi trong truy xuất dữ liệu. Có 2 loại synonym : Public và Private. -Index (chỉ mục) : Index của Bảng được tạo ra nhằm tăng tốc độ truy xuất, tăng hiệu quả của tính duy nhất trên một hoặc một tập của cột. Chỉ mục của Oracle có 2 mục đích chính là : tăng tốc độ lấy dữ liệu thông qua khóa đặc thù (particular key) , bắt buộc giá trị duy nhất trên cột, thường là khóa chính. 1.2.3. Datatypes Oracle có các kiểu dữ liệu sau đây: -CHAR(n) : Kiểu ký tự có chiều dài cố định là n. -VARCHAR2(n) : Ký tự có chiều dài thay đổi đến n ký tự. -NUMBER : số dấu chấm động với 38 ký số. -NUMBER(n): số nguyên có n ký số. -NUMBER(n,m) : số thập phân có n ký số và m số lẻ. -DATE : Kiểu ngày. -LONG : Ký tự có chiều dài thay đổi tối đa 231-1, chỉ có 1 cột kiểu LONG trong 1 table. -RAW : tương đương VARCHAR2 , nhưng dùng để lưu dữ liệu dạng byte hay nhị phân như hình ảnh, âm thanh. -LONGRAW : tương đương LONG, nhưng dùng để lưu dữ liệu dạng byte hay nhị phân như hình ảnh, âm thanh. 1.2.4. Data Integrity (ràng buộc dữ liệu) Dữ liệu phải thỏa mãn tập các luật được định nghĩa trước bởi người quản trị CSDL. Oracle cho phép định nghĩa các ràng buộc toàn vẹn cho các cột trong table hay giữa các table với nhau để buộc chúng tuân theo một quy luật nào đó nhằm mục đích : Kiểm tra ràng buộc toàn vẹn dữ liệu khi thêm vào, cập nhật hay xóa dữ liệu; ngăn cản việc xóa 1 table khi có sự phụ thuộc của table này vào các table khác. Oracle có các kiểu ràng buộc sau: -NOT NULL : cột không được rỗng. -UNIQUE : đánh dấu một cột hoặc một tập các cột như một khóa duy nhất, không thể có 2 dòng trong table chứa cùng giá trị cho khóa này. -PRIMARY KEY : tương tự như khóa đơn nhất, một khóa chính bắt buộc sự duy nhất của một cột hay một tổ hợp các cột. III-8 -FOREIGN KEY : Khóa ngoại cung cấp các luật ràng buộc tham khảo toàn vẹn không những bên trong 1 table mà còn giữa các table. -CHECK : ràng buộc này định nghĩa một điều kiện mà mỗi dòng phải thỏa trong 1 table khi đưa 1 giá trị vào 1 cột đã được định nghĩa. 1.2.5. Từ điển dữ liệu Từ điển dữ liệu là một trong những phần quan trọng nhất của Oracle DBMS. Từ điển dữ liệu bao gồm một tập hợp các table và view cung cấp các hướng dẫn tham khảo chỉ đọc về CSDL. Từ điển dữ liệu chứa đựng : -Tên username của người sử dụng Oracle -Các quyền và tập quyền được cấp. -Tên của các đối tượng CSDL (table, view, index, synonym,…) -Các ràng buộc được cấp cho table. -Các thông tin cập nhật. Từ điển dữ liệu được tạo ra khi ta tạo 1 CSDL. Từ đó bất cứ lúc nào CSDL đang hoạt động thì từ điển dữ liệu cũng luôn được Oracle RDBMS cập nhật. Từ điển dữ liệu là một tham khảo đến toàn bộ CSDL người dùng. Đây là một tài nguyên có giá trị đối với người dùng cuối, người thiết kế ứng dụng và người quản trị CSDL. Các hoạt động của RDBMS cũng dựa trên từ điển dữ liệu để lưu và kiểm tra các thông tin về CSDL. 1.3. Data Access 1.3.1. SQL & PL/SQL SQL: Một hệ quản trị CSDL cần có một ngôn ngữ cho phép các người sử dụng truy xuất dữ liệu. Ngôn ngữ truy vấn có cấu trúc (SQL) là ngôn ngữ được dùng trong hầu hết các hệ CSDL quan hệ. -SQL là 1 ngôn ngữ tựa tiếng Anh. -SQL là 1 ngôn ngữ phi thủ tục : bạn chỉ rõ thông tin gì bạn cần mà không cần chỉ ra cách thực hiện như thế nào. Nói cách khác, SQL không yêu cầu bạn chỉ phương pháp truy xuất dữ liệu. -SQL xử lý các tập hợp mẫu tin hơn là một mẫu tin đơn lẻ ở 1 thời điểm. Dạng chung nhất của tập các mẫu tin là một bảng. -SQL có thể được dùng bởi nhiều người sử dụng bao gồm người quản trị dữ liệu, các người lập trình ứng dụng, người quản lý, người dùng cuối. -SQL cung cấp nhiều lệnh cho nhiều công việc khác nhau : +truy vấn dữ liệu +thêm vào, cập nhật và hủy bỏ các hàng của bảng +tạo lập, thay đổi và hủy bỏ các đối tượng CSDL +kiểm soát truy xuất đến CSDL và các đối tượng CSDL +bảo đảm tính nhất quán dữ liệu. PL/SQL: (Procedure Language) PL/SQL là một mở rộng của SQL, kết hợp vào trong đó rất nhiều đặc tính của các ngôn ngữ lập trình gần đây. Nó cho phép các thao tác dữ liệu và các câu lệnh query SQL bao gồm các đoạn mã có cấu trúc khối và tính thủ tục, làm cho PL/SQL thành một ngôn ngữ xử lý giao dịch mạnh mẽ. Các ưu điểm của PL/SQL: -Cấu trúc khối : chương trình có thể chia thành các khối luận lý. -Điều khiển theo luồng : dùng các câu lệnh có điều kiện, lặp vòng , rẽ nhánh để điều khiển luồng thủ tục của chương trình, quyết định khi nào SQL hoặc tác vụ khác được thi hành. -Tính cơ động : chương trình có thể chuyển đổi đến bất kỳ môi trường nào mà Oracle và PL/SQL đã được hỗ trợ. -Tính thống nhất -Hiệu quả. III-9 1.3.2. Transaction (giao dịch) Giao dịch là một tác vụ thao tác CSDL bao gồm một loạt các thay đổi trên một hay nhiều table. Có 2 lớp : DML & DDL transaction -DML transaction : gồm có một số lệnh DML mà Oracle xem như một thực thể đơn hoặc một đơn vị công việc luận lý. -DDL transaction : chỉ có thể chứa 1 lệnh DDL. Đối với một giao dịch, hoặc là nó thay đổi CSDL một cách hoàn chỉnh hoặc là không thực hiện bất kỳ sự thay đổi CSDL nào. Một giao dịch bắt đầu khi thực hiện lệnh DML và DDL đầu tiên và kết thúc khi xảy ra 1 trong các trường hợp sau : +COMMIT / ROLLBACK +Lệnh DDL được đưa ra +Lỗi bên trong +Thoát khỏi chương trình SQL * Plus 1.4. Programmatic Constructs 1.4.1.Procedures & Packages Oracle cho phép truy xuất và xử lý thông tin CSDL bằng cách sử dụng các đối tượng CSDL thủ tục , gọi là các đơn vị chương trình PL/SQL. Ví dụ như ta có :Procedure, Function, Package. -Oracle có thể thực hiện procedure và function giống như thực hiện một câu lệnh SQL riêng lẻ. Procedure hoặc function là một đối tượng dữ liệu, gồm tập hợp các câu lệnh, được lưu trong CSDL, được thực thi như một unit để giải quyết một vấn đề nào đó hoặc thực hiện một số công việc có liên quan. -Procedure và function rất giống nhau, chỉ khác là function thì luôn luôn trả về giá trị cho chương trình gọi nó, còn procedure thì không. Thông thường người ta gọi chung procedure và function là "procedure". -Procedure cung cấp một số thuận lợi trong các mặt sau : +Security : bảo mật dữ liệu +Perfomance : +Memory allocation : sử dụng share memory +Productivity : thuận tiện cho việc thiết kế application +Integrity : bảo đảm được những ràng buộc và tính trong suốt Package cung cấp phương pháp tập hợp các procedure, function như một unit trong CSDL. Package cung cấp một số thuận lợi trong các mặt sau : +Nhóm các procedure và các variable +phân biệt định nghĩa package và thân package +khai báo các procedure, variable, constant và cursor 1.4.2.Database Triggers Oracle cho phép định nghĩa các procedure, được tự động thực thi khi có một câu lệnh INSERT, UPDATE hoặc DELETE được thực hiện vào bảng. Các procedure này được gọi là các database trigger. -Trigger tương tự như procedure, có thể chứa một số câu lệnh SQL và PL/SQL, được thực thi như một unit và có thể gọi các procedure khác. Tuy nhiên procedure và trigger khác nhau ở cách chúng được gọi. Trong khi procedure được gọi bởi user hoặc application thì trigger được thực thi trực tiếp bởi Oracle khi có 1 lệnh INSERT, UPDATE hoặc DELETE (đã có trigger) được thực hiện, không phân biệt user nào đang nối kết hay application nào đang thực thi. -Một trigger có 3 phần chính : +Triggering event hoặc statement : câu lệnh SQL, xác định khi nào trigger được thực hiện (INSERT, UPDATE, DELETE). III-10 +Trigger restriction : là một biểu thức logic , nếu có giá trị TRUE thì trigger action sẽ được thực hiện, nếu có giá trị FALSE thì không thực hiện. +Trigger action : gồm một số câu lệnh SQL và PL/SQL. -Một trigger có thể có một trong 2 dạng : enabled hoặc disabled. III-11 2.CONTEXT CARTRIDGE 2.1.Giới thiệu ConText Cartridge (Oracle 8) cho phép các khả năng tìm kiếm, khôi phục và xem dữ liệu dạng văn bản (text) được lưu trong CSDL của Oracle 8. Ngoài ra ConText còn cho phép xử lý ngôn ngữ cao cấp các văn bản tiếng Anh. Với ConText chúng ta có thể sử dụng SQL và PL/SQL kết hợp văn bản cao cấp và chức năng ngôn ngữ vào các ứng dụng sau : -Text Processing : ConText cho phép tìm kiếm và xem văn bản, cũng như phục hồi văn bản một cách đầy đủ. Text Query cho phép những khả năng tìm kiếm rất lớn với những lựa chọn khác nhau, bao gồm : biểu thức logic, tìm gần đúng, đồng nghĩa. -Linguistic Processing : Nếu tài liệu chứa văn bản tiếng Anh, ConText cho phép phân tích ngôn ngữ sâu hơn. Từ quá trình Linguistic Processing , Chúng ta có thể thực hiện truy vấn theo chủ đề, phục hồi lại tài liệu dựa trên những chủ đề chính được tìm thấy trong tài liệu. Ngoài ra ConText còn cho phép quá trình Linguistic Processing đối với những tài liệu riêng biệt dưới dạng Linguistic services. Linguistic Services cho phép xem các tài liệu cao cấp như là danh sách các đề mục và tóm tắt văn bản (gọi là Gists). Để Text Query và Theme Query được thực hiện, những cột CSDL được dùng để lưu văn bản phải được định nghĩa như là những text columns và các text indexes và theme indexes phải được tạo ra cho những cột này. Ngày nay phần lớn các dữ liệu không được lưu dưới dạng dữ liệu có cấu trúc, chúng được lưu dưới dạng văn bản với những dạng khác nhau : letters, memos, reports, notes, e-mail, … Những dạng tài liệu này thường khó tìm kiếm, phục hồi và thường không thể tóm tắt được. Oracle giải quyết vấn đề quản lý văn bản với ConText. ConText quản lý dữ liệu không có cấu trúc cũng nhanh và dễ dàng như dữ liệu có cấu trúc. 2.2.Một số khái niệm : -Documents : Text & Document được định nghĩa gần giống nhau. Tuy nhiên , Text là khái niệm tổng quát hơn, xác định tập hợp dữ liệu không có cấu trúc được lưu trữ trong một cột CSDL hoặc trong 1 file hệ thống. Trong môi trường ConText , document là một văn bản được lưu trong một cột của một dòng của CSDL hoặc là một con trỏ chỉ tới một file hệ thống. -Text Storage : có 2 cách +internal : document được lưu trong 1 text column. +external : document được lưu trong những file của hệ điều hành. -Search options : +Từ đơn hoặc câu +Tổ hợp các từ và các câu +Tìm gần đúng, tìm từ phát âm giống, tìm từ sử dụng thay thế. -Query Expressions : được tạo nên bởi những từ và những câu cùng với những toán tử và những ký tự đặc biệt khác tạo ra tiêu chí tìm kiếm. -Hitlists : Khi query được thực hiện, ConText tạo ra danh sách tất cả document thỏa tiêu chí tìm kiếm cùng với score . Đó là hitlist. -Scoring : là cách để ConText đánh giá document nào trong hitlist quan hệ nhiều nhất đến cái mà user cần dựa trên tiêu chí tìm kiếm. -Result Tables : là vùng nhớ để lưu các output từ những truy vấn của user. Những bảng này được cấp phát bởi chương trình ứng dụng hoặc thủ tục và tồn tại cho đến khi được xóa bởi ứng dụng. III-12 2.3.Text Query Text Query tìm kiếm những cột văn bản trong các bảng truy vấn theo điều kiện đã được đặc tả (những từ hoặc những câu), và trả về tất cả các dòng (các tài liệu) có chứa những từ hay những câu này. Ngoài ra , mỗi tài liệu được trả về cùng với một con số, đó là số lần xuất hiện điều kiện truy vấn trong tài liệu và nó biểu hiện sự liên quan của tài liệu đến truy vấn. ConText cho phép thực hiện Text Query đối với các biểu thức logic và các biểu thức mở rộng.Các phương pháp để thực hiện text query : +Two-step Query +One-step Query +In-memory Query Để thực hiện được text query chúng ta phải thực hiện các công việc sau : +Tạo text index cho text column +Tạo Bảng kết quả (đối với two-step query). Để phục hồi lại các document có liên quan, Text Query phải hoàn thành các công việc sau đây: +Nhận biết những document trong bảng đáp ứng điều kiện query +Đếm số lần đáp ứng điều kiện tìm kiếm của các document. +Trả về những dòng của bảng thỏa điều kiện để hiển thị hoặc sử dụng vào mục đích khác trong ứng dụng. Các bước thực hiện Text Query (Hình 1) -Khởi động Context Servers -Tạo Policy (Định nghĩa cột văn bản) -Tạo Text index cho cột văn bản -Tạo bảng kết quả (two-step query) -Thực hiện Query *Khởi động Context Servers -Context servers chỉ có thể được khởi động bởi user CTXSYS Oracle. -Để tạo được Text index cho cột văn bản, Context servers phải được khởi động với DDL(D) personality. Ngoài ra để thực hiện Text query, Context servers phải được khởi động với Query(Q) personality. -Có thể khởi động Context servers bằng 2 cách : ctxsrvx executable hoặc ctxctl utility. -Ví dụ dùng ctxsrvx executable $ ctxsrvx -user ctxsys/ctxsys -personality DQ -log ctx.log & trong đó ctxsys/ctxsys : user name / password ctx.log : tên file lưu thông tin context *Tạo Policy (Định nghĩa cột văn bản) -Định nghĩa một cột dữ liệu như là một cột văn bản. Cột văn bản là một cột mà policy đã được tạo cho nó. -Một policy xác định cột để chứa văn bản, phương pháp lưu văn bản và những options khác để Context tạo index cho cột. -Để tạo policy cho một cột, sử dụng thủ tục CTX_DDL.CREATE_POLICY với các thông số sau : policy name, tên cột cho policy. Ví dụ : Exec ctx_ddl.create_policy('ctx_docs' , 'ctxdev.docs.text'); III-13 Ctx_docs : tên policy Ctxdev : tên user Docs : tên table Text : tên cột tạo policy *Tạo Text index cho cột văn bản -Để tạo text index cho cột văn bản ta gọi thủ tục CREATE_INDEX trong CTX_DDL PL/SQL Package và đặc tả policy cho cột. Ví dụ : Exec ctx_ddl.create_index('ctx_docs'); Ctx_docs : tên policy đã được tạo trước đó -Sau khi tạo text index cho cột , Context server với Query personality có thể thực hiện quá trình text query. *Tạo bảng kết quả (two-step query) -Để thực hiện two-step query, cần phải tạo bảng kết quả (result table) để lưu danh sách các textkeys và scores của những tài liệu thỏa điều kiện query. -Bảng kết quả có thể có tên bất kỳ , nhưng nó phải có cấu trúc như sau : +TEXTKEY varchar2(64) : Lưu textkeys của những dòng thỏa query +SCORE number : lưu score của mỗi dòng +CONID number : lưu CONTAINS ID -Ví dụ : create table ctx_temp(textkey varchar2(64) , score number , conid number ); *Thực hiện Text Query -Các phương pháp để thực hiện text query : +Two-step Query +One-step Query +In-memory Query -Two-step query Trong bước thứ nhất , gọi thủ tục CONTAINS trong package CTX_QUERY để điền vào bảng kết quả (đã được tạo ra trước đó). Bước thứ hai, truy vấn bảng kết quả để trả về danh sách các tài liệu. Ví dụ : 1.Begin Ctx_query.contains('ctx_docs' , 'oracle' , 'ctx_temp'); End; 2.Select score,title From ctx_temp,docs Where ctx_temp.textkey=docs.pk Order by score desc; -One-step query Sử dụng Context SQL function CONTAINS trực tiếp trong mệnh đề WHERE của câu lệnh SELECT. Ví dụ : Select score (1) , pk , title From docs III-14 Where contains(text , 'oracle', 1) > 0 Order by score (1) desc ; -In-memory Query Sử dụng các thủ tục trong package CTX_QUERY như : OPEN_CON , CLOSE_CON , FETCH_HITS. OPEN_CON mở 1 cursor trong buffer query và thực hiện query. Kết quả query được lưu trong buffer. FETCH_HIT cho xem kết quả, và CLOSE_CON xóa cursor đi. Ví dụ : Declare Score char(5); Pk char(5); Title char(40); Curid number; Begin Curid:= ctx_query.open_con( policy_name => 'ctx_docs' , Text_query => 'oracle' , Score_sorted => true , Other_cols => 'title' ); While (ctx_query.fetch_hit (curid , pk , score , title) > 0) Loop Dbms_output.put_line(score || pk || substr(title,1,50)) ; End loop; Ctx_query.close_con(curid); End; 2.4.Theme Query Theme Query tìm kiếm những cột văn bản của những bảng truy vấn theo những chủ đề (đề mục) được đặc tả trước và trả về tất cả những dòng (những tài liệu) có những chủ đề này. Một theme diễn tả một chủ đề chính hoặc một đề tài được triển khai trong tài liệu. Để thực hiện được theme query chúng ta phải thực hiện các công việc sau: +Tạo theme index cho text column +Tạo Bảng kết quả (đối với two-step query). Mỗi tài liệu được trả về bởi Theme Query có 1 score. Score trong theme query biểu diễn sự liên quan của tài liệu đối với query, mỗi score là trọng số của theme trong tài liệu. Khi thực thi theme query, chúng ta miêu tả một chuỗi truy vấn, có thể là một cụm từ hoặc một câu (có hoặc không có toán tử), ConText trả về danh sách các document thỏa điều kiện cùng với score của nó. Một số toán tử có thể được sử dụng trong chuỗi truy vấn như : accumulate (,), or (|), and (&), minus (-), not (~), weight (*), threshold (>), max (:) . Các bước thực hiện Theme Query (Hình 2) -Khởi động Context server -Định nghĩa cột văn bản -Tạo theme index cho cột văn bản -Tạo bảng kết quả (two-step query) -Thực hiện query *Khởi động Context server III-15 -Theme index được thực hiện bởi context server với DDL (D) personality và theme query được thực hiện bởi context server với Query (Q) personality -Ví dụ : $ ctxsrv -user ctxsys/ctxsys -personality DQ -log ctx.log & ctxsys/ctxsys : user name / password ctx.log : tên log file *Định nghĩa cột văn bản -Định nghĩa cột văn bản cho theme index cũng tương tự như cho text index, chỉ khác nhau ở chỗ sử dụng lexer khác với lexer đã sử dụng trong text index policy (BASIC LEXER) -Để tạo theme index policy , sử dụng thủ tục CREATE_POLICY trong PL/SQL với lexer preference là THEME_LEXER. -Ví dụ : Begin Ctx_ddl.create_policy ('ctx_thidx' , 'ctxdev.docs.text' lexer_pref => 'THEME_LEXER'); End; Ctx_thidx : tên policy Ctxdev.docs.text : user -tên bảng - tên cột văn bản *Tạo theme index cho cột văn bản -Để tạo theme index cho cột , ta gọi thủ tục CREATE_INDEX trong CTX_DDL và miêu tả theme index policy cho cột đó. -Ví dụ : exec ctx_ddl.create_index ('ctx_thidx') ctx_thidx : tên policy -Sau khi thực hiện theme index cho cột , Context server với personality Query có thể thực hiện theme query. *Tạo bảng kết quả (two-step query) -Cấu trúc của bảng kết quả cho theme query và phương pháp tạo bảng kết quả giống như bảng kết quả trong text query. -Ví dụ : create table ctx_theme_temp (textkey varchar2(64) , score number , conid number ); *Thực hiện theme query -Các phương pháp để thực hiện theme query : +Two-step Query +One-step Query +In-memory Query -Two-step query Trong bước thứ nhất , gọi thủ tục CONTAINS trong package CTX_QUERY để điền vào bảng kết quả (đã được tạo ra trước đó). Bước thứ hai, truy vấn bảng kết quả để trả về danh sách các tài liệu. III-16 Ví dụ : 1.Begin Ctx_query.contains('ctx_thidx' , 'oracle' , 'ctx_theme_temp'); End; 2.Select score , pk , title From ctx_theme_temp,docs Where ctx_theme_temp.textkey=docs.pk Order by score desc; -One-step query Sử dụng Context SQL function CONTAINS trực tiếp trong mệnh đề WHERE của câu lệnh SELECT. Ví dụ : Select score (1) , pk , title From docs Where contains(text , 'oracle', 1 , 'ctx_thidx') > 0 Order by score (1) desc ; -In-memory Query Sử dụng các thủ tục trong package CTX_QUERY như : OPEN_CON , CLOSE_CON , FETCH_HITS. OPEN_CON mở 1 cursor trong buffer query và thực hiện query. Kết quả query được lưu trong buffer. FETCH_HIT cho xem kết quả, và CLOSE_CON xóa cursor đi. Ví dụ : Declare Score char(5); Pk char(5); Title char(40); Curid number; Begin Curid:= ctx_query.open_con( policy_name => 'ctx_thidx' , Text_query => 'oracle' , Score_sorted => true , Other_cols => 'title' ); While (ctx_query.fetch_hit (curid , pk , score , title) > 0) Loop Dbms_output.put_line(score || pk || substr(title,1,50)) ; End loop; Ctx_query.close_con(curid); End; 2.5.Query Methods ConText có 3 phương pháp khác nhau để thực hiện truy vấn : -Two-step query : trong bước thứ nhất , sử dụng thủ tục PL/SQL để tạo ra 1 hitlist và lưu kết quả vào 1 bảng kết quả. Bước thứ hai, dùng lệnh SELECT để chọn kết quả từ bảng kết quả. -One-step query : tạo một câu lệnh SQL, sử dụng chức năng truy vấn của Context để tìm kiếm và trả về một tập hợp những dòng và cột trong bảng được chọn trực tiếp cho user. -In-memory query : sử dụng một bộ đệm và một cursor chỉ tới bộ đệm trả về kết quả truy vấn, kết quả được ghi vào bộ đệm. Chúng ta tìm kết quả và đóng cursor. III-17 Mỗi phương pháp truy vấn đều có những ưu điểm và khuyết điểm của mình. Chúng ta cần phải chọn lựa cho đúng khi phát triển ứng dụng của mình. 2.6.Linguistic services ConText Linguistic được sử dụng để phân tích nội dung các tài liệu tiếng Anh. ConText Linguistic cho phép xem xét document ở nhiều khía cạnh khác nhau, cho phép người sử dụng có thể nhanh chóng duyệt qua nội dung của tài liệu và lấy được nội dung mà họ quan tâm. Kết quả của ConText Linguistic có thể là một trong các dạng sau : +Theme : những khái niệm chính của tài liệu +Generic Gist : những đoạn tài liệu chứa những nội dung chính. +Point-of-view Gist : những đoạn tài liệu chứa một chủ đề cho trước. Để có thể sử dụng được ConText Linguistic , cần phải : +Text được lưu trong 1 cột +Cột phải có 1 policy +ConText Server chạy với Linguistic Personality. Các bước thực hiện Linguistic services (Hình 3) -Khởi động Context Servers -Tạo Policy (Định nghĩa cột văn bản) -Tạo các bảng Linguistic Output -Thực hiện Linguistic Output -Query document (Themes, Gists) 2.7.Thực hiện Context Trước khi làm việc với ConText , cần phải kiểm tra những điều sau : -Oracle 8 đã được cài đặt và đang hoạt động. -Các tablespaces đã được tạo ra. -Các user Oracle đã được tạo ra và được cấp cho những quyền cần thiết. Để có thể bắt đầu làm việc với ConText , chúng ta phải trả lời các câu hỏi sau : -Đã tạo bảng để lưu văn bản chưa? -Text đã được load vào bảng chưa? -ConText đã được cài đặt chưa? -ConText đã được khởi tạo tham số enabled chưa? -Quyền CTXAPP đã được gán cho user chưa? Sau khi thực hiện xong các bước trên, chúng ta có thể bắt đầu làm việc với ConText. III-18 Hình 1. Text Query Task Map III-19 Hình 2. Theme Query Task Map III-20
DMCA.com Protection Status Copyright by webtailieu.net