ここでは、このリリースのOracle Textで変更された点について説明します。
この項では、このリリースのOracle Textで導入された新機能について説明します。Oracle Database 12cの新機能の詳細は、『racle Database新機能ガイド』を参照してください。
BIG_IOのラージTOKEN_INFOオプション
新しいワードリスト・プリファレンスのBIG_IOでは、4,000バイトに制限されているインラインBLOBSではなく、可能なかぎり1つの大きなSecureFilesデータベース・フィールドにTOKEN_INFOを格納するように指定します。
こうすると、大きいTOKEN_INFOデータ項目をディスクからロードするときの頻繁なシークが不要になります。一般に順次I/OはランダムI/Oよりもかなり高速であり、パフォーマンスが向上します。
「CONTEXT索引のBIG_IOオプションを使用した応答時間の短縮」を参照してください。
個別オフセット
DOCIDリストは索引付けされた項目を含むドキュメントを識別し、OFFSETは各ドキュメントにおけるその項目の場所を識別します。
新しいワードリスト・プリファレンスのSEPARATE_OFFSETSを、BIG_IOと組み合せて使用すると、DOCIDとOFFSETが索引内の別々の場所に格納されます。
DOCIDリストは、以前に組み合せたTOKEN_INFOデータよりはるかに短くなります。したがって、単一項目の問合せやAND問合せ、およびオフセット(ワード位置)情報を必要としないその他の問合せを実行するときに必要なI/Oが軽減されます。このような問合せのパフォーマンスが向上します。オフセット情報を必要とする問合せ(句検索やNEAR検索など)は若干遅くなる可能性があります。
「CONTEXT索引のSEPARATE_OFFSETSオプションを使用した応答時間の短縮」を参照してください。
Oracle Database 11gの結果セット・インタフェースは、検索結果のページに必要な様々な種類のデータを同時に作成でき、オーバーヘッドを共有することでパフォーマンスを向上させました。結果セット・インタフェースは、SQLでは表現しにくいデータ・ビューも返すことができます。
スニペット情報と検索結果を一緒にエンド・ユーザーに示すには、Oracle Database 11gでは複数の反復処理が必要でした。Oracle Database 11gのアプローチでは、検索問合せを実行してから、その結果を反復処理して各行のスニペット情報を取得する必要がありました。
Oracle Database 12cリリース(12.1)では、結果セット・インタフェースのスニペット情報がネイティブでサポートされており、前述の問題が解決されます。必要な場合に結果セット記述子にSNIPPET
を定義するだけです。定義した場合、ユーザーが結果セットのスニペットを他の結果セットと一緒に取得します。
このサポートにより、結果セット・インタフェースに基づくアプリケーションが高速になり柔軟性が向上します。
「CTX_DOCのハイライト表示プロシージャ」を参照してください。
フォワード索引機能では、トークン化されて圧縮されたドキュメントがOracle Text索引に格納されます。つまり、ハイライトやスニペット生成などの機能を実行するとき元のドキュメントに対するアクセス、フィルタ、トークン化が不要になるということであり、プロセスの負荷軽減につながります。
「ドキュメント・サービス・プロシージャのパフォーマンスと正引き索引」を参照してください。
ニア・リアルタイム索引付けにより、最近変更された索引情報を、メモリーにとどまるように設計されている新しいステージング索引で管理することで、大量のDMLと索引を頻繁に同期させることができます。索引の最適化を行う新しいMERGEモードを使用すれば、データをステージング索引から主索引に定期的に移動することができます。新しいオプションを有効にするには、STAGE_ITAB記憶域オプションを使用します。
新しいステージング索引表は比較的小さいため、メモリーへのキャッシュが容易です。メモリーに存在するとき、断片化されている索引のこの部分に対するコストは実質的にはありません。断片化した最近の索引を断片化していない主索引から分離することによってパフォーマンスが向上し、ユーザーが頻繁に索引を同期化しても問合せパフォーマンスは低下しません。TRANSACTIONALおよびSYNC(ON COMMIT)の索引パラメータと併用すると、索引の同期化が効果的です。
「CONTEXT索引のSTAGE_ITABオプションを使用した応答時間の短縮」を参照してください。
ほぼリアルタイムの索引と自動管理を組み合せると、最適化マージを実行して小さい(通常はインメモリーの)$G表から大きい(通常はディスク上の)$I表へデータを移動する必要性を回避してバックグラウンド・タスクを実行できます。システムの負荷が高くない場合、自動管理プロセスはバックグラウンドで実行します。索引を自動的に最適化するには、管理システムに登録する必要があります。
この機能により管理が単純化され、ニア・リアルタイム索引のパフォーマンスが向上し、システムの速度を低下する手動でのマージ最適化のリスクを避けることができます。
ほぼリアルタイムの索引のパラメータ設定については、『Oracle Textリファレンス』を参照してください。
POLICY_LANGUAGES
という新しいプロシージャがCTX_DOCパッケージに追加されました。このプロシージャで、テキストのセクションの言語を識別できるようになります。
アプリケーションは、適切な方法でドキュメントを処理(たとえば、LANGUAGE
メタデータ列の設定)するためにドキュメントの言語を識別できます。
言語の識別の詳細は、『Oracle Textリファレンス』を参照してください。
ドキュメントレベルのレクサーを使用すると、ユーザーは、様々なドキュメントに対する様々なレクサーとストップリスト・プリファレンスを索引に定義できます。これはMULTI_LEXERおよびMULTI_STOPLISTの拡張可能ですが、レクサーは言語とは独立して選択できるようになりました。この機能で、アプリケーションの柔軟性が今までより高くなります。種類の異なるドキュメントやソースの異なるドキュメントに、異なるレクサーまたはストップワード要件を指定することができます。
「問合せ言語」を参照してください。
現在、日本語VGRAMレクサーでは、コストがかかるワイルドカードの拡張が特定の日本語問合せで必要です。現在、Oracleによって日本語VGRAMレクサーのスイッチが提供され、BIGRAMモードのみを生成できるようになったため、ワイルドカード問合せの必要がなくなりました。
この機能の利点は、日本語VGRAMレクサーで索引付けされたテキストに対する問合せパフォーマンスが向上することです。
日本語のVGRAMレクサーの詳細は、『Oracle Textリファレンス』を参照してください。
パターン・ストップクラスで正規表現を指定することができ、その正規表現に一致するトークンがあればストップワードとみなされます。つまり、索引付けが行われず、問合せで重要とみなされません。領域を節約して、パフォーマンスを向上させるために、不要な文字列(たとえば16進数や識別コードなど)を索引から取り除くことができます。
パターン・クラスを使用するときのADD_STOPCLASSの詳細は、『Oracle Textリファレンス』を参照してください
このリリースでは、次の問合せが強化されています。
NEAR演算子の強化とMNOT演算子
NEAR演算子は、ネストして使用できるように改善され、NEAR演算子の内部でOR構造も使用できます。このような拡張により、アプリケーションの作成の柔軟性が向上しています。
マイルドNOT(MNOT
)は、句の一部ではない語を検索する新しい演算子です。たとえば、「York」という都市名が含まれるものを検索する場合に、「New York」という句の一部である場合は除外するとします。「New York」を含むドキュメントをすべて除外したのでは、この問題は解決できません。「York」と「New York」の両方の言葉を含んでいるドキュメントもありえるからです。新しいMNOT
演算子を使用するとこのようなセマンティクが可能になります。
MNOT
演算子によって、語を検索するときに、その語を含む不要な語句を除外することができ、、検索の精度とリコールが改善されます。
MNOT
の詳細は、『Oracle Textリファレンス』を参照してください。
NEAR
演算子の詳細は、「NEAR演算子およびNEAR_ACCUM演算子による近接問合せ」を参照してください。
セッション期間SQE
ストアド・クエリー式(SQE)を使用すると、頻繁に使用される問合せ式を保存できます。セッション中SQEは、永続的に保存されるのではなく、現在のセッション中だけ存在します。セッション・メモリーに格納されるため、永続的なSQEより処理が高速です。また、アプリケーション内で短期間だけ使用するためにSQEが頻繁に作成されて起きやすい乱雑な状態も回避されます。
SQEの管理の詳細は、『Oracle Textリファレンス』を参照してください。
問合せフィルタ・キャッシュ
テキスト検索の一般的なシナリオでは、一連の特定の条件が多くの問合せで使用されます。たとえば、特定のユーザーのみに適した結果に限定するセキュリティ・フィルタを適用するとします。問合せフィルタ・キャッシュ機能では、特定の問合せ(または問合せの一部)の結果をキャッシュし、将来の検索をフィルタ処理するためにそれらの結果を使用できます。概念的にはストアド・クエリー式(SQE)に似ていますが、構成要素を他の問合せと共有する問合せの場合には、それ以上のパフォーマンス向上を期待できます。
このリリースでは、SDATAセクションに次の新機能が追加されています。
更新可能なSDATAセクション
SDATAセクションは、新しいPL/SQLパッケージCTX_DDL.UPDATE_SDATAを使用して更新できます。このパッケージは、行のデータの索引付けを再実行せずにSDATA項目の値を更新できます。
この機能によって、すぐに変更されるメタデータに関するパフォーマンスが向上します。たとえば、テキスト問合せに手持ち在庫水準を含めたい場合は、それをSDATAセクションにします。対応する行には、長いデータ・シートで情報が含まれているため、手持ち在庫水準が変化するたびに索引付けを再実行することは望ましくありません。この新機能を使用すると、索引のSDATA部分だけを更新することができます。
UPDATE_SDATAによって更新可能なSDATAセクションの詳細は、『Oracle Textリファレンス』を参照してください。
既存の索引へのSDATAセクションの追加
SDATAセクションは、既存の索引に追加することができます。索引を最初から再構築する必要はありません。新しいSDATAセクションは、その後で追加または更新されるすべてのドキュメントで索引付けされます。前に索引付けしたドキュメントは影響を受けません。
アプリケーションの柔軟性が向上し、稼動時間が長くなります。新しいビジネス要件を反映するように索引を変更でき、索引を最初から構築し直す必要もないためです。
SDATAセクションの詳細は、『Oracle Textリファレンス』を参照してください
SDATAセクションによる並替え
現在、問合せテンプレートでは、1つ以上のSDATAセクションによる順序付けがサポートされます。これにより、アプリケーション開発の柔軟性が向上し、標準のデータベース・ソートに比べて問合せが高速になります。
「SDATAセクションによる並替え」を参照してください。
以前は、フィールド・セクションは64個しか使用できませんでした。現在は、実質的に無制限のフィールド・セクション(10,000以上)を作成できます。フィールド・セクションのゾーン・セクションよりも効率的です。以前は、十分な数のフィールド・セクションを使用できないために、アプリケーションによってはゾーン・セクションを使用する必要がありました。この機能により、そのようなアプリケーションのパフォーマンスが向上します。
現在、使用可能なMDATAセクションの数が事実上無制限になりました。以前の最大数は100でした。この機能により、アプリケーションの柔軟性が向上します。複数のMDATAフィールドを1つに結合する必要もなくなりました。
「フィールド・セクション」を参照してください。
MDATAセクションの詳細は、『Oracle Textリファレンス』を参照してください。
このリリースのOracle XML Databaseで一部の機能が非推奨となったため、Oracle Text XMLアプリケーションに影響する場合があります。Oracle XML Databaseの非推奨となった機能と変更点は、『Oracle Database移行ガイド』を参照してください。
Oracle Textの次の機能は、このリリースでサポート対象外となります。
CTXXPATH
は、Oracle Database 12cリリース1 (12.1)ではサポートされません。CTXCAT索引型には影響しません。かわりに、XMLIndex
索引を使用してください。XMLIndex
の詳細は、『Oracle XML DB開発者ガイド』を参照してください。
テキスト索引に対するALTER
INDEX
OPTIMIZE
は、Oracle Database 12cリリース1 (12.1)ではサポートされません。ALTER
INDEX
OPTIMIZE
[token index_token | fast | full [maxtime (time | unlimited)]
操作は、Oracle Database 12cではサポートされません。索引を最適化するには、CTX_DDL.OPTIMIZE_INDEX
を使用してください。OPTIMIZE_INDEX
の詳細は、『Oracle Textリファレンス』を参照してください。
テキスト索引に対するSYNC [MEMORY memsize]
は、Oracle Database 12cリリース1 (12.1)ではサポートされません。索引を同期化するには、CTX_DDL.SYNC_INDEX
を使用してください。SYNC_INDEX
の詳細は、『Oracle Textリファレンス』を参照してください。
CHARSET_FILTER
フィルタ型は、Oracle Database 12cリリース1 (12.1)ではサポートされません。
Oracle Database 12cでサポート対象外となる機能の詳細は、『Oracle Databaseアップグレード・ガイド 』を参照してください。