Oracle Textotndnld.oracle.co.jp/products/iserver/oracle9i/pdf/Oracle_Text.pdf ·...

30
Oracle Text オラクル・テクニカル・ホワイト・ペーパー 2002 3

Transcript of Oracle Textotndnld.oracle.co.jp/products/iserver/oracle9i/pdf/Oracle_Text.pdf ·...

Page 1: Oracle Textotndnld.oracle.co.jp/products/iserver/oracle9i/pdf/Oracle_Text.pdf · 合クエリー、つまりテキストと構造化リレーショナル属性に関する問合せに対し

Oracle Text

オラクル・テクニカル・ホワイト・ペーパー 2002年 3月

Page 2: Oracle Textotndnld.oracle.co.jp/products/iserver/oracle9i/pdf/Oracle_Text.pdf · 合クエリー、つまりテキストと構造化リレーショナル属性に関する問合せに対し

Oracle Text Oracle Corporation発行の 「Oracle Text」の翻訳版です 2

Oracle Text

概要 ...................................................................................................................... 3 どこにでもあるテキスト .................................................................................. 3 Oracle Text............................................................................................................ 4 アーキテクチャ .................................................................................................. 5

Datastoreオブジェクト................................................................................. 5 Filterオブジェクト ....................................................................................... 6 Sectionerオブジェクト................................................................................. 6 Lexerオブジェクト ...................................................................................... 6

Lexerプリファレンス ............................................................................. 7 言語固有の機能............................................................................................. 7 西洋の諸言語 ........................................................................................... 7 マルチバイト言語 ................................................................................... 8

索引付けエンジン......................................................................................... 8 統合化テキスト検索機能の利点....................................................................... 9 Oracle Textの機能............................................................................................. 10 索引の型....................................................................................................... 10 索引のメンテナンスと同期化 ................................................................... 11 並列的な索引付け....................................................................................... 11 索引のパーティション化 ........................................................................... 12 クエリー・オペレータ ............................................................................... 12 国際化........................................................................................................... 14 ドキュメント・サービス ........................................................................... 16 ハイライト ............................................................................................. 16 マークアップ ......................................................................................... 16 テーマ抽出 ............................................................................................. 17 要旨 ......................................................................................................... 18

先進的な言語機能....................................................................................... 18 分類とクラスタリング ......................................................................... 18 ナレッジ・ベース ................................................................................. 20

パフォーマンス ................................................................................................ 21 Oracle Textの使用............................................................................................. 22

Oracle Textによる索引作成 ....................................................................... 22 XMLのサポート ......................................................................................... 24 XMLドキュメントの内容と構造の検索 ................................................. 25

Oracle Ultra Searchおよび Oracle Internet File System................................... 26 Oracle Ultra Search ....................................................................................... 26 Oracle Internet File System........................................................................... 27

JDeveloper Wizard.............................................................................................. 28 Oracle9i Release 2の新機能 ............................................................................. 28 結論 .................................................................................................................... 29 参考資料 ............................................................................................................ 29

Page 3: Oracle Textotndnld.oracle.co.jp/products/iserver/oracle9i/pdf/Oracle_Text.pdf · 合クエリー、つまりテキストと構造化リレーショナル属性に関する問合せに対し

Oracle Text Oracle Corporation発行の 「Oracle Text」の翻訳版です 3

Oracle Text

概要

Oracleの統合的フルテキスト検索テクノロジである Oracle Textは、Oracle9i

Enterprise Editionおよび Standard Editionの一部です。Oracle Textでは、Oracleデー

タベース、ファイル、ウェブに格納されたテキストとドキュメントに索引を付け、

これらを検索し、分析するために、標準 SQLが使用されます。Oracle Textでは、

ドキュメントの言語学的分析が行え、またキーワード検索、コンテキスト・クエ

リー、ブール演算、パターン照合、混合テーマ・クエリー、HTML/XMLセクショ

ン検索など、様々な方法を使用してテキストの検索ができます。Oracle Textは混

合クエリー、つまりテキストと構造化リレーショナル属性に関する問合せに対し

て優れています。

Oracle Textでは検索結果を、フォーマットなしのテキスト、用語がハイライトさ

れた HTML、オリジナルのドキュメント・フォーマットなど、様々なフォーマッ

トで表わすことができます。Oracle Textは複数の言語をサポートし、検索の質を

高めるため、先進的な関連性ランキング・テクノロジを使用しています。

どこにでもあるテキスト

過去 10年間、企業はデータベース・システムに格納された構造化データへの迅速

なアクセスを可能にするシステムに、多額の投資を行ってきました。しかしこの

データは企業情報全体の一部分でしかありません。大量のデータが、ドキュメン

ト、ウェブ・ページ、マニュアル、レポート、Eメール、ファックス、プレゼン

テーションに、テキストとして存在します。これら価値ある戦略的ビジネス情報

ソースは、しばしばアクセス不能であり、コスト対効果に優れた方法で管理され

ていません。組織の情報にアクセスするユーザーは、イントラネット・ポータル

を訪れる従業員であろうと、カタログを検索するバイヤーであろうと、その望む

ものを見つけるためにテキスト検索インフラストラクチャによる高度なサポート

を必要とします。

様々な組織には十分に利用されていない多くのテキストがあります。テキスト資

産は、もはや静的、物理的な存在ではありません。最新のテクノロジを使用する

ことで、企業は、多くのソースから集めたテキスト情報を格納するグローバルに

相互接続されたシステムを構築できます。重要なテキスト資産も、見つけだすこ

とができずに、隠れていることがあります。わるい検索機能は、反対に高くつき

ます。

組織のテキスト情報の価値を開放することは、これまで長い間難問とされていま

した。過去、テキストの検索と管理には他のビジネス・データとは別の一群のテ

クノロジが必要であると考えられていました。この誤った認識のため、組織は複

多くの企業では構造化データよりテキスト・データを大量に所有していますが、概してそのテキスト・データを有効利用できずにいます。

Page 4: Oracle Textotndnld.oracle.co.jp/products/iserver/oracle9i/pdf/Oracle_Text.pdf · 合クエリー、つまりテキストと構造化リレーショナル属性に関する問合せに対し

Oracle Text Oracle Corporation発行の 「Oracle Text」の翻訳版です 4

数の格納・検索システム、複数の開発環境という負担を負っていました。これは、

企業の全情報資産の効果的な統合を妨げています。

この誤った認識の名残りとして、今日多くの企業はテキスト検索のニーズと構造

化データ(データベース)検索のニーズのために、それぞれ別々の製品を購入し

ています。この方法は、別々の製品の購入、統合、運用、メンテナンスというラ

イフサイクル全体のコストを高めるだけでなく、アプリケーションの開発でも貧

弱なパフォーマンスと長い待ち時間をもたらします。その上、特別なサーバーの

サプライヤから企業データベースの高い信頼性とスループット、そしてマルチプ

ラットフォームのスケーラビリティが得られることは稀です。

テキストとその他非構造化データをも含む全企業情報にまで、リレーショナル・

データベース・システムの機能と利点を拡張できるとしたらどうでしょうか?結局、

テキスト・データは実際のデータベースのインフラストラクチャを保証する実際

のデータであり、アプリケーション開発のための立証済みのツールなのです。こ

の文書では、Oracle Textの形態によるこのようなアプローチを検討します。

Oracle Text

Oracle Text(旧 interMedia text)は、完全なテキスト検索ソリューションを提供し

ます。Oracle Textは Oracle9i Enterprise Editionおよび Standard Editionの両方に含

まれています。Oracleデータベース・ユーザーは Oracle Textがあるため、別のテ

