Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
Oracle Database 12cのOracle Text テキスト資産に付加価値を提供
Oracle ホワイト・ペーパー | 2017 年 5 月
0 | Oracle Text 12.2の新機能
目次
目次 ................................................................................................................................................................... 0
はじめに ........................................................................................................................................................... 2
身近に存在するテキスト .............................................................................................................................. 2
Oracle Text ...................................................................................................................................................... 2
統合セキュリティ .......................................................................................................................................... 3
アーキテクチャ .............................................................................................................................................. 3
データ・ストア ...................................................................................................................................... 4
デフォルト・データ・ストア .............................................................................................. 4
ファイル・データ・ストア ................................................................................................. 4
URL データ・ストア ............................................................................................................ 4
ユーザー定義データ・ストア .............................................................................................. 4
フィルタ .................................................................................................................................................. 5
セクショナ .............................................................................................................................................. 5
レクサー .................................................................................................................................................. 5
レクサーの基本設定 ............................................................................................................. 6
言語固有の機能 ...................................................................................................................................... 6
欧米諸言語 ............................................................................................................................ 6
マルチバイト言語 ................................................................................................................ 6
索引付けエンジン .................................................................................................................................. 6
統合テキスト検索機能の利点 ............................................................................................................. 7
Oracle Text の機能 ................................................................................................................................ 8
索引タイプ ............................................................................................................................ 8
サブストリング索引とプリフィックス索引 .................................................................................... 9
索引の保守と同期化 ............................................................................................................................. 9
パラレル索引付け .................................................................................................................................. 9
ローカル・パーティション索引 ....................................................................................................... 10
1 | Oracle Text 12.2の新機能
問合せ演算子 ........................................................................................................................................ 10
国際化 .................................................................................................................................................... 12
ドキュメント・サービス ................................................................................................................... 12
ハイライト・サービス ...................................................................................................... 12
マークアップ ..................................................................................................................... 13
スニペット ......................................................................................................................... 13
テーマの抽出 ........................................................................................................................................ 13
要旨の生成 ............................................................................................................................................ 13
分類とクラスタリング ...................................................................................................... 14
ナレッジ・ベース ................................................................................................................................ 15
Oracle Text の使用 .............................................................................................................................. 15
Oracle Text を使用した索引の作成 ................................................................................. 15
オプティマイザ・ヒント .................................................................................................. 17
SDATA セクション ............................................................................................................ 19
複合ドメイン索引 ............................................................................................................. 19
XML のサポート ................................................................................................................................... 20
XML ドキュメントのコンテンツおよび構造の検索 ........................................................ 21
2 | Oracle Text 12.2の新機能
はじめに
オラクルの統合型全文検索テクノロジーである Oracle Text は、Oracle Database 12c(すべてのエディション)に搭載されています。Oracle Text では、Oracle データベースおよびファイル、Web上に保存されたテキストやドキュメントの索引作成、検索、および分析に標準の SQL を使用します。キーワード検索やコンテキスト問合せ、ブール演算、パターン照合、テーマ混合型問合せ、HTML/XML セクション検索など、さまざまな方法を用いてドキュメントの言語分析やテキスト検索を実行できます。Oracle Text は、構造化関係属性やテキストを含む複合問合せで優れた能力を発揮します。
Oracle Text では、フォーマット化されていないテキスト、用語ハイライト機能付き HTML、オリジナルのドキュメント形式など、各種フォーマットで検索結果をレンダリングできます。Oracle Textは複数の言語をサポートしており、高度な関連性ランキング・テクノロジーによって検索の質を高めます。
身近に存在するテキスト
この数十年の間、企業はデータベース・システムに蓄積された構造化データへの迅速なアクセスを可能にするシステムに多額の投資を行ってきました。しかし、データベース・システムに蓄積されたこの構造化データは企業情報全体からすれば、ほんの一部でしかありません。それよりも膨大な情報が、ドキュメントや Web ページ、マニュアル、レポート、電子メール、プレゼンテーションなどのテキストとして存在しています。ビジネス情報のこうした貴重なソースは、アクセスできないことも多く、費用効果的に優れた方法で管理されていないこともあります。イントラネット・ポータルにアクセスする社員やカタログを閲覧する購入者など、企業情報にアクセスするユーザーには、見たい情報を見つけられるよう、テキスト検索インフラストラクチャによる高度なサポートが必要です。
Oracle Text
Oracle Text は包括的なテキスト検索ソリューションを提供します。Oracle Text は Oracle Database 12c のすべてのエディションに搭載されています。Oracle データベースのユーザーは、別のテキスト検索製品を購入して統合する必要はありません。
Oracle Text では、Web サイトの検索、e ビジネス・カタログ、ドキュメント分類アプリケーションやルーティング・アプリケーション、テキスト・ウェアハウス、ドキュメント・ライブラリやドキュメント・アーカイブなど、従来の全文検索アプリケーション用に特化したテキスト検索が可能です。
Oracle Text では、さまざまなドキュメント形式からコンテンツをフィルタリングして抽出できます。Microsoft Office ファイル形式、Adobe PDF ファミリ形式、HTML、XML といった広く使用されている形式を含め、多数のドキュメント形式がサポートされています。
3 | Oracle Text 12.2の新機能
Oracle Text は、欧米諸言語(英語、フランス語、スペイン語、ドイツ語など)や日本語、韓国語、中国語(繁体および簡体)で記載されたドキュメント間の検索をサポートし、市販されている中でもっとも優れた多言語機能セットを備えています。
Oracle Text は Oracle 12c の一部として透過的に統合されており、次のような多数の主要なエンタープライズ機能によって利点が得られます。
• データのパーティション化(スループットと可用性の向上)
• リアル・アプリケーション・クラスタリングまたはパラレル・サーバー(サーバー・スケーラビリティの最大化)
• 自動問合せ最適化
• ツールおよび開発環境
• 管理と制御
統合セキュリティ
このような統合の側面から、システム管理者も、管理方法や組織のテキスト資産のパラダイム・シフトを経験せずに済むという大きな利点が得られます。Oracle Text は、Oracle Application Server Portal 、Oracle E-Business Suite、Oracle eXchange、Oracle Secure Enterprise Search 、Oracle Content Database など、他の Oracle 製品の中核となる製品です。
Oracle の社内向けおよび社外向け Web サイトの検索機能も、すべて Oracle Text をコア検索テクノロジーとして使用した Oracle Secure Enterprise Search を採用しています。
アーキテクチャ
このセクションでは、Oracle Text によるテキスト処理のメカニズムについて説明します。このプロセスをパイプラインとみなすことができます(図 1)。このセクションでは、各ステージについて説明し、それぞれのステージで使用可能なオプションを取り上げていきます。
4 | Oracle Text 12.2の新機能
図1:索引付けのアーキテクチャ
データ・ストア
データ・ストアでは、索引付けするテキストのフェッチ元を定義します。データ・ストアは、データベースやファイル・システムに保存されているテキスト、HTTP プロトコルによってリモート・アクセスするテキスト(URL データ・ストア)を対象とします。ユーザーが選んだ場所、プロトコル、またはアプリケーションからデータをフェッチする、カスタム・データ・ストアを定義できます。
デフォルト・データ・ストア
デフォルト・データ・ストアはデータベース内にあります。テキストは VARCHAR2 列(最大 4000字)または CLOB(Character Large Object)列に保存できます。フォーマット済みテキスト(Wordや PDF ドキュメントなど)は BLOB(Binary Large Object)列に保存できます。
ファイル・データ・ストア
索引付けするテキストは、データベース・サーバーにアクセス可能なファイル・システムに保存されます。ファイルの名称やパスは、通常 VARCHAR2 列にあるデータベースに保存されます。
URLデータ・ストア
データベースに HTTP プロトコル URL が保存されて、索引付けされるテキストは索引付けの時点でURL から直接フェッチされます。
ユーザー定義データ・ストア
索引付けの対象となる表の各行に対して呼び出される PL/SQL プロシージャが指定されます。次にPL/SQL プロシージャが、Java(データベースで実行中の場合は直接)や C/C++プログラムなど、他の言語で作られたプログラムを EXTPROC 外部プロシージャ・メカニズムを介して呼び出すことができます。その結果、ユーザーは索引付けの対象を完全に管理できます。
5 | Oracle Text 12.2の新機能
フィルタ
フィルタ・ステージでは、Microsoft Office ファイルや PDF ドキュメントなど、"フォーマット済み"のドキュメントの処理が実行されます。組込みの AUTO_FILTER は一般的なすべてのドキュメント・フォーマットを認識でき、索引付け可能な HTML テキストに変換できます。
アプリケーション開発者は、このフィルタ・ステージを自分たちが開発したカスタム構築のフィルタや、サード・パーティから購入したフィルタに置き換えることが可能です。
カスタム・フィルタは、単に 2 つの引数を取る実行可能プログラムまたはスクリプトであり、最初の引数はフォーマット済み入力テキストを含むファイルで、2 番目の引数はフィルタリングされた出力を書き込むファイルの名前です。必要に応じて、カスタム・フィルタによって標準フィルタを自動認識して呼び出すことができます。この方法により、企業独自のファイル・フォーマットを処理できますが、標準のファイル・フォーマットは標準フィルタに渡されます。
セクショナ
セクショナ・オブジェクトは、各テキスト・ユニットを含むセクションを識別します。通常、これらのセクションは、事前定義された HyperText Markup Language(HTML)または eXtensible Markup Language(XML)セクションです。また、セクショナによって全てのタグをセクション・デリミタとして処理するように選択できます。例:<TITLE>XML Handbook</TITLE>。これにより、WITHIN 演算子を使用してタグ間を検索できます。WITHIN 演算子の使用方法は、XML 検索のセクションで説明します。
レクサー
レクサーは、セクショナの出力をワードまたはトークンに分離するためのものです。西ヨーロッパ系の言語におけるもっとも簡単な例をあげると、レクサーによってテキストはアルファベットの連続した文字列に分割されます。次の文字列があるとします。
Aha!It's the 5:15 train, coming here now!
この文字列は、句読点と特殊文字を取り除いた単語に分割されます。
aha it s the 5 15 train coming here now
レクサーは通常、ストップワードを削除します。ストップワードとは、アプリケーション開発者により定義される、またはデフォルト・リストから取得される共通ワードです。その結果、上記の文字列は以下のようになります。
aha * * * 5 15 train coming * now
アスタリスクは、削除されたストップワードを表します。実際に索引付けはされませんが、ストップワードがその位置に存在することが索引に記述されます。検索では、ストップワードはフレーズの一部として使用されている単語と一致します。たとえば、“kicking the ball”は“kicking a ball”と一致しますが、“kicking ball”とは一致しません。
ストップワードはアプリケーション開発者が指定できます。また、すべての数字をストップワードとして定義できます。
6 | Oracle Text 12.2の新機能
レクサーの基本設定
レクサーを微調整するためのオプションが多数用意されています。たとえば、開発者は索引での大/小文字の区別の有無を選択でき、"PL/SQL"を 2 つの単語"PL"と"SQL"として索引付けしたり単一の文字列"PL/SQL"として索引付けするなど、特定の文字をトークンに分割したり、トークンの一部として索引付けしたりすることもできます。
言語固有の機能
欧米諸言語
• 基本文字変換 - アクセント記号が付いた文字を"正規化"して、アクセント記号のない形式に変更できます。したがって、“acción”を検索すると、“accion”と“acción”がマッチします。
• 代替スペリング – ドイツ語などの一部の言語では、アクセント記号付き文字の代わりとなる別のスペリング方法があります。たとえば、“Muenchen”と“München”という 2 つの単語は同じものとみなされます。代替スペリング索引付けオプションを選択すると、この 2つの単語はともに“Muenchen”として索引付けされます。同じ変換が問合せ時にも適用されるため、上の 2 つの単語のどちらを検索しても、索引の“Muenchen”と一致することになります。
• 複合語処理 - Oracle Text は、ドイツ語およびオランダ語の複合語を処理するテクノロジーを備えています。索引に対応するように、複合語はそれぞれのコンポーネント・フォームに分割されます。
マルチバイト言語
シンボリック言語には、欧米諸言語のようにスペースで区切られた単語は存在しません。そのため、文字群に索引を付ける方法の決定には別のルールが必要になります。Oracle Text では、中国語、日本語、韓国語のテキスト用に特殊なレクサーを用意しています。
また、多言語検索アプリケーションを作成することも可能です。ドキュメントの言語があらかじめ分かっている場合、特定のデータベース列を索引付け時の LANGUAGE 列として指定できます。ドキュメントの言語が不明な場合、AUTO_LEXER を使用できます。これは自動言語認識機能であり、複数の言語に関する広範なセグメント分け機能やステミング機能を備えています。
索引付けエンジン
索引付けエンジンは、トークンを含むドキュメントにトークンをマッピングする逆向きの索引を作成します。この段階では、あらかじめ指定されていれば、Oracle Text によってストップリストが使用されます。ストップリストには、テキスト索引から排除すべき単語やテーマをユーザーが指定できます。
7 | Oracle Text 12.2の新機能
パイプラインの最終出力は逆向きの索引になります。これは、ドキュメントから選び出した単語のリストであり、各単語にはそれが使用されているドキュメントのリストが添付されます。これはテキストの通常の見方とは逆であることから逆向きの索引と呼ばれており、各ドキュメントに単語リストが付いた状態でのドキュメント・リストになっています。
統合テキスト検索機能の利点
Oracle Database 12c では、拡張フレームワークを使用して、開発者がデータベース・カーネルで認識されるデータ・タイプを拡張できます。Oracle Text では、テキスト索引と標準の Oracle 問合せエンジンを完全に統合するためにこのフレームワークを使用しています。その結果、ユーザーは次のことが可能になります。
• すべてのデータ(テキスト・データと構造化データ)に対して 2 つのリポジトリではなく単一のリポジトリを使用。これにより、保守やバックアップなどが容易になります。
• 同一リポジトリでの索引。これにより、テキスト問合せおよび複合問合せを効率的に処理できます。
• 単一の API によるアプリケーション開発。
• Oracle SQL 実行エンジンおよび問合せプラン・オプティマイザとの統合。
コストベース・オプティマイザは、問合せの実行時プロパティに基づいて最速の実行プランを選択できます。そのため、列のテキスト条件を評価するために、Oracle Text では次の 2 つの方法を用意しています。
1. 拡張フレームワークでテキスト索引を行ソースとして設定し、条件を満たす ROWID をカーネルにパイプライン処理できます。
2. 拡張フレームワークで、"この ROWID を持つ行は条件を満たすのか"という疑問に答えることができます(索引機能の起動)。
次のように要約すると、統合の利点は明白です。
• 低コスト
Oracle Text は Oracle Database 12c のすべてのエディションに含まれています。他の製品を別途購入したり統合したりする必要はありません。
• 高パフォーマンス
データベースによって、テキストと構造コンテンツの両方を含む問合せを実行する最速のプランが選択されます。
• 高度な整合性
テキストはデータベースに保存されるため、テキストが整合性の利点をすべて継承します。たとえば、データベースに対するすべての更新をテキスト検索機能に反映できるため、ユーザーはすべてのデータについて統合された総合的なビューを得られます。
8 | Oracle Text 12.2の新機能
• 複雑さの軽減
テキストは構造化データと同じように処理されます。このため、既存システムでのテキスト検索アプリケーションの開発および統合が容易です。
• 優れた管理性
Oracle Text は、管理者が一般的に持つスキルを活用して、標準的なエンタープライズ管理ツールによって管理することが可能です。
• セキュリティ
Oracle Text ではデータベースのセキュリティ機能が使用されます。
Oracle Textの機能
このセクションでは、Oracle Text の主な機能について詳しく説明します。
索引タイプ
Oracle Text には、標準、カタログ、分類という 3 種類の索引タイプがあり、すべてのテキスト検索ニーズに対応しています。表 1 は、3 種類の索引タイプの概要を示しています。
1. ドキュメントや Web ページを対象とする従来型の全文検索に使用する、標準的な索引タイプ。CONTEXT 索引タイプでは、不要な結果のページを返すことなく、必要なコンテンツを検索できる豊富なテキスト検索機能が使用可能です。
2. e ビジネス・カタログ専用に設計された最初のテキスト索引である、カタログ索引タイプ。CTXCAT カタログ索引タイプでは、Web 速度での柔軟な検索およびソートが可能です。
3. 分類アプリケーションおよびルーティング・アプリケーションの作成に使用する、分類索引タイプ。CTXRULE 索引タイプは問合せ表に作成され、この問合せ表で、問合せに分類条件またはルーティング条件が定義されます。
索引タイプ アプリケーション・タイプ 問合せ演算子
CONTEXT テキストが大量のまとまったドキュメントで構成されている場合、この索引を使用
してテキスト検索アプリケーションを作成します。MS Word、HTML、XML、プ
レーン・テキストなどの多様なフォーマットのドキュメントを索引付けできます。
CONTEXT索引では、さまざまな方法で索引をカスタマイズできます。
CONTAINS
CTXCAT この索引タイプを使用して、項目名、価格、複数の列に保存されている記述など、
小さいテキスト断片を索引付けします。特に、複合問合せに適しています。 CATSEARCH
CTXRULE CTXRULE索引は、ドキュメント分類アプリケーションの構築に使用します。この
CTXRULE索引は問合せ表に作成され、この問合せ表で、各問合せに分類が定義され
ます。 単一のドキュメント(プレーン・テキスト、HTML、またはXML)は、MATCHES演算子を使用して分類できます。
MATCHES
表1:索引タイプの概要
9 | Oracle Text 12.2の新機能
サブストリング索引とプリフィックス索引
Oracle Text には、CONTEXT 索引タイプを使用したサブストリング索引とプリフィックス索引があります。ワイルド・カード問合せが後方一致および中間一致の場合、サブストリング索引を作成するとパフォーマンスが向上します。ワイルド・カード問合せが前方一致の場合は、プリフィックス索引を作成すると、パフォーマンスが向上します。
索引の保守と同期化
Oracle Database 12c では、ユーザーは索引作成時に索引更新の設定を指定でき、手動、コミット時、または一定の間隔で更新することを指定できます。また、ユーザーはトランザクション型のテキスト索引を指定でき、挿入後または更新後、直ちにドキュメントを検索できます。e ビジネス・カタログで通常使用される短いタイプのテキスト用に設計されたカタログ索引タイプは、常にトランザクション型であり、同期化は不要です。
パラレル索引付け
パラレル索引付けでは、複数の CPU コアを利用できます。パラレル索引付けを作成すると、次のような場合に有効です。
• パフォーマンスの向上
• データ・ステージング
• 大規模なデータ収集に基づくアプリケーションの迅速な初期導入
• アプリケーション開発中にユーザーが異なる索引パラメータやスキーマのテストを実行する必要がある場合のアプリケーション・テスト
以下の例では、並列度 3 でテキスト索引を作成します。
CREATE INDEX myindex ON docs(tk)
INDEXTYPE IS ctxsys.context PARALLEL 3;
図 2 は、テキスト索引作成がパラレルで機能する仕組みを示しています。Oracle Parallel 機能は、並列度に従って表を細かい部分(ポーション)に分割します。各パラレル・スレーブは、表内の 1ポーションで機能します。
10 | Oracle Text 12.2の新機能
図2:テキスト索引のパラレル作成
ローカル・パーティション索引
ローカル・パーティションに基づいてテキスト索引を作成できます。ベース表の各パーティションは独自の索引を持ち、複数のパーティションにまたがる問合せは、必要なすべてのローカル索引にアクセスできます。このアプローチの主な利点は、次のとおりです。
• 管理性:管理者が索引のパーティション化の方法、オンライン/オフラインにするパーティション、バックアップ用パーティションなどを決定できます。
• パフォーマンス:索引がローカルにパーティション化された環境では、スケーラビリティが大幅に改善されます。
問合せ演算子
Oracle Text では、複数の方法を用いて検索問合せを効率的に処理できます。
• キーワード検索:ドキュメント内のキーワードを検索します。ユーザーは、問合せをもっともよく表した 1 つまたは複数のキーワードを入力します。
• コンテキスト問合せ:特定のコンテキストで単語を検索します。ユーザーは、単語が相互に近接して含まれているテキストを検索します。
• ブール演算:キーワードとブール演算を結び付けます。ユーザーは、ブール演算とキーワードを結び付けた問合せを表すことができます。
• 言語機能:ファジー言語処理およびその他の自然言語処理技術を使用します。ユーザーは、何らかの関係性を有するテキストを検索します。
テキスト索引のパラレル作成
表 テキスト索引 各パラレル・スレーブが
表内の 1 ポーションで機能
11 | Oracle Text 12.2の新機能
• サブストリング照合:特定のプロパティを持つテキストの検索です。ユーザーは、特定の文字列が単語内に含まれているテキストを検索します。
表 2 に、問合せ演算子の一部を示します。
演算子 説明
ABOUT 可能な場合、テーマ検索を実行し、また、問合せから戻される関連ドキュメントの数を増やします。
ACCUMULATE(,) 問合せ用語のうちどれか1つ以上を含むドキュメントを検索します。検索する用語の数を増やすほど、関連性が
高まります。 AND(&) すべての問合せ用語を含むドキュメントを検索します。
Broader Tem(BT、BTG、GTP、BTI) より広範な用語または高レベルの用語としてシソーラスに定義されている用語を含めるように、問合せを拡張し
ます。 EQUIValence(=) 問合せで代替置換用語を指定します。
FUZZY 指定した用語とスペルが類似している単語、または音が類似している単語を含めるように、問合せを拡張しま
す。 HASPATH 指定されたセクション・パスを含むすべてのXMLドキュメントを検索します。
INPATH XMLドキュメントの特定のパス内で検索を実行します。
MDATA MDATA(MetaDATA)セクションの問合せを実行します。
MINUS(-) 特定の用語を含むドキュメントの関連性を下げます。ただし、除外するわけではありません。
MNOT Mild NOT – 指定されたフレーズの一部ではない単語を検索します。たとえば、“York MNOT New York”と指定す
ると、ドキュメント内の他の場所にフレーズ“New York”が含まれている場合でも、単語“York”を検索します。 Narrow Term(NT、NTG、NTP、NTI) 指定された用語よりも狭い範囲または低レベルの用語としてシソーラスに定義されている用語をすべて含めるよ
うに、問合せを拡張します。 NDATA 正確な名前が不明な場合に、NDATAセクションで"名前検索"を実行します。
NEAR(;) 2つ以上の問合せ用語の近接性に基づいてスコアを返します。
NOT(~) 特定の用語を含むドキュメントを除外します(“term1 NOT term2”の形式で使用する必要があります。“NOT term1”の形式では使用できません)。
OR(|) 問合せ用語のうちどれか1つ以上を含むドキュメントを検索します。
Preferred Term(PT) 問合せ内の用語を、その用語の優先語としてシソーラスに定義されている語句に置換します。
Related Term(RT) 問合せ内の用語を、その用語の関連語としてシソーラスに定義されている語句に置換します。
SDATA 構造化されたDATAセクション内を検索します。
Soundex(!) 音が類似した用語を含めるように、問合せを拡張します。
Stem($) 問合せ用語と同じ語根を持つ語を検索します。
Stored Query Expression (SQE) CTX_QUERY.STORE_SQEプロシージャで作成され、保存されている問合せ式を呼び出します。
SYNonym 指定された用語の同義語としてシソーラスに定義されている用語をすべて含めるように、問合せを拡張します。
Threshold(>) しきい値を下回るスコアのドキュメントを結果セットから排除します。この演算子は、ある用語がドキュメント
内でどのようにスコアを出すかに基づいて、問合せ用語レベルでドキュメントを選択します。 Translation Term(TR) シソーラスに定義されているすべての外国語用語を含めるように、問合せを拡張します。
Translation Term Synonym(TRSYM) 問合せ用語に対して定義された対応外国語、問合せ用語の同義語、および同義語の対応外国語すべてを含めるよ
うに、問合せを拡張します。 Top Term 問合せ内の用語を、シソーラスの標準階層内でその用語について定義されている最上位語に置換します。
Weight(*) 指定した係数(最大で100)をスコアに掛けます。
WITHIN 問合せをドキュメント・セクションに限定します。
表2:CONTAINS問合せ演算子の概要
12 | Oracle Text 12.2の新機能
国際化
企業活動の国際化が進むにつれて、世界中で業務が行われるようになり、多言語機能の重要性が高まっています。企業ポータル、ライブラリ、コンテンツ管理システムは、さまざまな言語で作成されたコンテンツや各種文字セットでエンコードされたコンテンツの検索機能を必要とします。XMLの普及により、多言語メタデータや多言語コンテンツの検索機能は、これまで以上にその重要性が明らかになってきました。
Oracle Text では、ASCII、UTF- 8、JA165JIS、GBK、BIG5 など、すべての Oracle NLS 文字セットをサポートしています。欧米の諸言語(英語、フランス語、スペイン語、ドイツ語など)、日本語、韓国語、中国語(繁体および簡体)によるドキュメント間の検索もサポートしています。このような多言語機能により、ユーザーは複数言語による検索アプリケーション開発が可能となるほか、以下の対応が可能になります。
• ドキュメント・コレクション内の複数言語を組み合わせる(中国語のドキュメントと英語のドキュメントなど)。
• 中国語などの用語の問合せに英語を使用する(またはその逆)。以下の問合せでは、説明に"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
(TRSYN を使用するには、翻訳シソーラスをロードする必要があります。Oracle Text には、このようなシソーラスは付属していません)。
ドキュメント・サービス
Oracle Text には、ハイライト、マークアップ、スニペット、テーマ、要旨という主要ドキュメント・サービスが用意されています。この種のサービスは、戦略の閲覧やドキュメント表示に非常に有効です。また、ユーザーに対して情報フィードバックを提供します。
ハイライト・サービス
問合せ文字列を取り込み、ドキュメント・コンテンツをフェッチして、ドキュメント内のどの用語が問合せにおける一致の根拠となったのかを表示します。
13 | Oracle Text 12.2の新機能
マークアップ
マークアップはハイライト・サービスをさらに一歩進めたもので、一致用語がマークアップされたテキスト・バージョンのドキュメントを作成します。
スニペット
これは、キーワードがハイライト表示されたショート・バージョンのテキストを作成するのに有効なドキュメント・サービスです。この手法は非常に広く使用されており、ユーザーはドキュメントを実際に開く前にその内容を知ることができます。図 4 は、このサービスを使用して、検索結果を表示した例を示しています。
図4:検索結果を表示するドキュメント・スニペット
従来のテキスト検索機能を補足するため、Oracle Text には高度な言語機能が設定されています。ドキュメント・サービス用のこれらの言語機能により、ドキュメントのテーマやテーマ・サマリーを、オンデマンドやドキュメントごとに作成することが可能になります。
テーマの抽出
テーマ機能は、ドキュメントの内容を説明するスナップショットを作成します。特定の用語やフレーズを含むドキュメントを検索するのではなく、特定の主題に関係するドキュメントを、その主題がドキュメント内に明白に言及されていない場合でも検索できます。テーマ問合せを実行すると、要求した主題に関係するドキュメントのヒット・リストが返されて、その主題に各ドキュメントがどの程度深く関わっているかを表すスコアが表示されます。
要旨の生成
一般的要旨(Generic Gist)は、そのドキュメント全体に関わる主題をもっともよく表現しているセンテンスまたはパラグラフで構成されるサマリーです。この一般的要旨を使用して、テキストのメイン・コンテンツを取り出したり、テキストの主題に対するユーザーの関心の度合いを評価したりできます。要旨は、パラグラフ・レベルでもセンテンス・レベルでも作成することが可能です。また、抽出したテーマの 1 つにもっとも深い関わりのあるドキュメント内の箇所を示す"視点(Point of View)”要旨も作成できます。
14 | Oracle Text 12.2の新機能
高度な機能
分類とクラスタリング
ドキュメント分類アプリケーションは、送られてくるドキュメントをその内容に基づいて分類するためのアプリケーションです。こうしたアプリケーションは、ドキュメント・ルーティング・アプリケーションやドキュメント・フィルタリング・アプリケーションとも呼ばれています。たとえば、オンライン・ニュース・サイトであれば、送られてくる多数の記事を受信した時点で、政治、経済、スポーツなどのカテゴリに分類することが必要になります。
Oracle Text には、ユーザーがこうしたコンテンツ分類に最適の方法を選択するのを支援する多数の機能が備わっています。
ルールベースのアプローチは、ドキュメントが特定のカテゴリに属する理由を示すユーザー定義のカテゴリ(ルール)で構成されています。したがって、CTXRULE 索引タイプの場合は、分類条件またはルーティング条件を定義するルール(問合せ)が索引付けされます。ドキュメントの受信時に、MATCHES 演算子を使用してドキュメントを分類できます。図 8 は分類の主な流れを示したものです。
以前のアプローチでは、ユーザーは問合せの質を高めたり、全体像を理解したりするのに多くの時間を費やす必要がありました。大規模なデータ・セットには、このアプローチで対応するのは非常に困難でした。
分類トレーニング・アプローチは、特定の主題に基づいてユーザーが提供するサンプル・ドキュメントで構成されています。CTX_CLS パッケージによってトレーニング・セットが取り込まれ、その主題領域でドキュメントを識別するためのルールが自動的に生成されます。これには、ディシジョン・ツリーとサポート・ベクター・マシン(SVM)という 2 つの方法があります。
一方、クラスタリングは、パターンをグループへと分類する非管理型の手段です。Oracle Text は、クラスタを構築するための CTX_CLS.CLUSTERING パッケージを提供します。このパッケージによって、ドキュメントはその意味的内容に従い自動的にクラスタ化されます。各クラスタには、ドキュメント・コレクションのサブセットが含まれます。クラスタ内のドキュメント同士は、クラスタ外のドキュメントに比べると、より類似しているとみなされます。これには、フラット・パーティション化に関する k-means と階層的クラスタリングの 2 種類の方法があります。
Oracle
Databas
送られてくる
ドキュメント
一致した
ドキュメント
ルールと照合
分類アプリ
ケーション 操作の
実行
Oracle Database
12c
15 | Oracle Text 12.2の新機能
ナレッジ・ベース
Oracle Text のナレッジ・ベースには、2000 種類の主要カテゴリに属する広範な領域から収集した40 万件を超えるコンセプトが含まれています。これらのカテゴリは、ビジネスと経済、科学技術、地理学、政治と軍事、社会環境、抽象的アイディアと概要という 6 つの最上位語に従って階層的に組織化されています。概要の分類、カテゴリの選択、階層組織化は、特に意味的あいまい性の問題を回避することに重点を置いた上で、オントロジーの純正さよりも情報検索における実用性を重視して慎重に設計されています。ユーザーは、新しい用語を追加したり既存の用語を再定義したりすることで、このナレッジ・ベースを拡張およびカスタマイズできます。たとえば、医学用シソーラスをインポートした後に、ナレッジ・ベースを拡張できます。
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
16 | Oracle Text 12.2の新機能
検索は、次の 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;
すでに説明したとおり、テキスト索引構造はデータベースに保存されています。Oracle Text の索引は、それぞれ$I、$K、$N、$R と呼ばれる 4 つの基本的な表で構成されます。そのほかの表は、特定の索引付けオプションが有効になっている場合に使用されます。これらの表はテキスト索引の所有者のスキーマ内に存在し、索引名である DR$と接尾辞($I など)を連結した名前になっています。
$I 表は、索引付けされたすべてのトークンと、そのトークンが含まれるドキュメントのバイナリ表現、ドキュメントにおけるトークンのポジションによって構成されています。各ドキュメントは、内部 DOCID 値によって表されます。
$K 表は、内部 DOCID 値を外部 ROWID 値にマッピングする索引構成表(IOT)です。この表の各行は、1 組の DOCID/ROWID によって構成されています。IOT により、対応する ROWID 値からDOCID の高速検索が可能です。
$R 表は、$K 表からの逆ルックアップ用に設計されており、DOCID 値が分かっている場合、ROWIDをフェッチします。
$N 表には削除された DOCID 値のリストが含まれており、索引最適化プロセスで使用(およびクリーンアップ)されます。
これらの表は、すべての CONTEXT 索引に作成されます。
サブ表はすべて、索引の所有者のスキーマで作成されます。たとえば、次のように一般的な SQL コマンドを使用して表示できます。
SQL> 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
17 | Oracle Text 12.2の新機能
通常のビューで索引名を確認できます。
SQL> 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
SQL> 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 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
18 | Oracle Text 12.2の新機能
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 では、ABOUT 演算子を使用してテーマやコンセプトベースの検索をサポートしており、逆向きの索引のテーマと一致するものがフリー・テキスト問合せから抽出されます。たとえば、ドキュメントに"train"(列車)という用語がまったく含まれていなくても、列車に関係するニュース記事を検索することが可能です。
SELECT id title
FROM news_table
WHERE CONTAINS(article'about(train) ' ) > 0;
Id Title
334 Rail Transportation in Europe
テーマ、ABOUT 問合せ、要旨、ABOUT 問合せハイライト、階層問合せフィードバックという、Oracle Text のテーマ・ベース機能は、すべて内部ナレッジ・ベースに依存しています。
Oracle データベースの能力によって、複数領域にわたる問合せの作成が可能になりました。たとえば、トロントから 35km 以内に在住していて、癌の罹患歴を持つ家族がおり、喫煙者である、50 歳以上の患者数を検索して胸部レントゲン写真を入手する場合、次のような問合せを実行します。
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, o.loc '<= 35 km')
AND Contains(p.medical_history 'smoke AND cancer')>0
19 | Oracle Text 12.2の新機能
SDATAセクション
Oracle Text 11g では、SDATA(構造化データ)セクションが新たに加わりました。SDATA セクションは、フィールド・セクションやゾーン・セクション同様、ドキュメントのテキスト内に組み込まれていますが、これまでのセクションと異なり、文字、数字、日付情報を含めることができ、"greater than”、“less than”、“between”などの演算子を使用した検索や等号検索が可能です。
以下は、SDATA 問合せ演算子を使用した問合せの例です。
SELECT item_id FROM items WHERE
CONTAINS (description, 'racing and
SDATA(itemtype=’’BOOK’’) and SDATA(price<10)’) > 0
ORDER BY price DESC
ここでは、テキスト問合せの一部として、範囲検索を実施しています。これは、さまざまな状況に有効な新機能です。
複合ドメイン索引
複合ドメイン索引では、SDATA セクションと同じ基礎テクノロジーを利用していますが、より標準の方法で使いやすくなっています。
はじめに、用語について解説します。"ドメイン索引"とは、特定のタイプのデータ(この例の場合、テキスト・データ)とともに使用するタイプの索引です。通常の Oracle 用語における複合索引は、複数の例を対象とする索引です。したがって、複合ドメイン索引(CDI)は、複数の列を対象とする通常のドメイン索引の拡張機能になります。
ここで、テキスト索引と 2 つの構造化列を検索する代表的な複合問合せを確認します。
SELECT item_id FROM items WHERE
CONTAINS (description, 'racing') > 0
AND itemtype = 'BOOK'
AND price < 10
ORDER BY price DESC
この問合せに適切な索引を古いバージョンで作成するには、次の SQL コマンドを実行することになります。
CREATE INDEX typeind ON items (itemtype)
CREATE INDEX priceind ON items (price)
CREATE INDEX descind ON items (description) INDEXTYPE IS ctxsys.context
20 | Oracle Text 12.2の新機能
Oracle Database 12c では、1 回の呼出しで必要な操作をすべて実行できます。
CREATE INDEX compind ON items (description)
INDEXTYPE IS ctxsys.context
FILTER BY itemtype, price
SORT BY price
Oracle では、price や itemtype 情報をテキスト索引内に保存します。問合せを変更する必要はありません(SDATA では変更する必要があります)。オプティマイザはテキスト索引だけで問合せ要件が満たされることを理解し、また行のフィルタリングがテキスト索引プロセッサに"押し込まれ"、問合せ要件を満たす正しい itemtype と price を入手できます。また、テキスト索引に対して、正しくソートされた行を返すように要求しますが、これはデータベースからすべての行をフェッチして、その後でソートするよりもかなり効率的です。
XMLのサポート
XML 機能には、WITHIN 演算子、ネストされたセクション検索、属性値内検索、複数のタグの同一名へのマッピング、INPATH 演算子と HASPATH 演算子を使用したパス検索などがあります。
次の XML の例を使用して、Oracle Text 機能を示します。
<?xml version="1.0"?>
<FAQ OWNER="Billy Text">
<TITLE>Oracle Text FAQ</TITLE>
<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>
21 | Oracle Text 12.2の新機能
これで検索が可能になります。
SELECT title description
FROM FAQTable
WHERE CONTAINS(text'Oracle WITHIN QUESTION')> 0;
また、属性値による検索も可能です。
SELECT title description
FROM FAQTable
WHERE CONTAINS(text'Billy WITHIN FAQ0OWNER')> 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 Text には、XMLType 値を対象とする existsNode と extract という 2 種類の SQL 関数があります。
• existsNode():XPath 式が指定された場合、ドキュメントに適用された XPath が有効なノードを返せるかをチェックします。
• extract():XPath 式が指定された場合、ドキュメントに XPath を適用し、フラグメントをXMLType として返します。
上記の関数は、コンテンツ検索用のすべてのテキスト問合せ言語と組み合わせることができます。たとえば、answer タグに 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
C O N N E C T W I T H U S
blogs.oracle.com/oracle
facebook.com/oracle
twitter.com/oracle
oracle.com
Copyright © 2017, Oracle and/or its affiliates.All rights reserved.本文書は情報提供のみを目的として提供されており、ここに記載されている内容
は予告なく変更されることがあります。本文書は、その内容に誤りがないことを保証するものではなく、また、口頭による明示的保証や法律に
よる黙示的保証を含め、商品性ないし特定目的適合性に関する黙示的保証および条件などのいかなる保証および条件も提供するものではありま
せん。オラクルは本文書に関するいかなる法的責任も明確に否認し、本文書によって直接的または間接的に確立される契約義務はないものとし
ます。本文書はオラクルの書面による許可を前もって得ることなく、いかなる目的のためにも、電子または印刷を含むいかなる形式や手段に
よっても再作成または送信することはできません。
Oracle および Java は Oracle およびその子会社、関連会社の登録商標です。その他の名称はそれぞれの会社の商標です。
Intel および Intel Xeon は Intel Corporation の商標または登録商標です。すべての SPARC 商標はライセンスに基づいて使用される SPARC
International, Inc.の商標または登録商標です。AMD、Opteron、AMD ロゴおよび AMD Opteron ロゴは、Advanced Micro Devices の商標または
登録商標です。UNIX は、The Open Group の登録商標です。0517
ホワイト・ペーパー・タイトル 2017 年 5 月
著者:Roger Ford
共著者:Asha Makur