キスト検索製品を評価・購入し統合する必要がありません。

Oracle Textは従来のフルテキスト検索アプリケーション、たとえばウェブサイト

検索、Eビジネス・カタログ、ドキュメント分類およびルーティングのアプリケー

ションや、テキスト・ウェアハウジング、ドキュメント・ライブラリ、アーカイ

ブその他のために、特化したテキスト索引を提供します。

Oracle Textは、複数の異なるドキュメント・フォーマットから内容をフィルタリ

ングし抽出できます。またMicrosoft OfficeTMのファイル・フォーマット、Adobe

PDFTM系のフォーマット、HTMLと XMLなど、馴染みのあるものを含む 150以

上のドキュメント・フォーマットをサポートします。

Oracle Textは市販製品のうち最高の多言語諸機能を備え、ヨーロッパの諸言語(英

語、フランス語、スペイン語、ドイツ語その他)、日本語、韓国語、タイ語およ

び中国語(繁体字、簡体字)で書かれたドキュメントの検索をサポートします。

Oracle9i の一部として機能する Oracle Textは、次のように Oracle9i の主要な企業機能と透過的に統合され、これら機能の恩恵を受けます。

• データのパーティショニング(スループットと可用性向上のため)

• Real Application Clusteringまたは並列サーバー(サーバーのスケーラビリ

ティを最大にするため)

• 問合せの最適化

• ツールと開発環境

• 管理と管理性

• 統合的セキュリティ

Oracle Text: オラクルのフルテキスト検索機能は、Oracle9i Standard EditionおよびEnterprise Editionsに搭載されています。

Page 5: Oracle Textotndnld.oracle.co.jp/products/iserver/oracle9i/pdf/Oracle_Text.pdf · 合クエリー、つまりテキストと構造化リレーショナル属性に関する問合せに対し

Oracle Text Oracle Corporation発行の 「Oracle Text」の翻訳版です 5

このような様々な面での統合化は、システム管理者にとっても大きな恩恵です。

システム管理者は組織のテキスト資産の管理を学ぶためパラダイムの変更をする

必要がないからです。

Oracle Textは、Oracle9i Application Server Portal(Oracle9i AS Portal)、Oracle

E-Business Suite、Oracle eXchange、Oracle Ultra Search、Oracle Internet File System

など、他の Oracle製品の中でも中核の位置を占める製品です。Oracle Textは、

Oracle.comや Oracle Technology Networkなど、オラクルのウェブサイトの原動力

です。

アーキテクチャ

この項では、Oracle Textでテキストを処理するメカニズムについて説明します。

このプロセスはパイプラインと考えることができます(図 1)。この項では各ス

テージについて説明し、また各ステージで利用可能ないくつかのオプションにつ

いて説明します。

図 1: 索引付けのアーキテクチャ

Datastoreオブジェクト

Oracle Textが索引を付けるテキストは、データベース、ファイル・システムまた

は URLの中に格納できます。URLにデータを格納した場合、他のサーバー上に

リモートで格納され、HTTPまたはFTPプロトコルを使用しアクセスされるドキュ

メントをデータベースから管理できます。格納ロケーションには次のような選択

肢があります。

データベース内: 索引が付けられるテキストは、データベース内の任意の文字列

(普通、最大 4KBのテキストを収容)または LOB(Large Object - 最大 4GBの文

字データまたはバイナリ・データを収容)に格納されます。

Token

Mark-up

Text DocumentsDatastore Filter Sectioner Lexer Indexing

Engine

O/S file system

Stoplist

Wordlist

Internet

Markup

Text Indexes

Page 6: Oracle Textotndnld.oracle.co.jp/products/iserver/oracle9i/pdf/Oracle_Text.pdf · 合クエリー、つまりテキストと構造化リレーショナル属性に関する問合せに対し

Oracle Text Oracle Corporation発行の 「Oracle Text」の翻訳版です 6

ファイル・システム内: 索引が付けられるテキストは、データベース・サーバー・マシンからアクセス可能な任意のファイル・システムに格納されます。

ウェブ上: 索引が付けられるテキストは、インターネットまたはイントラネット上の URLからアクセスできます。

ユーザーによる定義:索引が付けられるテキストは、任意の PL/SQLプロシージャ

の出力です。このためユーザーは索引付けの対象を完全にコントロールできます。

作成された索引は、常時データベースに保持されます。

Filterオブジェクト

当初、ワールドワイド・ウェブの大部分は、HTMLファイルとプレーンテキスト・

ファイルで構成されていました。しかし、徐々にその他のファイル・フォーマッ

トがイントラネットやエクストラネットで使用され始めました。Adobe PDFTMは

マニュアル、販売用パンフレットその他のオンライン・バージョンで広く使用さ

れています使用されています。様々なワープロ独自のフォーマットによる文書も、

しばしばウェブサイトその他で直接保存されています。

Oracle Textは、Microsoft OfficeTMのファイル・フォーマット、Adobe PDFTM系の

フォーマット、HTML、XMLなど、馴染みのあるものも含む 150以上のファイル・

フォーマットのフィルタを備え、これらフォーマットは 1コラム内に混在できま

す。フィルタの出力は HTMLフォーマットで行われます。このためフィルタは、

ドキュメントに示された見出しや表題などの情報を維持でき、ドキュメントの特

定部分の検索に使用されます。

またアプリケーション開発者は、フィルタ・モジュールを独自のカスタム・フィ

ルタ、あるいはサードパーティから購入したフィルタに交換できます。カスタム・

フィルタは、2つの引数を取る実行可能プログラムまたはスクリプトです。第 1

の引数はフォーマット済み入力テキストを含んだファイル、第 2の引数はフィル

タリング後の出力が書き出されるファイルの名称です。

必要に応じ、カスタム・フィルタは標準の“autorecognize”フィルタをコールできま

す。これによりカスタム・フィルタは、ビジネスに固有のどんなファイル・フォー

マットも処理できる一方で、あらゆる標準ファイル・フォーマットを標準フィル

タに引き渡すことが可能となります。

Sectionerオブジェクト

Sectionerオブジェクトは、各テキスト・ユニットの内容セクションを特定します。

これらセクションは通常、あらかじめ定義された HyperText Markup Language

(HTML)または eXtensible Markup Language(XML)によるセクションです。また

選択によっては、Sectionerはあらゆるタグをセクションのデリミタとして処理で

きます。例: <TITLE>XML Handbook</TITLE>このため、WITHINオペレータを

使用してタグ間の検索ができます。WITHINの使用については、XML検索の項で

説明します。

Lexerオブジェクト

Lexerは、Sectionerからの出力をワードまたはトークンに分離します。西ヨーロッ

パ言語の最も単純なケースの場合、Lexerはテキストを複数の連続的な英数文字列

Page 7: Oracle Textotndnld.oracle.co.jp/products/iserver/oracle9i/pdf/Oracle_Text.pdf · 合クエリー、つまりテキストと構造化リレーショナル属性に関する問合せに対し

Oracle Text Oracle Corporation発行の 「Oracle Text」の翻訳版です 7

に分割するのみです。したがって、次の文字列、 Aha! It’s the 5:15 train, coming here now!

は、複数のワードに分割されます。ただし句読点、特殊記号は除かれます。 “aha it s the 5 15 train coming here now”

Lexerは普通ストップワードを取り除きます。ストップワードはアプリケーション

開発者により定義された、あるいはデフォルト・リストから取り出された普通の

語です。したがって上のリストはおそらく次のようになるでしょう。 “aha * * * 5 15 train coming * now”

取り除かれたストップワードを表すアスタリスクに注意してください。実際には、

ストップワードに索引は付きませんが、ストップワードがその位置にあることは、

索引で注記されます。検索では、どのストップワードもフレーズ中で使用された

ストップワードに一致します。たとえば、「kicking the ball」は「kicking a ball」と

一致しますが、「kicking ball」とは一致しません。

ストップワードのセットは、アプリケーションで指定される場合があります。数

字はすべて暗黙的に、ストップワードとして定義される場合があります。

Lexerプリファレンス

テキストをどのようにトークンに細分するかについて、様々なオプションが定義

できます。たとえば、文字の結合を定義でき、この結果「it’s」は「its」あるいは

「it’s」のどちらかで索引が付けられます。

言語固有の機能

Oracle Textは多くの言語をサポートします。

西洋の諸言語

基本文字変換 − アクセント付きの文字は、アクセントなしの形にノーマル化でき

ます。したがって「acción」の検索では「accion」と「acción」両方に一致します。

別スペリング − ドイツ語など、いくつかの言語では、アクセント付き文字を持つ

語に別のスペリング方法があります。たとえば、「Muenchen」と「München」は

同一の語と見なされます。別スペリング索引オプションが選択された場合、両方

の語に「Muenchen」として索引が付けられます。これと同じ変換が問合せのとき

に適用されるため、どちらの語を検索しても索引中の「Muenchen」に一致します。

複合語の処理 − Oracle Textは、ドイツ語、オランダ語に見られる複合語処理のた

めのテクノロジを備えています。複合語は、索引用に要素形態に細分されます。

Page 8: Oracle Textotndnld.oracle.co.jp/products/iserver/oracle9i/pdf/Oracle_Text.pdf · 合クエリー、つまりテキストと構造化リレーショナル属性に関する問合せに対し

Oracle Text Oracle Corporation発行の 「Oracle Text」の翻訳版です 8

マルチバイト言語

記号言語には、西洋の諸言語のようにスペースで区分されたワードがありません。

どのようにして文字グループに索引付けするかを決定するには、別のルールが必

要です。Oracle Textは、中国語、日本語、韓国語のテキストのために、特別な Lexer

を提供します。次のコマンドは、日本語 Lexerの設定方法を示します。 exec ctx_ddl.create_preference('JAPANESE_LEXER','japanese_vgram_lexer');

多言語な検索アプリケーションを構築することも可能です。検索のとき、アプリ

ケーションは NLS_LANG環境変数を点検し、ここからキーワード分割に用いられ

る Lexerを判定します。次の JSPコードの断片は、その方法の核心を示します。 … // Connect to the database; create a Statement Statement stmt = conn.createStatement (); String sql; ResultSet rset; // Set NLS_LANGUAGE and NLS_TERRITORY // Oracle Text uses these values to choose a lexer. if (language.equals("ZH")) { sql = "Alter session set NLS_LANGUAGE = 'TRADITIONAL CHINESE'"; rset = stmt.executeQuery (sql); sql = "Alter session set NLS_TERRITORY = 'TAIWAN'"; rset = stmt.executeQuery (sql); } else if (language.equals("JP")) { sql = "Alter session set NLS_LANGUAGE = 'JAPANESE'"; rset = stmt.executeQuery (sql); sql = "Alter session set NLS_TERRITORY = 'JAPAN'"; rset = stmt.executeQuery (sql); } else if (language.equals("KO")) { sql = "Alter session set NLS_LANGUAGE = 'KOREAN'"; rset = stmt.executeQuery (sql); sql = "Alter session set NLS_TERRITORY = 'KOREA'"; rset = stmt.executeQuery (sql); } sql = "select title, score(1) from sample_doc "; sql += "where contains (text, '" + keyword + "', 1)>0 "; sql += "order by score(1) desc"; rset = stmt.executeQuery (sql); while (rset.next ()){ // Iterate through the result and print the search results } rset.close(); stmt.close(); …

索引付けエンジン

逆向きの索引付けエンジンは、トークンを含んだドキュメントにトークンを対応

付ける、逆向きの索引を生成します。この段階で Oracle Textは、指定されている

場合、ストップリストを使用します。ユーザーはこのリストで、ストップワード

またはストップテーマを指定あるいはテキスト索引から除外することができます。

パイプラインの最後の出力は逆向きの索引です。これはドキュメント中のワード

のリストで、各ワードには、それが出現するドキュメントのリストが付随します。

これが「逆向き」と言われるのは、テキスト(ドキュメントのリストで、各ドキュ

メントはワードのリストを含んでいる)を見る通常の方法を逆にしたものだから

Page 9: Oracle Textotndnld.oracle.co.jp/products/iserver/oracle9i/pdf/Oracle_Text.pdf · 合クエリー、つまりテキストと構造化リレーショナル属性に関する問合せに対し

Oracle Text Oracle Corporation発行の 「Oracle Text」の翻訳版です 9

です。

統合化テキスト検索機能の利点

Oracle9i は、開発者がデータベース・カーネルの認識するデータ型を拡張できる

よう、拡張性のフレームワークを提供します。Oracle Textはこのフレームワーク

を使用し、テキスト索引を標準 Oracleクエリー・エンジンと完全に統合します。

これにより、ユーザーは次のものを得ることができます。

• 全データ(テキスト・データと構造化データ)のために、2つではなく

1つのレポジトリこれはメンテナンス、バックアップその他が容易です。

• 同一のレポジトリ中に複数の索引これにより、テキスト・クエリーと混合

クエリーの処理が非常に効率的となります。

• アプリケーション開発のための 1つの API

• オプティマイザの統合

コスト・ベース・オプティマイザは、問合せのランタイム特性に基づき最速の実

行プランを選択できる必要があります。このため、Oracle Textはテキスト述語を

列と比べて評価する 2つの異なる方法を提供します。

• 拡張性フレームワークはテキスト索引を行ソースとして設定し、述語に一

致した ROWIDをカーネルにパイプラインで送ることができます。

• 拡張性フレームワークは、「この ROWIDを持つ行は述語に一致するか?」

という問いに答えることができます。

要約すれば、統合の利点は次のとおりです。

• 低コスト

Oracle TextはOracle9i Enterprise EditionおよびStandard Editionの一部です。

別の製品を購入したり、統合する必要はありません。

• 高いパフォーマンス

データベースは、テキストと構造内容両方に関する問合せ実行のため、最

速のプランを選択します。

• 高い整合性

テキストはデータベース内に格納されるため、整合性の利点すべてを継承

します。たとえば、データベースの更新はテキスト検索機能に反映させる

ことができます。このことは、ユーザーがその全データの統合的、全体的

なビューを得られることを意味します。

• 簡単な組み立て

テキストは構造化データとまったく同様に扱われます。テキスト検索アプ

リケーションを開発し、既存システムと統合することは容易です。

Page 10: Oracle Textotndnld.oracle.co.jp/products/iserver/oracle9i/pdf/Oracle_Text.pdf · 合クエリー、つまりテキストと構造化リレーショナル属性に関する問合せに対し

Oracle Text Oracle Corporation発行の 「Oracle Text」の翻訳版です 10

• 優れた管理性

Oracle Textは管理者の通常のスキルで標準的な企業管理ツールを使用し

管理できます。

Oracle Textの機能

この項では、Oracle Textの主要機能について詳細に説明します。

索引の型

Oracle Textには、標準、カタログ、分類の 3つの索引の型があります。この 3つ

でテキスト検索のニーズすべてに対応します。表 1は 3つの索引の型の概観を示

します。

• 標準の索引型 − ドキュメントやウェブ・ページでの従来のフルテキスト

検索用。context索引型は一連の豊富なテキスト検索機能を備え、不純

な検索結果を含んだページを返すことなく、必要とする内容を見つけます。

• カタログ索引型 − E-Businessカタログ用に特に設計された最初のテキス

ト索引。ctxcatカタログ索引型はウェブ・スピードでの柔軟な検索とソー

トができます。

• 分類索引型 − 分類アプリケーションまたはルーティング・アプリケー

ションの構築用。ctxrule索引型はクエリーの表に基づき作成されます。

この表でクエリーは分類またはルーティングの基準を定義します。

索引の型索引の型索引の型索引の型 アプリケーションの型アプリケーションの型アプリケーションの型アプリケーションの型 クエリー・オペレータクエリー・オペレータクエリー・オペレータクエリー・オペレータ

CONTEXT テキストが大量のコヒーレントなドキュメントの場合、テキスト検索アプリケーションを構築するために、この索引を使用します。MS Word、HTML、XMLまたはプレーンテキストなど、様々なフォーマットのドキュメントに索引付けができます。CONTEXT索引では、ユーザーは様々な方法で索引をカストマイズできます。

CONTAINS

CTXCAT 列に格納された項目名、価格、説明などの小さなテキスト断片に索引を付ける場合、この索引型を使用します。この索引の場合、混合クエリーの問合せのパフォーマンスが向上します。

CATSEARCH

CTXRULE ドキュメント分類アプリケーションの構築には CTXRULE

索引を使用します。CTXRULE索引は、クエリーの表に基づき作成された索引で、各クエリーはこの表で分類されます。各ドキュメント(プレーンテキスト、HTMLまたはXML)は MATCHESオペレータを使用し分類できます。

MATCHES

表 1: 索引型の概観

Oracle Textは、従来のフルテキスト検索、E-Businessカタログ、分類アプリケーションおよびルーティング・アプリケーションに対して索引型を提供します。

Page 11: Oracle Textotndnld.oracle.co.jp/products/iserver/oracle9i/pdf/Oracle_Text.pdf · 合クエリー、つまりテキストと構造化リレーショナル属性に関する問合せに対し

Oracle Text Oracle Corporation発行の 「Oracle Text」の翻訳版です 11

Oracle Textはまた、サブストリングとプレフィックスの索引もできます。サブス

トリングの索引付けにより、左側が切断された、あるいは両側が切断されたワイ

ルドカード・クエリーのパフォーマンスが向上します。プレフィックスの索引付

けにより、右側が切断されたワイルドカード・クエリーのパフォーマンスが向上

します。

索引のメンテナンスと同期化

索引の同期化は、表に対して行われようとしている更新、挿入、削除すべての処

理に関係します。

次の例では、2MBのメモリーを持つ part_one索引パーティションが同期化され

ます。 exec ctx_ddl.sync_index(‘text_idx’,’2M’,’part_one’);

これにより、複数のコンテキスト型索引の同期化が並列的に実行できます。ユー

ザーは、新たにパラメータ parallel_degreeを使用し任意の数のスレーブを指

定できます。

リリース 9.0.1では、索引付けの場合、同期化によりベース表中の各行がロックさ

れます。したがって、長時間実行される同期化操作は、ユーザーからベース表の

行へのアクセスを長時間妨げることがあります。リリース 9.2.0ではロック・メカ

ニズムが書き直され、索引付けの最後で行がロックされるようになりました。こ

れによりユーザーからのアクセスが妨げられる空白時間が、大幅に削減されます。

並列的な索引付け

以前のバージョンの並列的索引作成では、dbms_jobsが使用され、並列的索引作

成はパーティション化された表にグローバル索引を作成する場合にのみ適用可能

でした。今回のバージョンでは並列性のサポートが書き直され、パーティション

化されていない表での並列的な索引作成がサポートされています。

並列的な索引作成が有益なのは次の理由のためです。

• パフォーマンスの向上

• データ・ステージング

• 大量のデータ収集に基づく迅速なアプリケーションの初期起動

• アプリケーションの開発中に、様々な索引パラメータとスキーマをテスト

する必要がある場合のアプリケーション・テスト

次の例では、ディグリー3のテキスト索引が作成されます。 CREATE INDEX myindex ON docs(tk) INDEXTYPE IS ctxsys.context PARALLEL 3;

Page 12: Oracle Textotndnld.oracle.co.jp/products/iserver/oracle9i/pdf/Oracle_Text.pdf · 合クエリー、つまりテキストと構造化リレーショナル属性に関する問合せに対し

Oracle Text Oracle Corporation発行の 「Oracle Text」の翻訳版です 12

図 2は、テキスト索引の並列的な作成がどのように行われるかを示します。Oracle

Parallelファシリティは並列性の程度(ディグリー)に従い、表を断片(部分)に

分割します。各並列スレーブは、表の 1部分に対して作用します。

図 2: テキスト索引の並列的な作成

索引のパーティション化

Oracle9i では、ローカルのパーティションにテキスト索引を作成できます。その主な利点は次のとおりです。

• 管理性。管理者は、索引をどのようにパーティション化するか、どのパー

ティションをオンライン/オフラインにするか、どのパーティションを

バックアップするか、などを決定できます。

• パフォーマンス。索引のパーティション化によりパフォーマンスは大きく

向上します。

クエリー・オペレータ

Oracle Textでは、検索クエリーをインテリジェントに処理できるよう、いくつか

のストラテジが使用されます。

• キーワード検索。ドキュメント中のキーワードの検索。ユーザーは問合せ

を最もよく記述する1つ以上のキーワードを入力します。

• コンテキスト・クエリー。あるコンテキスト中の用語検索。ユーザーは互

いに似ている語を含んだテキストを検索します。

• ブール演算。キーワードとブール演算との組合わせ。ユーザーは、ブール

演算をキーワードに結び付けて問合せを表現できます。

Page 13: Oracle Textotndnld.oracle.co.jp/products/iserver/oracle9i/pdf/Oracle_Text.pdf · 合クエリー、つまりテキストと構造化リレーショナル属性に関する問合せに対し

Oracle Text Oracle Corporation発行の 「Oracle Text」の翻訳版です 13

• 言語特性。ファジー、その他の自然言語処理手法を使用。ユーザーはある

事についてのテキストを検索します。

• パターン一致。一定の特性をもつテキストの検索。ユーザーは、ある文字

列を含んだ語を持つテキストを検索します。

表 2は、いくつかのクエリー・オペレータを示します。

オペレータオペレータオペレータオペレータ 説明説明説明説明

ABOUT ABOUTクエリーの場合、同一の問合せで返される関連ドキュメントの数が増加します。

ACCUMulate (,) 問い合せた複数の用語のどれかが 1回以上出現するドキュメントを検索します。

AND (&) 問い合せた複数の用語のそれぞれが 1回以上出現するドキュメントを検索します。

Broader Term (BT, BTG, BTP, BTI) シソーラスでより広いまたは高いレベルの用語として定義された用語を含むよう、クエリーを拡張します。

EQUIValence (=) 問合せ中の用語の代替となる用語を指定します。

Fuzzy 指定した用語に似たスペリングを持つ用語を含むよう、クエリーを拡張します。

HASPATH 指定したセクション・パスを持つすべての XMLドキュメントを検索します。

INPATH XMLドキュメントのパスを探索します。

MINUS (-) 問い合せたある用語を含むドキュメントの検索で、問い合せた 2番目の用語を持つドキュメントのランクを低くしたい場合に使用します。

Narrow Term (NT, NTG, NTP, NTI) シソーラスで特定の用語より狭いまたは低いレベルの用語として定義されたすべての用語を含むよう、クエリーを拡張します。

NEAR (;) 問い合せた 2つ以上の用語の親近性に基づきスコアを返します。

NOT (~) 問い合せたある用語を含み別の用語を含まないドキュメントを検索します。

OR (|) 問い合せた複数の用語のどれかが 1回以上出現するドキュメントを検索します。

Preferred Term (PT) 問合せ中の用語を、シソーラスがそれより優先的と定義した用語と置換します。

Related Term (RT) ある用語についてシソーラスで定義された関連語をすべて含むよう、クエリーを拡張します。

Page 14: Oracle Textotndnld.oracle.co.jp/products/iserver/oracle9i/pdf/Oracle_Text.pdf · 合クエリー、つまりテキストと構造化リレーショナル属性に関する問合せに対し

Oracle Text Oracle Corporation発行の 「Oracle Text」の翻訳版です 14

Soundex (!) 類似のサウンドを持つ用語、つまり別の用語のように響く語を含むよう、クエリーを拡張します。

Stem ($) 問い合せた用語と同一の語源を持つ用語を検索します。

Stored Query Expression (SQE) CTX_QUERY.STORE_SQEプロシージャで作成され格納されたクエリー式をコールします。

SYNonym (SYN) 指定された用語との同義語として、シソーラスで定義されたすべての用語を含むよう、クエリーを拡張します。

Threshold (>) このオペレータは式レベルで、結果集合からスレショルド数以下のスコアのドキュメントを除外します。このオペレータは問合せを行った用語のレベルで、ドキュメント中の用語のスコアに基づきドキュメントを選択します。

Translation Term (TR) 問い合せた用語に相当する定義済みの外国語すべてを含むよう、クエリーを拡張します。

Translation Term Synonym (TRSYN) 問い合せた用語に相当する定義済みの外国語、問い合せた用語の同義語、および同義語に相当する外国語すべてを含むよう、クエリーを拡張します。

Top Term (TT) 問合せ中の用語を、シソーラスでその用語に関する標準的階層の最上部に定義された用語と置換します。

Weight (*) スコアに一定の係数を掛け、スコアが 100を超えた場合、100を上限とします。

表 2: クエリー・オペレータの概要

国際化

企業の活動がグローバルになるとともに、全世界に分散した事業組織にとって多

言語機能が重要になります。企業のポータル、ライブラリあるいはコンテンツ管

理システムは、別言語で書かれた、あるいは別のキャラクタ・セットでコード化

された可能性のあるコンテンツの検索が必要となります。XMLの出現とともに、

多言語メタデータ、多言語コンテンツの検索機能がますます重要視されるように

なりました。

Oracle Textは、すべての Oracle NLSキャラクタ・セットをサポートします。たと

えば ASCII、UTF-8、JA165JIS、GBK、BIG5などです。Oracle Textは、ヨーロッ

パの諸言語(英語、フランス語、スペイン語、ドイツ語、その他)、日本語、韓

国語、中国語(旧体字および簡体字)で書かれたドキュメントの検索をサポート

します。

このような多言語機能により、ユーザーは多言語での検索アプリケーションが開

発でき、その上、次のことができます。

Oracle Textは、業界で最もグローバル化したエンジンです。

Page 15: Oracle Textotndnld.oracle.co.jp/products/iserver/oracle9i/pdf/Oracle_Text.pdf · 合クエリー、つまりテキストと構造化リレーショナル属性に関する問合せに対し

Oracle Text Oracle Corporation発行の 「Oracle Text」の翻訳版です 15

• ドキュメントのコレクションに複数言語を混在させること(例: 中国語と

英語のドキュメント)

• 中国語の問合せに英語を使用すること。またはその反対。次の問合せでは、

説明に‘monitor’またはこれに相当する中国語が含まれている製品が検索

されます。 select score(1), product_id, product_name from product_information where contains ( product_description, 'TRSYN(monitor, Chinese)', 1)>0 order by score(1) desc ;

図 3は、中国語テキストで、これら機能を使用するいくつかの例を示します。

図 4は、日本語テキストでの同じ諸機能を示します。

図 3: 中国語ドキュメントで語をハイライトさせた多言語検索

Page 16: Oracle Textotndnld.oracle.co.jp/products/iserver/oracle9i/pdf/Oracle_Text.pdf · 合クエリー、つまりテキストと構造化リレーショナル属性に関する問合せに対し

Oracle Text Oracle Corporation発行の 「Oracle Text」の翻訳版です 16

図 4: 日本語ドキュメントで語をハイライトさせた多言語検索

ドキュメント・サービス

Oracle Textには、主なドキュメント・サービス機能として、ハイライト、マーク

アップ、テーマ、要旨があります。このタイプのサービスは、ストラテジを概観

し、ドキュメントのプレゼンテーションを行うためにきわめて有益です。またユー

ザーへの情報のフィードバックもこのサービスに含まれます。

ハイライト

このサービスでは、問合せ文字列が取り上げられ、ドキュメント内容がフェッチ

され、ドキュメント中のどの語が問合せに一致するか、ユーザーに示されます。

マークアップ

これはハイライト・サービスを一歩進めたもので、マークアップされた一致語で

ドキュメントのテキスト・バージョンが作成されます。図 5は、Servletと XSQL

の 2語をハイライトした HTMLドキュメントのスクリーンショットです。

Oracle Textにより選択したドキュメントを、問合せがハイライトされた語、マークアップ、テーマおよび要旨を使用してプレゼンテーションできます。

Page 17: Oracle Textotndnld.oracle.co.jp/products/iserver/oracle9i/pdf/Oracle_Text.pdf · 合クエリー、つまりテキストと構造化リレーショナル属性に関する問合せに対し

Oracle Text Oracle Corporation発行の 「Oracle Text」の翻訳版です 17

図 5: ハイライトされた語を持つ HTMLドキュメント

従来のテキスト検索機能を補完するため、Oracle Textは先進的な言語機能を備え

ています。この機能により、ユーザーはドキュメント・テーマまたはテーマの要

約を、オンデマンドでドキュメントごとに作成できます。

テーマ抽出

テーマは、ドキュメントの主題を述べたスナップショットです。特定の用語また

は句を含んだドキュメントを検索するかわりに、ユーザーは特定の主題について

ドキュメントを検索できます。たとえその主題がドキュメント中で明示的に述べ

られていない場合でも、検索できます。テーマ・クエリーは、要求された主題に

関するドキュメントのヒット・リストとともに、各ドキュメントがその主題にど

れほど強く反映されているかを示したスコアを返します。

図 6は、Javaと JDeveloperに関するドキュメントへのテーマ抽出の出力を示しま

す。

Page 18: Oracle Textotndnld.oracle.co.jp/products/iserver/oracle9i/pdf/Oracle_Text.pdf · 合クエリー、つまりテキストと構造化リレーショナル属性に関する問合せに対し

Oracle Text Oracle Corporation発行の 「Oracle Text」の翻訳版です 18

図 6: Javaと JDeveloperに関するドキュメントのテーマ抽出

要旨

一般的要旨は、ドキュメントの全体的主題を最もよく表現した文、またはパラグ

ラフからなるサマリーです。ユーザーは、これを使用してテキストの主要内容を

概観し、あるいはテキストの主題に対する自分の関心を評価できます。ユーザー

は、パラグラフ・レベルまたは文レベルで要旨を生成できます。

先進的な言語機能

分類とクラスタリング

ドキュメント分類アプリケーションは、入ってくるドキュメントのストリームを

ドキュメント内容に基づき分類するアプリケーションです。このアプリケーショ

ンは、ドキュメント・ルーティング・アプリケーション、あるいはドキュメント・

フィルタ処理アプリケーションとも呼ばれます。たとえば、オンライン・ニュー

ス・エイジェンシーは、入ってくる記事のストリームが到着するたびに、政治、

経済、スポーツなどのカテゴリーに分類する必要があるかもしれません。

Oracle Textは新しい CTXRULE索引型により、このようなアプリケーションの構築

を可能にします。この索引型は、分類基準またはルーティング基準を定義するルー

ル(問合せ)に索引を付けます。到着したドキュメントに対しては、各ドキュメ

ントをカテゴリーに分ける新しい MATCHESオペレータを使用できます。図 7は、

分類アプリケーションの主要構造を示します。

分類とナレッジ・ベースは、インテリジェント・テキスト・アプリケーション構築のための構成要素の中核となります。

Page 19: Oracle Textotndnld.oracle.co.jp/products/iserver/oracle9i/pdf/Oracle_Text.pdf · 合クエリー、つまりテキストと構造化リレーショナル属性に関する問合せに対し

Oracle Text Oracle Corporation発行の 「Oracle Text」の翻訳版です 19

図 7: 分類アプリケーションの構造

CTX_CLSパッケージは、一連のドキュメントのために CTXRULEクエリー・ルー

ルを生成します。このクエリールールの生成には、カテゴリー分けされた複数の

ドキュメントからなるトレーニングセットが必要で、各ドキュメントは 1つ以上

のカテゴリーに属している必要があります。パッケージは、カテゴリーを定義す

るクエリーを生成し、次いで結果を表に書き出します。図 8は、医学分野での分

類アプリケーションの例を示します。右側の表示は、問い合せた用語(heart failure)

をハイライトし、この用語を含んだドキュメントを示します。

図 8: 医療分野向けの分類アプリケーション

Page 20: Oracle Textotndnld.oracle.co.jp/products/iserver/oracle9i/pdf/Oracle_Text.pdf · 合クエリー、つまりテキストと構造化リレーショナル属性に関する問合せに対し

Oracle Text Oracle Corporation発行の 「Oracle Text」の翻訳版です 20

分類とは反対に、クラスタリングは、監視されることなくパターンをグループに

分類します。Oracle Textはクラスタを構築するため CTX_CLUSTERパッケージを

提供します。このパッケージは一連のドキュメントを、その意味にしたがい k-mean

アルゴリズムを使用し自動的にクラスタにします。各クラスタには、コレクショ

ンのドキュメント・サブセットが含まれます。クラスタ中のドキュメントは、そ

の外にあるドキュメントより互いに類似していると判断されます。このパッケー

ジは現在、OTNから入手可能です。

ナレッジ・ベース

Oracle Textのナレッジ・ベースは、2000の主要カテゴリーに分類された、きわめ

て広範な分野の概念を 40万以上含んでいます。これらのカテゴリーは、ビジネス

および経済、科学技術、地理、統治および軍事、社会環境、抽象的概念の 6つの

最上位の項目を頂点にし、階層的に組織されています。概念の分類、カテゴリー

の選択、階層的組織はすべて、存在論的純粋性よりも情報検索上での有益性を目

的として慎重に設計され、曖昧性の問題を避けることが特に重視されています。

ユーザーは、新規用語の追加または既存の用語の検索により、このナレッジ・ベー

スを拡張でき、またカストマイズできます。たとえばユーザーは、医学シソーラ

スをインポートし、その後ナレッジ・ベースを拡張できます。図 9は、医学シソー

ラスの階層構造の表示です。

図 9: Oracle Textのシソーラスを管理する

Page 21: Oracle Textotndnld.oracle.co.jp/products/iserver/oracle9i/pdf/Oracle_Text.pdf · 合クエリー、つまりテキストと構造化リレーショナル属性に関する問合せに対し

Oracle Text Oracle Corporation発行の 「Oracle Text」の翻訳版です 21

パフォーマンス

図 10は、context索引型を使用した Oracle Textと、最もよく知られたテキスト

特化型検索エンジンの一つ(“TCOMP”と呼ばれる)とのパフォーマンスの比較を

示します。通常、Oracle Textのパフォーマンスは、1ユーザー、1クエリーのテス

トではファイル・ベースのテキスト検索エンジンとほぼ同じです。しかし、シス

テムにストレスが加わるにつれ、Oracleの優れたスケーラビリティにより、Oracle

Textはすぐにファイル・ベースのエンジンより優れたパフォーマンスを示します。

次に示すテストは、小さな部門マシンで動作する実際の E-Businessサイトのシ

ミュレーションです。

Throughput Comparison

0.0010.0020.0030.0040.0050.0060.0070.0080.00

0 10 20 30

Number of Users

Que

ries

per S

econ

d

CONTEXTQueries persecondTCOMPQueries persecond

図 10: スループットの比較

図 11は同じテストを示したものですが、スループットではなく問合せ時間をレ

ポートしています。

Query Time Comparison

0

500

1000

1500

2000

2500

3000

3500

4000

0 10 20 30

Number of Users

Que

ry T

ime

(100

ths

of a

sec

ond)

CONTEXTLongest (s/100)CONTEXTAverage (s/100)TCOMP Average

図 11: 問合せ時間の比較

Oracleの利点: 優れたパフォーマンス。

Page 22: Oracle Textotndnld.oracle.co.jp/products/iserver/oracle9i/pdf/Oracle_Text.pdf · 合クエリー、つまりテキストと構造化リレーショナル属性に関する問合せに対し

Oracle Text Oracle Corporation発行の 「Oracle Text」の翻訳版です 22

Oracle Textの使用

この項では、前述した Oracle Textの主要機能について、いくつかのシンタクスと

使用例を提示します。

Oracle Textによる索引作成

次の表にいくつかの典型的な製品情報が含まれているものとします。 describe product_information Name Null? Type ------------------------ ------- ---------------- PRODUCT_ID NOT NULL NUMBER(6) PRODUCT_NAME VARCHAR2(50) PRODUCT_DESCRIPTION VARCHAR2(2000) CATEGORY NUMBER(2) PRODUCT_STATUS VARCHAR2(20) LIST_PRICE NUMBER(8,2)

PRODUCT_DESCRIPTION列にテキスト索引を作成し、検索するために、索引作成

は SQL文で行います。 CREATE INDEX description_idx ON product_information(product_description) INDEXTYPE IS CTXSYS.CONTEXT;

検索も SQL文で行います。 SELECT score(1), product_id, product_name FROM product_information WHERE CONTAINS (product_description, 'monitor NEAR "high resolution"', 1)>0 ORDER BY score(1) DESC; SCORE(1) PRODUCT_ID PRODUCT_NAME ---------- ---------- ------------------------ 29 3331 Monitor 21/HR 27 3060 Monitor 17/HR 14 1726 LCD Monitor 11/PM 14 3054 Plasma Monitor 10/XGA 14 2252 Monitor 21/HR/M 14 2243 Monitor 17/HR/F

前述したとおり、テキスト索引構造はデータベースに格納されます。Oracle Text

の索引は、それぞれ$I表、$K表、$N表、$R表と呼ばれる 4つの表から構成され

ます。これらの表は、テキスト索引オーナーのスキーマの中にあり、DR$、索引

名、サフィックス($Iなど)を連結した名前を持っています。

$I表は、索引が付けられたトークンすべてと、それらがあるドキュメントのバイ

ナリ表現、およびドキュメント中のトークンの位置から構成されます。各ドキュ

メントは、内部の DOCID値で表現されます。

$K表は索引構成表(IOT)で、内部の DOCID値を外部の ROWID値にマッピング

します。表中の各行は、1対の DOCID/ROWIDで構成されます。DOCIDに対応す

る ROWID値が与えられた場合、IOTにより DOCIDを迅速に検索できます。

$R表は、DOCIDが既知の場合に ROWIDをフェッチし、$K表からの逆からの参

照ができるよう設計されています。

$N表は、削除された DOCID値のリストを含んでいます。これは索引の最適化プ

ロセスで使用(およびクリーンアップ)されます。

Page 23: Oracle Textotndnld.oracle.co.jp/products/iserver/oracle9i/pdf/Oracle_Text.pdf · 合クエリー、つまりテキストと構造化リレーショナル属性に関する問合せに対し

Oracle Text Oracle Corporation発行の 「Oracle Text」の翻訳版です 23

SELECT table_name FROM user_tables; TABLE_NAME ------------------------------ DR$DESCRIPTION_IDX$I DR$DESCRIPTION_IDX$K DR$DESCRIPTION_IDX$N DR$DESCRIPTION_IDX$R PRODUCT_INFORMATION

索引名をクエリーする。 SELECT index_name, table_name, column_name FROM user_ind_columns WHERE table_name='PRODUCT_INFORMATION' INDEX_NAME TABLE_NAME COLUMN_NAME -------------------- -------------------- -------------------- DESCRIPTION_IDX PRODUCT_INFORMATION PRODUCT_DESCRIPTION

あらかじめ、どのプランが最適か分かっている場合、ユーザーはデータベース・

オプティマイザに対し、問合せのパフォーマンスを向上させるようヒントを与え

ることもできます。 SELECT /*+ index product_information description_idx */ score(1), product_id FROM product_information WHERE CONTAINS ( product_description, 'monitor NEAR "high resolution"', 1) > 0 AND list_price < 500;

最後の例では、内容ベースの述語を従来のリレーショナルな述語と混在させるた

め標準 SQLが使用されています。

どの型のクエリーについても説明プランを見ることができます。例: SELECT score(0) scr, id, author, title FROM docs WHERE CONTAINS(text, 'money', 0) > 0 and id > 16 ORDER BY scr DESC; Rows Execution Plan ------- --------------------------------------------------- 0 SELECT STATEMENT GOAL: CHOOSE 0 SORT (ORDER BY) 0 TABLE ACCESS (BY INDEX ROWID) OF 'DOCS' 0 BITMAP CONVERSION (TO ROWIDS) 0 BITMAP AND 0 BITMAP CONVERSION (FROM ROWIDS) 0 SORT (ORDER BY) 0 DOMAIN INDEX OF 'DOCS_TEXT' 0 BITMAP CONVERSION (FROM ROWIDS) 0 SORT (ORDER BY) 0 INDEX (RANGE SCAN) OF 'SYS_C001220' (UNIQUE)

前述したように、Oracle Textはテーマ・ベースあるいは概念ベースの検索をサポー

トしており、このため Oracle Textは ABOUTオペレータを使用し、逆向きの索引

中のテーマに一致するテーマをフリーテキスト・クエリーから抽出します。たと

えば、「train」という語がドキュメントに含まれていない場合でも、train(列車)

に関するニュース記事が検索できます。 SELECT id, title FROM news_table WHERE CONTAINS(article,’about(train)’) > 0;

Page 24: Oracle Textotndnld.oracle.co.jp/products/iserver/oracle9i/pdf/Oracle_Text.pdf · 合クエリー、つまりテキストと構造化リレーショナル属性に関する問合せに対し

Oracle Text Oracle Corporation発行の 「Oracle Text」の翻訳版です 24

Id Title --- ---------------------------- 834 Rail Transportation in Europe

Oracle Textのテーマ・ベースの機能 – テーマ、ABOUTクエリー、要旨、ABOUT

クエリーのハイライト、階層クエリのフィードバックはすべて内部のナレッジ・

ベースに依存しています。

Oracleデータベースのパワーにより、多分野クエリーの構築も可能です。たとえ

ば、50才以上でトロントから 35km以内に在住し、家族にガンの罹患歴があり、

喫煙の習慣がある、胸部 X線写真を撮ったことのある患者の数を調べたいとしま

す。 SELECT count(p), p.age, p.xray, FROM patients p, cities c WHERE p.age > 50 AND c.name = ‘Toronto’ AND SDO_WITHIN_DISTANCE(p.loc, c.loc, ‘<= 35 km’) AND Contains(p.medical_history, ‘smoke cancer’)>0 GROUP BY p.age;

索引操作はすべて Oracle Enterprise Manager(OEM)管理ツールを使用し行うこと

ができます。図 12は OEMからテキスト索引を作成する方法を示します。

図 12: Oracle Enterprise Managerから Oracle Textを管理する

XMLのサポート

XML機能には、オペレータWITHIN、ネストしたセクション検索、属性値内での

検索、複数タグの同名へのマッピング、INPATHを使用したパス検索、HASPATH

オペレータが含まれます。

Oracle Textの機能を明らかにするため、次の XMLの例を見てみましょう。 <?xml version="1.0"?> <FAQ OWNER="Billy Text"> <TITLE>Oracle Text FAQ</TITLE>

Page 25: Oracle Textotndnld.oracle.co.jp/products/iserver/oracle9i/pdf/Oracle_Text.pdf · 合クエリー、つまりテキストと構造化リレーショナル属性に関する問合せに対し

Oracle Text Oracle Corporation発行の 「Oracle Text」の翻訳版です 25

<DESCRIPTION> Everything you always wanted to know about Text</DESCRIPTION> <QUESTION>What is Oracle Text? </QUESTION> <ANSWER> Oracle Text uses standard SQL to index, search, and analyze text and documents stored in the database, files or websites. </ANSWER> </FAQ>

これにより検索が行われます。 SELECT title, description FROM FAQTable WHERE CONTAINS(text,’Oracle WITHIN QUESTION’)> 0;

検索は属性値でも行うことができます。 SELECT title, description FROM FAQTable WHERE CONTAINS(text,’Billy WITHIN FAQ@OWNER’)> 0;

パス検索は次のようにして行います。 SELECT title, description FROM FAQTable WHERE CONTAINS(text,’Oracle INPATH(FAQ/TITLE)’)> 0;

パスがあるかどうかを判定するパス・テストは次のようにして行います。 SELECT title, description FROM FAQTable WHERE CONTAINS(text,’HASPATH(FAQ/TITLE/DESCRIPTION)’)> 0;

XMLドキュメントの内容と構造の検索

従来、データベースではその内容または構造の検索が可能でしたが、両方を同時

に検索することはできませんでした。Oracleではその独自の機能により、内容と

構造を同時に問い合せることができます。

Oracle9i では 2つの新しい SQL関数、existsNodeと extractが導入されまし

た。これらは XMLTypeの値に対して機能します。

• existsNode(): Xpath式が与えられたとき、ドキュメントに適用された

Xpathが有効なノードを返せるかどうかを点検します。

• extract(): Xpath式が与えられたとき、Xpathをドキュメントに適用し、

フラグメントを XMLTypeとして返します。

これらの機能はテキスト・クエリー言語の全機能と組み合わせて、内容検索を行

うことができます。たとえば、“standard or SQL”をアンサー・タグに含む FAQを

検索して、その質問を表示できます。 select f.faq.extract('/FAQ/QUESTION/text()').getStringVal() from faq f where contains(faq,'standard or SQL INPATH(FAQ/ANSWER)')>0

Page 26: Oracle Textotndnld.oracle.co.jp/products/iserver/oracle9i/pdf/Oracle_Text.pdf · 合クエリー、つまりテキストと構造化リレーショナル属性に関する問合せに対し

Oracle Text Oracle Corporation発行の 「Oracle Text」の翻訳版です 26

Oracle Ultra Searchおよび Oracle Internet File System

Oracle Textによって提供される豊富な一連の中核的機能は、他の検索ソリュー

ション、特に Oracle Ultra Searchおよび Oracle Internet File Systemでも使用されま

す。

Oracle Ultra Search Oracle Ultra Searchは Oracle9i の機能のひとつで、Oracle Textの上に構築された新

しい検索アプリケーションです。Oracle Ultra Searchでは、データベース、IMAP

サーバーあるいはファイル・システムといった複数のレポジトリにわたる検索が

可能です。これは、組織内に複数のドキュメント・レポジトリ、複数の Internet File

Systemその他があり、ユーザーがこれらすべてにわたる検索を望む場合にたいへ

ん有益です。

UltraSearchでは次のことが可能です。

• データベース、インターネット、イントラネット、アプリケーションの統

一的な検索を行い、どこに情報があっても探すことができます。

• 企業のイントラネット全体のクローリング、索引付け、検索が可能になり

ます。

• 企業ポータル・ソリューションを構築するための Oracleのポータル・フ

レームワーク・ソフトウェアである Oracle9i AS Portalと統合できます。

• クロールのスケジューリング、クロールのカストマイジング、ユーザー・

プリファレンスの適用、などその他のための使い易いブラウザ・ベースの

管理インタフェースです。

図 13は UltraSearchの管理用ユーザー・インタフェースを示します。

図 13: Oracle Ultra Search

Oracle Ultra Searchおよび Oracle File System: この 2つの機能は、Oracle Textを基礎としてます。

Page 27: Oracle Textotndnld.oracle.co.jp/products/iserver/oracle9i/pdf/Oracle_Text.pdf · 合クエリー、つまりテキストと構造化リレーショナル属性に関する問合せに対し

Oracle Text Oracle Corporation発行の 「Oracle Text」の翻訳版です 27

Oracle Internet File System Oracle Internet File Systemは、Oracle Textの諸機能を使用し、Internet File Systemに

保存されたドキュメントに対するフルテキスト索引付けと検索の機能を提供しま

す。ユーザーがファイルを格納すると、Internet File Systemは検索索引エントリを

構築し、エントリはデータベースに保存されます。ドキュメント内容に索引が付

けられると、Oracle Internet File Systemのユーザーはドキュメント中の用語と句を

検索できます。図 14は、この先進的な検索機能を示します。

Oracle Internet File Systemは、ドキュメント、マルチメディア、ウェブ・ページ、

Eメール、構造化データなど、あらゆるタイプのデータを管理するための統一的

な 1つのリポジトリを提供します。Oracle Internet File Systemは、Oracleデータベー

スの拡張し、企業資産を管理するための信頼性、可用性、セキュリティに優れた

環境を提供します。

図 14: Oracle Internet File Systemでの先進的な検索

Page 28: Oracle Textotndnld.oracle.co.jp/products/iserver/oracle9i/pdf/Oracle_Text.pdf · 合クエリー、つまりテキストと構造化リレーショナル属性に関する問合せに対し

Oracle Text Oracle Corporation発行の 「Oracle Text」の翻訳版です 28

JDeveloper Wizard

OTNからダウンロードし、JDeveloper向けの Oracle Textアドイン・ウィザードを

入手することができます。このウィザードにより、JDeveloperに精通したユーザー

は Oracle Textを使用しアプリケーションを開発できます。

このウィザードのユーザー・インタフェースは、単純で直観的に理解でき、テキ

スト索引の作成、ドキュメント・フォーマットの選定、ドキュメント・サービス、

その他のオプションの手順についてユーザーをガイドします。

図 15: JDeveloperの Text Wizard

Oracle9i Release 2の新機能

パフォーマンス向上のための大きな投資のほか、Oracle9i Release 2ではOracle Text

に関する数多くの機能強化が行われています。9i Release 2の機能に関する詳細な

説明は、『Oracle Text Features Overview』を参照してください。

• 索引の作成とメンテナンスを改善するための並列索引付けと並列同期化。

• ユーザーはローカルの区分化コンテキスト索引で内容クエリーを並列化

できる。

• ユーザーが新規 Lexerの定義に利用できる拡張可能な Lexer。

• 分類とルーティングのアプリケーションを構築するための分類パッケー

ジ。

• テキスト索引を分析しチューニングするための DBAツール・パッケージ。

• 検索アプリケーションを作成するための JDeveloper9i Textウィザード。

• ウェブ・クエリー・パーサー。ミススペリング、訂正、オペレータその他

の処理のためにユーザーはクエリー・パーサーの記述が不要。

• 多くの点でパフォーマンスを改善。

Page 29: Oracle Textotndnld.oracle.co.jp/products/iserver/oracle9i/pdf/Oracle_Text.pdf · 合クエリー、つまりテキストと構造化リレーショナル属性に関する問合せに対し

Oracle Text Oracle Corporation発行の 「Oracle Text」の翻訳版です 29

結論

Oracle Textによりアプリケーション開発者は、任意のプログラミング言語による

自分のアプリケーションに強力なテキスト検索機能を透過的に組み込めます。ま

た Oracle Textにより、APIやデータ複製について学び、これらをサポートするコ

ストを今以上におさえ、企業級のデータベースが通常備えている利点すべてが利

用できます。テキスト内容、メタデータ、属性に基づくドキュメント検索能力に

より、Oracleデータベースはあらゆるデータ管理を統合する中心に位置します。

参考資料

1. 『Oracle Textリファレンス・ガイド』Oracle Corp., Redwood Shores, CA

(2002)

2. 『Oracle Textアプリケーション開発者ガイド』Oracle Corp., Redwood

Shores, CA(2002)

3. Oracle Textホームページ(http://otn.oracle.com/products/text/)

4. Oracle Textディスカッション・フォーラム

(http://otn.oracle.com/products/text/)

5. Oracle Ultra Searchテクニカル・ホワイトペーパー

Page 30: Oracle Textotndnld.oracle.co.jp/products/iserver/oracle9i/pdf/Oracle_Text.pdf · 合クエリー、つまりテキストと構造化リレーショナル属性に関する問合せに対し

Oracle Text Oracle Corporation発行の「Oracle Text」の翻訳版です 2002年 3月 著者: Omar Alonso 寄稿者: Sandeepan Banerjee、Steve Buxton、Roger Ford、Richard Pitts Oracle Corporation World Headquarters 500 Oracle Parkway Redwood Shores, CA 94065 U.S.A. 海外からのお問合せ窓口: 電話: +1.650.506.7000 ファックス: +1.650.506.7200 www.oracle.com この文書はあくまでも参考資料であり、掲載されている情報は予告なしに変更されることがあります。万一、誤植などにお気づきの場合は、オラク ル社までお知らせください。オラクル社は本書の内容に関していかなる保証もしません。また、本書の内容に関連したいかなる損害についても責任

を負いかねます。

Oracleはオラクル社の登録商標です。 このガイドで使用されているさまざまな製品名およびサービス名には、オラクル社の商標が含まれています。 その他のすべての製品名およびサービス名は、各社の商標です。 Copyright © 2002 Oracle Corporation All rights reserved.