Oracle® Text

リファレンス

12cリリース1 (12.1)

B71316-03(原本部品番号:E41399-12)

2017年6月

Oracle Textを使用したアプリケーション作成についての参照情報を提供します。

Oracle Textリファレンス, 12cリリース1 (12.1)

B71316-03

Copyright © 2001, 2017, Oracle and/or its affiliates.  All rights reserved.

原本著者: Roopesh Ashok Kumar

原本協力者: Drew Adams、Cathy Shea、Edwin Balthes、Eric Belden、Rajesh Bhatiya、Mohammad Faisal、Roger Ford、Rahul Kadwe、George Krupka、Paul Lane、Colin McGregor、Padmaja Potineni、Yiming Qi、Sanoop Sethumadhavan、Asha Tarachandani、Gaurav Yadav

このソフトウェアおよび関連ドキュメントの使用と開示は、ライセンス契約の制約条件に従うものとし、知的財産に関する法律により保護されています。ライセンス契約で明示的に許諾されている場合もしくは法律によって認められている場合を除き、形式、手段に関係なく、いかなる部分も使用、複写、複製、翻訳、放送、修正、ライセンス供与、送信、配布、発表、実行、公開または表示することはできません。このソフトウェアのリバース・エンジニアリング、逆アセンブル、逆コンパイルは互換性のために法律によって規定されている場合を除き、禁止されています。

ここに記載された情報は予告なしに変更される場合があります。また、誤りが無いことの保証はいたしかねます。誤りを見つけた場合は、オラクル社までご連絡ください。

このソフトウェアまたは関連ドキュメントを、米国政府機関もしくは米国政府機関に代わってこのソフトウェアまたは関連ドキュメントをライセンスされた者に提供する場合は、次の通知が適用されます。

U.S. GOVERNMENT END USERS: Oracle programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, delivered to U.S. Government end users are "commercial computer software" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations.As such, use, duplication, disclosure, modification, and adaptation of the programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, shall be subject to license terms and license restrictions applicable to the programs.No other rights are granted to the U.S. Government.

このソフトウェアまたはハードウェアは様々な情報管理アプリケーションでの一般的な使用のために開発されたものです。このソフトウェアまたはハードウェアは、危険が伴うアプリケーション(人的傷害を発生させる可能性があるアプリケーションを含む)への用途を目的として開発されていません。このソフトウェアまたはハードウェアを危険が伴うアプリケーションで使用する際、このソフトウェアまたはハードウェアを安全に使用するために、適切な安全装置、バックアップ、冗長性(redundancy)、その他の対策を講じることは使用者の責任となります。このソフトウェアまたはハードウェアを危険が伴うアプリケーションで使用したことに起因して損害が発生しても、オラクル社およびその関連会社は一切の責任を負いかねます。

OracleおよびJavaはOracle およびその関連企業の登録商標です。その他の名称は、それぞれの所有者の商標または登録商標です。

Intel、Intel Xeonは、Intel Corporationの商標または登録商標です。すべてのSPARCの商標はライセンスをもとに使用し、SPARC International, Inc.の商標または登録商標です。AMD、Opteron、AMDロゴ、AMD Opteronロゴは、Advanced Micro Devices, Inc.の商標または登録商標です。UNIXはThe Open Groupの登録商標です。

このソフトウェアまたはハードウェア、そしてドキュメントは、第三者のコンテンツ、製品、サービスへのアクセス、あるいはそれらに関する情報を提供することがあります。適用されるお客様とOracle Corporationとの間の契約に別段の定めがある場合を除いて、Oracle Corporationおよびその関連会社は、第三者のコンテンツ、製品、サービスに関して一切の責任を負わず、いかなる保証もいたしません。適用されるお客様とOracle Corporationとの間の契約に定めがある場合を除いて、Oracle Corporationおよびその関連会社は、第三者のコンテンツ、製品、サービスへのアクセスまたは使用によって損失、費用、あるいは損害が発生しても一切の責任を負いかねます。

目次

表一覧

タイトルおよび著作権情報

はじめに

- 対象読者

- ドキュメントのアクセシビリティについて

- 関連ドキュメント

- 表記規則

Oracle Textリファレンスのこのリリースでの変更点

- Oracle Text 12cリリース1 (12.1)での変更点

- 新機能

- 非推奨となった機能

- サポート対象外機能

1 Oracle TextのSQL文と演算子

- 1.1 ALTER INDEX

- 1.2 ALTER TABLE: サポートされるパーティション化文

- 1.3 CATSEARCH

- 1.4 CONTAINS

- 1.5 CREATE INDEX

- 1.6 DROP INDEX

- 1.7 MATCHES

- 1.8 MATCH_SCORE

- 1.9 SCORE

2 Oracle Text索引付けの要素

- 2.1 概要

- 2.2 プリファレンスの作成

- 2.3 データストア型

- 2.3.1 DIRECT_DATASTORE

- 2.3.2 MULTI_COLUMN_DATASTORE

- 2.3.2.1 MULTI_COLUMN_DATASTORE属性

- 2.3.2.2 索引付けとDML

- 2.3.2.3 MULTI_COLUMN_DATASTOREの制限事項

- 2.3.2.4 MULTI_COLUMN_DATASTOREの例

- 2.3.2.5 MULTI_COLUMN_DATASTOREフィルタの例

- 2.3.2.6 タグ付けの動作

- 2.3.2.7 セクションとしての列の索引付け

- 2.3.3 DETAIL_DATASTORE

- 2.3.3.1 DETAIL_DATASTORE属性

- 2.3.3.2 マスター表/ディテール表の索引の同期化

- 2.3.3.3 マスター表/ディテール表の例

- 2.3.3.3.1 マスター表の例

- 2.3.3.3.2 ディテール表の例

- 2.3.3.3.3 ディテール表の例の属性

- 2.3.3.3.4 マスター/ディテールの索引の例

- 2.3.4 FILE_DATASTORE

- 2.3.4.1 FILE_DATASTORE属性

- 2.3.4.2 FILE_DATASTOREとセキュリティ

- 2.3.4.3 FILE_DATASTOREの例

- 2.3.5 URL_DATASTORE

- 2.3.5.1 URL_DATASTORE URL構文

- 2.3.5.2 URL_DATASTORE属性

- 2.3.5.3 URL_DATASTOREとセキュリティ

- 2.3.5.4 URL_DATASTOREの例

- 2.3.6 USER_DATASTORE

- 2.3.6.1 USER_DATASTORE属性

- 2.3.6.2 USER_DATASTORE制約

- 2.3.6.3 USER_DATASTORE索引付け後のプロシージャの編集

- 2.3.6.4 CLOBを含むUSER_DATASTOREの例

- 2.3.6.5 BLOB_LOCを含むUSER_DATASTOREの例

- 2.3.7 NESTED_DATASTORE

- 2.3.7.1 NESTED_DATASTORE属性

- 2.3.7.2 NESTED_DATASTOREの例

- 2.3.7.2.1 NESTED TABLEの作成

- 2.3.7.2.2 NESTED TABLEへの値の挿入

- 2.3.7.2.3 NESTED TABLEプリファレンスの作成

- 2.3.7.2.4 NESTED TABLEへの索引の作成

- 2.3.7.2.5 ネストしたデータストアの問合せ

- 2.4 フィルタ型

- 2.4.1 AUTO_FILTER

- 2.4.1.1 AUTO_FILTER属性

- 2.4.1.2 AUTO_FILTERと形式設定されたドキュメントの索引付け

- 2.4.1.3 AUTO_FILTERと複合フォーマット列のプレーン・テキストまたはHTMLの明示的なバイパス

- 2.4.1.4 AUTO_FILTERとAUTO_FILTERによるキャラクタ・セット変換

- 2.4.2 NULL_FILTER

- 2.4.3 MAIL_FILTER

- 2.4.3.1 MAIL_FILTER属性

- 2.4.3.2 MAIL_FILTERの動作

- 2.4.3.3 メール・フィルタ構成ファイル

- 2.4.3.4 Mail_Filterの例

- 2.4.4 USER_FILTER

- 2.4.4.1 USER_FILTER属性

- 2.4.4.2 キャラクタ・セット列とフォーマット列を指定したUSER_FILTERの使用

- 2.4.4.3 USER_FILTERと複合フォーマット列のプレーン・テキストまたはHTMLの明示的なバイパス

- 2.4.4.4 USER_FILTERによるキャラクタ・セット変換

- 2.4.4.5 ユーザー・フィルタの例

- 2.4.5 PROCEDURE_FILTER

- 2.4.5.1 PROCEDURE_FILTER属性

- 2.4.5.2 PROCEDURE_FILTERパラメータの順序

- 2.4.5.3 PROCEDURE_FILTERの実行要件

- 2.4.5.4 PROCEDURE_FILTERエラー処理

- 2.4.5.5 PROCEDURE_FILTERプリファレンスの例

- 2.5 レクサー型

- 2.5.1 AUTO_LEXER

- 2.5.1.1 AUTO_LEXER言語サポート

- 2.5.1.2 BASIC_LEXERから継承したAUTO_LEXER属性

- 2.5.1.3 言語に依存しないAUTO_LEXER属性

- 2.5.1.4 言語に依存するAUTO_LEXER属性

- 2.5.1.5 AUTO_LEXERディクショナリ属性

- 2.5.2 BASIC_LEXER

- 2.5.2.1 BASIC_LEXER属性

- 2.5.2.2 ステミング・ユーザー・ディクショナリ

- 2.5.2.3 BASIC_LEXERの例

- 2.5.3 MULTI_LEXER

- 2.5.3.1 MULTI_LEXERの制限事項

- 2.5.3.2 MULTI_LEXERマルチ言語のストップリスト

- 2.5.3.3 MULTI_LEXERの例

- 2.5.3.4 MULTI_LEXERとマルチ言語表の問合せ

- 2.5.4 CHINESE_VGRAM_LEXER

- 2.5.5 CHINESE_LEXER

- 2.5.6 JAPANESE_VGRAM_LEXER

- 2.5.7 JAPANESE_LEXER

- 2.5.8 KOREAN_MORPH_LEXER

- 2.5.8.1 KOREAN_MORPH_ LEXERディクショナリ

- 2.5.8.2 KOREAN_MORPH_ LEXER Unicodeのサポート

- 2.5.8.3 KOREAN_MORPH_LEXER属性

- 2.5.8.4 KOREAN_MORPH_ LEXERの制限事項

- 2.5.8.5 KOREAN_MORPH_LEXERの例: composite属性の設定

- 2.5.9 USER_LEXER

- 2.5.9.1 USER_LEXERルーチン

- 2.5.9.2 USER_LEXERの制限事項

- 2.5.9.3 USER_LEXER属性

- 2.5.9.4 INDEX_PROCEDURE

- 2.5.9.5 INPUT_TYPE

- 2.5.9.5.1 VARCHAR2インタフェース

- 2.5.9.5.2 CLOBインタフェース

- 2.5.9.6 QUERY_PROCEDURE

- 2.5.9.7 トークンのXMLとしてのコード化

- 2.5.9.8 Locationを使用しないユーザー定義索引付けプロシージャのXML Schema

- 2.5.9.9 Locationを使用したユーザー定義索引付けプロシージャのXML Schema

- 2.5.9.10 ユーザー定義レクサーの問合せプロシージャのXML Schema

- 2.5.10 WORLD_LEXER

- 2.6 ワードリスト型

- 2.6.1 BASIC_WORDLIST

- 2.6.2 BASIC_WORDLISTの例

- 2.6.2.1 ファジー・マッチングおよびステミングの使用可能化

- 2.6.2.2 サブストリングとプリフィックス索引付けの使用可能化

- 2.6.2.3 ワイルド・カード拡張に対する制限の設定

- 2.7 記憶域型

- 2.7.1 BASIC_STORAGE

- 2.7.1.1 BASIC_STORAGE属性

- 2.7.1.2 BASIC_STORAGEのデフォルト動作

- 2.7.1.3 BASIC_STORAGEの例

- 2.8 セクション・グループ型

- 2.8.1 セクション・グループ作成のためのセクション・グループ型

- 2.8.2 HTML、XMLおよびJSON対応ドキュメントの場合のセクション・グループ例

- 2.8.2.1 HTMLドキュメントのセクション・グループの作成

- 2.8.2.2 XMLドキュメントのセクション・グループの作成

- 2.8.2.3 XMLドキュメントの自動セクション化

- 2.8.2.4 JSON検索索引のためのJSONセクション・グループの作成

- 2.8.2.5 JSON_TEXTCONTAINSを使用したJSON検索索引の使用

- 2.8.2.6 JSON_EXISTSを使用したJSON検索索引の使用

- 2.9 分類型

- 2.9.1 RULE_CLASSIFIER

- 2.9.2 SVM_CLASSIFIER

- 2.10 クラスタ型

- 2.10.1 KMEAN_CLUSTERING

- 2.11 ストップリスト

- 2.11.1 マルチ言語のストップリスト

- 2.11.2 ストップリストの作成

- 2.11.3 デフォルトのストップリストの変更

- 2.12 システム定義プリファレンス

- 2.12.1 データ記憶域プリファレンス

- 2.12.2 フィルタ・プリファレンス

- 2.12.3 レクサー・プリファレンス

- 2.12.3.1 CTXSYS.DEFAULT_LEXER

- 2.12.3.2 CTXSYS.DEFAULT_EXTRACT_LEXER

- 2.12.3.3 CTXSYS.BASIC_LEXER

- 2.12.4 セクション・グループ・プリファレンス

- 2.12.5 ストップリスト・プリファレンス

- 2.12.6 記憶域プリファレンス

- 2.12.7 ワードリスト・プリファレンス

- 2.13 システム・パラメータ

- 2.13.1 汎用システム・パラメータ

- 2.13.2 デフォルトの索引付けパラメータ

- 2.13.2.1 CONTEXT索引のパラメータ

- 2.13.2.2 CTXCAT索引のパラメータ

- 2.13.2.3 CTXRULE索引のパラメータ

- 2.13.3 デフォルトのポリシー・パラメータ

3 Oracle Text CONTAINS問合せ演算子

- 3.1 演算子の優先順位

- 3.1.1 グループ1の演算子

- 3.1.2 グループ2の演算子および文字

- 3.1.3 プロシージャ型演算子

- 3.1.4 優先順位の例

- 3.1.5 優先順位の変更

- 3.2 ABOUT

- 3.3 ACCUMulate ( , )

- 3.4 AND (&)

- 3.5 BROADER TERM(BT、BTG、BTP、BTI)

- 3.6 CTXFILTERCACHE

- 3.7 DEFINEMERGE

- 3.8 DEFINESCORE

- 3.9 EQUIValence (=)

- 3.10 Fuzzy

- 3.11 HASPATH

- 3.12 INPATH

- 3.13 MDATA

- 3.14 MINUS (-)

- 3.15 MNOT

- 3.16 NARROWER TERM(NT、NTG、NTP、NTI)

- 3.17 NDATA

- 3.18 NEAR (;)

- 3.19 NOT (~)

- 3.20 OR (|)

- 3.21 Preferred Term (PT)

- 3.22 Related Term (RT)

- 3.23 SDATA

- 3.24 soundex (!)

- 3.25 stem ($)

- 3.26 ストアド・クエリー式(SQE)

- 3.27 SYNONYM(SYN)

- 3.28 threshold (>)

- 3.29 Translation Term (TR)

- 3.30 TRANSLATION TERM SYNONYM(TRSYN)

- 3.31 Top Term (TT)

- 3.32 weight (*)

- 3.33 ワイルドカード(% _)

- 3.34 WITHIN

4 Oracle Text問合せの特殊文字

- 4.1 グループ化文字

- 4.2 エスケープ文字

- 4.3 予約語

5 CTX_ADMパッケージ

- 5.1 CTX_ADMパッケージのプロシージャについて

- 5.2 MARK_FAILED

- 5.3 RECOVER

- 5.4 RESET_AUTO_OPTIMIZE_STATUS

- 5.5 SET_PARAMETER

6 CTX_ANLパッケージ

- 6.1 CTX_ANLパッケージのプロシージャについて

- 6.2 ADD_DICTIONARY

- 6.3 DROP_DICTIONARY

7 CTX_CLSパッケージ

- 7.1 CTX_CLSパッケージのプロシージャについて

- 7.2 TRAIN

- 7.3 CLUSTERING

8 CTX_DDLパッケージ

- 8.1 ADD_ATTR_SECTION

- 8.2 ADD_AUTO_OPTIMIZE

- 8.3 ADD_FIELD_SECTION

- 8.4 ADD_INDEX

- 8.5 ADD_MDATA

- 8.6 ADD_MDATA_COLUMN

- 8.7 ADD_MDATA_SECTION

- 8.8 ADD_NDATA_SECTION

- 8.9 ADD_SDATA_COLUMN

- 8.10 ADD_SDATA_SECTION

- 8.11 ADD_SEC_GRP_ATTR_VAL

- 8.12 ADD_SPECIAL_SECTION

- 8.13 ADD_STOPCLASS

- 8.14 ADD_STOP_SECTION

- 8.15 ADD_STOPTHEME

- 8.16 ADD_STOPWORD

- 8.17 ADD_SUB_LEXER

- 8.18 ADD_ZONE_SECTION

- 8.19 COPY_POLICY

- 8.20 CREATE_INDEX_SET

- 8.21 CREATE_POLICY

- 8.22 CREATE_PREFERENCE

- 8.23 CREATE_SECTION_GROUP

- 8.24 CREATE_SHADOW_INDEX

- 8.25 CREATE_STOPLIST

- 8.26 DROP_INDEX_SET

- 8.27 DROP_POLICY

- 8.28 DROP_PREFERENCE

- 8.29 DROP_SECTION_GROUP

- 8.30 DROP_SHADOW_INDEX

- 8.31 DROP_STOPLIST

- 8.32 EXCHANGE_SHADOW_INDEX

- 8.33 OPTIMIZE_INDEX

- 8.34 POPULATE_PENDING

- 8.35 PREFERENCE_IMPLICIT_COMMIT

- 8.36 RECREATE_INDEX_ONLINE

- 8.37 REM_SEC_GRP_ATTR_VAL

- 8.38 REMOVE_AUTO_OPTIMIZE

- 8.39 REMOVE_INDEX

- 8.40 REMOVE_MDATA

- 8.41 REMOVE_SECTION

- 8.42 REMOVE_STOPCLASS

- 8.43 REMOVE_STOPTHEME

- 8.44 REMOVE_STOPWORD

- 8.45 REMOVE_SUB_LEXER

- 8.46 REPLACE_INDEX_METADATA

- 8.47 SET_ATTRIBUTE

- 8.48 SET_SEC_GRP_ATTR

- 8.49 SET_SECTION_ATTRIBUTE

- 8.50 SYNC_INDEX

- 8.51 UNSET_ATTRIBUTE

- 8.52 UNSET_SEC_GRP_ATTR

- 8.53 UPDATE_SUB_LEXER

- 8.54 UPDATE_POLICY

- 8.55 UPDATE_SDATA

9 CTX_DOCパッケージ

- 9.1 CTX_DOCパッケージのプロシージャについて

- 9.2 FILTER

- 9.3 GIST

- 9.4 HIGHLIGHT

- 9.5 IFILTER

- 9.6 MARKUP

- 9.7 PKENCODE

- 9.8 POLICY_FILTER

- 9.9 POLICY_GIST

- 9.10 POLICY_HIGHLIGHT

- 9.11 POLICY_LANGUAGES

- 9.12 POLICY_MARKUP

- 9.13 POLICY_NOUN_PHRASES

- 9.14 POLICY_PART_OF_SPEECH

- 9.15 POLICY_SNIPPET

- 9.16 POLICY_STEMS

- 9.17 POLICY_THEMES

- 9.18 POLICY_TOKENS

- 9.19 SET_KEY_TYPE

- 9.20 SNIPPET

- 9.21 THEMES

- 9.22 TOKENS

10 CTX_ENTITYパッケージ

- 10.1 ADD_EXTRACT_RULE

- 10.2 ADD_STOP_ENTITY

- 10.3 COMPILE

- 10.4 CREATE_EXTRACT_POLICY

- 10.5 DROP_EXTRACT_POLICY

- 10.6 EXTRACT

- 10.7 REMOVE_EXTRACT_RULE

- 10.8 REMOVE_STOP_ENTITY

11 CTX_OUTPUTパッケージ

- 11.1 ADD_EVENT

- 11.2 ADD_TRACE

- 11.3 DISABLE_QUERY_STATS

- 11.4 ENABLE_QUERY_STATS

- 11.5 END_LOG

- 11.6 END_QUERY_LOG

- 11.7 GET_TRACE_VALUE

- 11.8 LOG_TRACES

- 11.9 LOGFILENAME

- 11.10 REMOVE_EVENT

- 11.11 REMOVE_TRACE

- 11.12 RESET_TRACE

- 11.13 START_LOG

- 11.14 START_QUERY_LOG

12 CTX_QUERYパッケージ

- 12.1 BROWSE_WORDS

- 12.2 COUNT_HITS

- 12.3 EXPLAIN

- 12.4 HFEEDBACK

- 12.5 REMOVE_SQE

- 12.6 RESULT_SET

- 12.7 RESULT_SET_DOCUMENT

- 12.8 STORE_SQE

13 CTX_REPORTパッケージ

- 13.1 CTX_REPORTに含まれるプロシージャの説明

- 13.2 複数バージョンのファンクションの使用方法

- 13.3 DESCRIBE_INDEX

- 13.4 DESCRIBE_POLICY

- 13.5 CREATE_INDEX_SCRIPT

- 13.6 CREATE_POLICY_SCRIPT

- 13.7 INDEX_SIZE

- 13.8 INDEX_STATS

- 13.9 QUERY_LOG_SUMMARY

- 13.10 TOKEN_INFO

- 13.11 TOKEN_TYPE

- 13.12 VALIDATE_INDEX

14 CTX_THESパッケージ

- 14.1 ALTER_PHRASE

- 14.2 ALTER_THESAURUS

- 14.3 BT

- 14.4 BTG

- 14.5 BTI

- 14.6 BTP

- 14.7 CREATE_PHRASE

- 14.8 CREATE_RELATION

- 14.9 CREATE_THESAURUS

- 14.10 CREATE_TRANSLATION

- 14.11 DROP_PHRASE

- 14.12 DROP_RELATION

- 14.13 DROP_THESAURUS

- 14.14 DROP_TRANSLATION

- 14.15 EXPORT_THESAURUS

- 14.16 HAS_RELATION

- 14.17 IMPORT_THESAURUS

- 14.18 NT

- 14.19 NTG

- 14.20 NTI

- 14.21 NTP

- 14.22 OUTPUT_STYLE

- 14.23 PT

- 14.24 RT

- 14.25 SN

- 14.26 SYN

- 14.27 THES_TT

- 14.28 TR

- 14.29 TRSYN

- 14.30 TT

- 14.31 UPDATE_TRANSLATION

15 CTX_ULEXERパッケージ

- 15.1 WILDCARD_TAB

16 Oracle Textのユーティリティ

- 16.1 シソーラス・ローダー(ctxload)

- 16.1.1ctxloadテキストのロード

- 16.1.2 ctxload構文

- 16.1.3 ctxloadの例

- 16.2 エンティティ抽出ユーザー・ディクショナリ・ローダー(ctxload)

- 16.2.1 ctxload構文

- 16.2.2 ユーザー・ディクショナリを作成する場合の考慮点

- 16.2.3 XMLスキーマ

- 16.2.4 ctxloadの例

- 16.3 ナレッジ・ベース拡張コンパイラ(ctxkbtc)

- 16.3.1 ナレッジ・ベースのキャラクタ・セット

- 16.3.2 ctxkbtc構文

- 16.3.3 ctxkbtcの使用上の注意

- 16.3.4 ctxkbtcの制限事項

- 16.3.5 シソーラス語句に対するctxkbtcの制約

- 16.3.6 シソーラス・リレーションに対するctxkbtcの制約

- 16.3.7 ナレッジ・ベースの拡張

- 16.3.8 ナレッジ・ベースの拡張例

- 16.3.9 言語固有のナレッジ・ベースの追加

- 16.3.10 ナレッジ・ベースの追加に関する制限事項

- 16.3.11 複数のシソーラスの優先順位

- 16.3.12 拡張ナレッジ・ベースのサイズ制限

- 16.4 字句コンパイラ(ctxlc)

- 16.4.1 ctxlcの構文

- 16.4.2ctxlcのパフォーマンスに関する考慮事項

- 16.4.3 ctxlcの使用上の注意

- 16.4.4 ctxlcの例

17 Oracle Text代替スペル

- 17.1 代替スペル機能の概要

- 17.1.1 代替スペル

- 17.1.2 基本文字変換

- 17.1.3 ドイツ語の新スペル

- 17.2 代替スペル機能のオーバーライド

- 17.3 代替スペルの規則

- 17.3.1 ドイツ語の代替スペルの規則

- 17.3.2 デンマーク語の代替スペルの規則

- 17.3.3 スウェーデン語の代替スペルの規則

A Oracle Text結果表

- A.1 CTX_QUERY結果表

- A.1.1 EXPLAIN表

- A.1.1.1 EXPLAIN表の構造

- A.1.1.2 EXPLAIN表のOPERATION列

- A.1.1.3 EXPLAIN表のOPTIONS列の値

- A.1.2 HFEEDBACK表

- A.1.2.1 HFEEDBACK表の構造

- A.1.2.2 HFEEDBACK表のOPERATION列の値

- A.1.2.3 HFEEDBACK表のOPTIONS列の値

- A.1.2.4 CTX_FEEDBACK_TYPE

- A.2 CTX_DOC結果表

- A.2.1 フィルタ表

- A.2.2 要点表

- A.2.3 ハイライト表

- A.2.4 マークアップ表

- A.2.5 テーマ表

- A.2.6 トークン表

- A.3 CTX_THES結果表およびデータ型

- A.3.1 EXP_TAB表型

B Oracle Textでサポートされているドキュメント形式

- B.1 ドキュメント・フィルタ処理テクノロジ

- B.1.1 パッチ・リリースの最新の更新

- B.1.2 形式のサポートに関する制限事項

- B.1.3 AUTO_FILTERドキュメント・フィルタ処理テクノロジでサポートされているプラットフォーム

- B.1.4 PDFドキュメントおよびセキュリティ設定でのフィルタ処理

- B.1.5 PDFフィルタ処理の制限事項

- B.1.6 環境変数

- B.1.7 一般的な制限事項

- B.2 サポートされているドキュメント形式

- B.2.1 アーカイブ・ファイル形式

- B.2.2 データベース形式

- B.2.3 電子メール形式

- B.2.4 グラフィック形式(ラスターおよびベクター・イメージ)

- B.2.5 マルチメディア形式

- B.2.6 その他の形式

- B.2.7 プレゼンテーション形式

- B.2.8 スプレッドシート形式

- B.2.9 テキストおよびマークアップ形式

- B.2.10 ワード処理形式およびデスクトップ・パブリッシング形式

C Oracle Textのテキストのロード例

- C.1 SQLのINSERT例

- C.2 SQL*Loaderの例

- C.2.1 表の作成

- C.2.2 SQL*Loaderコマンドの発行

- C.2.2.1 制御ファイル例: loader1.dat

- C.2.2.2 データ・ファイル例: loader2.dat

- C.3 ctxloadシソーラス・インポート・ファイルの構造

- C.3.1 インポート・ファイルの形式

- C.3.2 代替階層構造

- C.3.3 インポート・ファイル内の語句の使用上の注意

- C.3.4 インポート・ファイル内の関連語句の使用上の注意

- C.3.5 インポート・ファイル例

- C.3.5.1 例1(フラット構造)

- C.3.5.2 例2(階層構造)

- C.3.5.3 例3

D Oracle Textの多言語機能

- D.1 概要

- D.2 索引付け

- D.2.1 Oracle Textの索引タイプの多言語機能

- D.2.1.1 CONTEXT索引タイプ

- D.2.1.2 CTXCAT索引タイプ

- D.2.1.3 CTXRULE索引タイプ

- D.2.2 レクサー型

- D.2.3 基本レクサー機能

- D.2.3.1 テーマ索引

- D.2.3.2 代替スペル

- D.2.3.3 基本文字変換

- D.2.3.4 コンポジット

- D.2.3.5 索引の語幹

- D.2.4 マルチレクサー機能

- D.2.5 Worldレクサー機能

- D.3 問合せ

- D.4 提供されるストップリスト

- D.5 ナレッジ・ベース

- D.6 多言語機能のマトリックス

E Oracle Textで提供されるストップリスト

- E.1 英語のデフォルト・ストップリスト

- E.2 中国語(繁体字)のストップリスト

- E.3 中国語(簡体字)のストップリスト

- E.4 デンマーク語(dk)のデフォルト・ストップリスト

- E.5 オランダ語(nl)のデフォルト・ストップリスト

- E.6 フィンランド語(sf)のデフォルト・ストップリスト

- E.7 フランス語(f)のデフォルト・ストップリスト

- E.8 ドイツ語(d)のデフォルト・ストップリスト

- E.9 イタリア語(i)のデフォルト・ストップリスト

- E.10 ポルトガル語(pt)のデフォルト・ストップリスト

- E.11 スペイン語(e)のデフォルト・ストップリスト

- E.12 スウェーデン語(s)のデフォルト・ストップリスト

F Oracle Textのスコア付けのアルゴリズム

- F.1 ワード問合せのスコア付けのアルゴリズム

- F.2 ワードのスコア付けの例

- F.3 DMLおよびスコア付けのアルゴリズム

G Oracle Textビュー

- G.1 CTX_ALEXER_DICTS

- G.2 CTX_AUTO_OPTIMIZE_INDEXES

- G.3 CTX_AUTO_OPTIMIZE_STATUS

- G.4 CTX_CLASSES

- G.5 CTX_FILTER_BY_COLUMNS

- G.6 CTX_FILTER_CACHE_STATISTICS

- G.7 CTX_INDEXES

- G.8 CTX_INDEX_ERRORS

- G.9 CTX_INDEX_OBJECTS

- G.10 CTX_INDEX_PARTITIONS

- G.11 CTX_INDEX_SETS

- G.12 CTX_INDEX_SET_INDEXES

- G.13 CTX_INDEX_SUB_LEXERS

- G.14 CTX_INDEX_SUB_LEXER_VALUES

- G.15 CTX_INDEX_VALUES

- G.16 CTX_OBJECTS

- G.17 CTX_OBJECT_ATTRIBUTES

- G.18 CTX_OBJECT_ATTRIBUTE_LOV

- G.19 CTX_ORDER_BY_COLUMNS

- G.20 CTX_PARAMETERS

- G.21 CTX_PENDING

- G.22 CTX_PREFERENCES

- G.23 CTX_PREFERENCE_VALUES

- G.24 CTX_SECTIONS

- G.25 CTX_SECTION_GROUPS

- G.26 CTX_SQES

- G.27 CTX_STOPLISTS

- G.28 CTX_STOPWORDS

- G.29 CTX_SUB_LEXERS

- G.30 CTX_THESAURI

- G.31 CTX_THES_PHRASES

- G.32 CTX_TRACE_VALUES

- G.33 CTX_USER_ALEXER_DICTS

- G.34 CTX_USER_AUTO_OPTIMIZE_INDEXES

- G.35 CTX_USER_EXTRACT_POLICIES

- G.36 CTX_USER_EXTRACT_POLICY_VALUES

- G.37 CTX_USER_EXTRACT_RULES

- G.38 CTX_USER_EXTRACT_STOP_ENTITIES

- G.39 CTX_USER_ FILTER_BY_COLUMNS

- G.40 CTX_USER_INDEXES

- G.41 CTX_USER_INDEX_ERRORS

- G.42 CTX_USER_INDEX_OBJECTS

- G.43 CTX_USER_INDEX_PARTITIONS

- G.44 CTX_USER_INDEX_SETS

- G.45 CTX_USER_INDEX_SET_INDEXES

- G.46 CTX_USER_INDEX_SUB_LEXERS

- G.47 CTX_USER_INDEX_SUB_LEXER_VALS

- G.48 CTX_USER_INDEX_VALUES

- G.49 CTX_USER_ORDER_BY_COLUMNS

- G.50 CTX_USER_PENDING

- G.51 CTX_USER_PREFERENCES

- G.52 CTX_USER_PREFERENCE_VALUES

- G.53 CTX_USER_SECTIONS

- G.54 CTX_USER_SECTION_GROUPS

- G.55 CTX_USER_SESSION_SQES

- G.56 CTX_USER_SQES

- G.57 CTX_USER_STOPLISTS

- G.58 CTX_USER_STOPWORDS

- G.59 CTX_USER_SUB_LEXERS

- G.60 CTX_USER_THESAURI

- G.61 CTX_USER_THES_PHRASES

- G.62 CTX_VERSION

H Oracle Textでのストップワード変換

- H.1 ストップワード変換の理解

- H.2 句問合せのストップワードについて

- H.3 ワード変換

- H.4 AND変換

- H.5 OR変換

- H.6 ACCUMulate変換

- H.7 MINUS変換

- H.8 MNOT変換

- H.9 NOT変換

- H.10 EQUIValence変換

- H.11 NEAR変換

- H.12 WEIGHT変換

- H.13 THRESHOLD変換

- H.14 WITHIN変換

索引

表一覧

- 1-1 ALTER INDEX SYNCメソッド

- 1-2 CATSEARCH問合せ演算子

- 1-3 TRANSFORMパラメータ

- 1-4 テンプレート属性の値

- 1-5 SYNC型

- 1-6 サポートされているCTXCAT索引プリファレンス

- 2-1 データストア型

- 2-2 MULTI_COLUMN_DATASTORE属性

- 2-3 DETAIL_DATASTORE属性

- 2-4 FILE_DATASTORE属性

- 2-5 URL_DATASTORE属性

- 2-6 USER_DATASTORE属性

- 2-7 NESTED_DATASTORE属性

- 2-8 フィルタ型

- 2-9 AUTO_FILTER属性

- 2-10 MAIL_FILTER属性

- 2-11 USER_FILTER属性

- 2-12 PROCEDURE_FILTER属性

- 2-13 レクサー型

- 2-14 AUTO_LEXERでサポートされている言語

- 2-15 言語に依存しないAUTO_LEXER属性

- 2-16 言語に依存するAUTO_LEXER属性

- 2-17 言語に依存するAUTO_LEXER属性のデフォルト値

- 2-18 AUTO_LEXERディクショナリ属性でサポートされている言語

- 2-19 BASIC_LEXER属性

- 2-20 ステミング・ユーザー・ディクショナリ

- 2-21 MULTI_LEXERの自動識別でサポートされている言語

- 2-22 CHINESE_VGRAM_LEXER属性

- 2-23 CHINESE_LEXER属性

- 2-24 JAPANESE_VGRAM_LEXER属性

- 2-25 JAPANESE_LEXER属性

- 2-26 KOREAN_MORPH_LEXERディクショナリ

- 2-27 KOREAN_MORPH_LEXER属性

- 2-28 USER_LEXERのユーザー定義ルーチン

- 2-29 USER_LEXER属性

- 2-30 INDEX_PROCEDURESのVARCHAR2インタフェース

- 2-31 INDEX_PROCEDUREのCLOBインタフェース

- 2-32 ユーザー定義レクサーの問合せプロシージャXML Schema属性

- 2-33 ユーザー定義レクサーの索引付けプロシージャXML Schema要素名

- 2-34 ユーザー定義レクサーの索引付けプロシージャXML Schema属性

- 2-35 ユーザー定義レクサーの問合せプロシージャXML Schema属性

- 2-36 WORLD_LEXER属性

- 2-37 BASIC_WORDLIST属性

- 2-38 記憶域型

- 2-39 BASIC_STORAGE属性

- 2-40 セクション・グループ型

- 2-41 RULE_CLASSIFIER属性

- 2-42 SVM_CLASSIFIER属性

- 2-43 KMEAN_CLUSTERING属性

- 2-44 汎用システム・パラメータ

- 2-45 デフォルトのCONTEXT索引のパラメータ

- 2-46 デフォルトのCTXCAT索引のパラメータ

- 2-47 デフォルトのCTXRULE索引のパラメータ

- 2-48 CTX_DDL.CREATE_POLICYのデフォルトのポリシー・パラメータ

- 3-1 問合せ式の優先順位の例

- 3-2 MDATAおよび他の問合せ演算子

- 3-3 スコア・サンプル

- 4-1 問合せ語句グループ化用の文字

- 4-2 問合せ語句エスケープ用の文字

- 4-3 予約語

- 6-1 カスタム・ディクショナリで有効な品詞(大/小文字を区別)

- 6-2 カスタム・ディクショナリで有効な機能

- 8-1 PARAGRAPHセクションとSENTENCEセクションの境界

- 9-1 品詞の略称

- 9-2 トークン表に必要な列

- 10-1 提供されるエンティティ・タイプ

- 11-1 有効なトレース

- 16-1 拡張ナレッジ・ベースのサイズ制限

- 17-1 ドイツ語の代替スペルの規則

- 17-2 デンマーク語の代替スペルの規則

- 17-3 スウェーデン語の代替スペルの規則

- A-1 EXPLAIN結果表

- A-2 EXPLAIN表のOPERATION列

- A-3 EXPLAIN表のOPTIONS列

- A-4 HFEEDBACK結果表

- A-5 HFEEDBACK結果表のOPERATION列

- A-6 HFEEDBACK結果表のOPTIONS列

- A-7 CTX_FEEDBACK_ITEM_TYPE

- A-8 FILTER結果表

- A-9 要点表

- A-10 ハイライト表

- A-11 マークアップ表

- A-12 テーマ表

- A-13 トークン表

- A-14 EXP_TAB表型(EXP_REC)

- B-1 PDFセキュリティ設定に対するAUTO_FILTERの動作

- B-2 サポートされているアーカイブ・ファイル形式

- B-3 AUTO_FILTERフィルタでサポートされているラスター・イメージ形式

- B-4 AUTO_FILTERフィルタでサポートされているベクター・イメージ形式

- D-1 Oracle Textのレクサー型

- D-2 Worldレクサーでサポートされている言語(空白で区切られる言語)

- D-3 Worldレクサーでサポートされている言語(空白で区切られない言語)

- D-4 Worldレクサーでサポートされていない言語

- D-5 サポートされている言語の多言語機能

はじめに

Oracle Text Referenceへようこそ。このドキュメントでは、Oracle Textを使用したアプリケーション作成についての参照情報を提供します。ここでは、次の内容について説明します。

- 対象読者

- ドキュメントのアクセシビリティについて

- 関連ドキュメント

- 表記規則

対象読者

このドキュメントは、Oracle環境でOracle Textシステムのメンテナンスを行うアプリケーション開発者とシステム管理者を対象としています。このマニュアルを使用するには、Oracle Database、SQL、SQL*PlusおよびPL/SQLでの作業経験が必要です。

ドキュメントのアクセシビリティについて

Oracleのアクセシビリティへの取り組みについては、Oracle Accessibility ProgramのWebサイト(http://www.oracle.com/pls/topic/lookup?ctx=acc&id=docacc)にアクセスしてください。

Oracleサポートへのアクセス

サポートをご購入のOracleのお客様は、My Oracle Supportにアクセスして電子サポートを受けることができます。詳細は、http://www.oracle.com/pls/topic/lookup?ctx=acc&id=info、聴覚に障害があるお客様はhttp://www.oracle.com/pls/topic/lookup?ctx=acc&id=trsを参照してください。

Oracleサポートへのアクセス

Oracleのお客様は、My Oracle Supportにアクセスして電子サポートを受けることができます。詳細は、http://www.oracle.com/pls/topic/lookup?ctx=acc&id=info、聴覚に障害があるお客様はhttp://www.oracle.com/pls/topic/lookup?ctx=acc&id=trsを参照してください。

関連ドキュメント

Oracle Textの詳細は、次のマニュアルを参照してください。

- 『Oracle Textアプリケーション開発者ガイド』

Oracle Databaseの詳細は、次のマニュアルを参照してください。

- 『Oracle Database概要』

- 『Oracle Database管理者ガイド』

- 『Oracle Databaseユーティリティ』

- 『Oracle Databaseパフォーマンス・チューニング・ガイド』

- Oracle Database SQLチューニング・ガイド

- 『Oracle Database SQL言語リファレンス』

- 『Oracle Databaseリファレンス』

- 『Oracle Database開発ガイド』

- 『Oracle Databaseサンプル・スキーマ』

PL/SQLの詳細は、次のマニュアルを参照してください。

- 『Oracle Database PL/SQL言語リファレンス』

表記規則

このマニュアルでは次の表記規則を使用します。

規則

意味

太字

太字は、操作に関連するGraphical User Interface要素、または本文中で定義されている用語および用語集に記載されている用語を示します。

イタリック体

イタリックは、ユーザーが特定の値を指定するプレースホルダ変数を示します。

固定幅フォント

固定幅フォントは、段落内のコマンド、URL、サンプル内のコード、画面に表示されるテキスト、または入力するテキストを示します。

『Oracle Textリファレンス』のこのリリースでの変更点

ここでは、このリリースのOracle Textで変更された点について説明します。

- Oracle Text 12cリリース1 (12.1)での変更点

Oracle Text 12cリリース1 (12.1)での変更点

Oracle Text for Oracle Database 12cリリース1 (12.1)の変更点は次のとおりです。

- 新機能

- 非推奨となった機能

- サポート対象外機能

新機能

Oracle Textのこのリリースで導入された新機能は、『Oracle Textアプリケーション開発者ガイド』の新機能に関する項で一覧し、説明しています。Oracle Database 12cの新機能の詳細は、『racle Database新機能ガイド』を参照してください。

非推奨となった機能

このリリースの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の詳細は"OPTIMIZE_INDEX"を参照してください。

- テキスト索引に対するSYNC [MEMORY memsize]は、Oracle Database 12cリリース1 (12.1)ではサポートされません。索引の同期化には、CTX_DDL.SYNC_INDEXを使用してください。SYNC_INDEXの詳細は"SYNC_INDEX"を参照してください。

- CHARSET_FILTERフィルタ型は、Oracle Database 12cリリース1 (12.1)ではサポートされません。

Oracle Database 12cでサポート対象外となる機能の詳細は、『Oracle Databaseアップグレード・ガイド 』を参照してください。

1 Oracle TextのSQL文と演算子

この章では、Oracle Text索引の作成と管理およびOracle Text問合せの実行に使用する、SQL文とOracle Text演算子について説明します。

この章で説明する文は、次のとおりです。

- ALTER INDEX

- ALTER TABLE: サポートされるパーティション化文

- CATSEARCH

- CONTAINS

- 「CREATE INDEX」

- DROP INDEX

- MATCHES

- MATCH_SCORE

- SCORE

1.1 ALTER INDEX

注意:

この項では、Oracle Textドメイン索引の管理に関連するALTER INDEX文について説明します。

ALTER INDEX文の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

ALTER INDEXの用途

ALTER INDEXを使用して、CONTEXT、CTXCATまたはCTXRULE索引を変更するか、またはメンテナンス作業を実行します。

すべての索引タイプ

ALTER INDEXを使用すると、Oracle Textのすべての索引タイプで次のタスクを実行できます。

- 索引または索引パーティションの名前変更。「ALTER INDEX RENAME構文」を参照してください。

- 異なるプリファレンスを使用した索引の再構築。一部の制限事項がCTXCAT索引タイプに適用されます。「ALTER INDEX REBUILD構文」を参照してください。

- 索引のストップワードの追加。「ALTER INDEX REBUILD構文」を参照してください。

- sub_lexerを追加または削除し、特定のシンボル(言語または言語に依存しないシンボル)に対してストップワードを削除または設定します。「ALTER INDEX Sub_Lexer構文」を参照してください"

CONTEXTおよびCTXRULE索引タイプ

ALTER INDEXを使用すると、CONTEXTおよびCTXRULE索引タイプで次のタスクを実行できます。

- 失敗した索引処理(作成/最適化)の再開。

- セクションおよび停止セクションの索引の追加。

- 索引メタデータの置換。

関連項目:

"これらのタスクを実行する方法の詳細は、「ALTER INDEX REBUILD構文」を参照してください。

ALTER INDEX構文

ALTER INDEXの構文はかなり複雑です。次の各項では主要な部分について説明します。

- 「ALTER INDEX MODIFY PARTITION構文」: 索引パーティションのメタデータの変更に使用します。

- "ALTER INDEX PARAMETERS構文": 索引を再構築することなく、非パーティション索引のパラメータ、またはローカル・パーティション索引のすべてのパーティションを変更できます。

- "ALTER INDEX RENAME構文": 索引または索引パーティションの名前の変更に使用します。

- "ALTER INDEX REBUILD構文": 索引または索引パーティションの再構築に使用します。この文で、索引メタデータの置換、ストップワード、セクションおよび停止セクションの索引の追加、失敗した操作の再開も実行できます。
ALTER INDEX REBUILDのパラメータには独自の構文があります。これは、ALTER INDEXの構文のサブセットです。たとえば、ALTER INDEX REBUILD PARAMETERS文で引数としてREPLACEまたはRESUMEのいずれかを取ることができ、ALTER INDEX REBUILD PARAMETERS ('REPLACE')で複数の引数から取ることができます。有効なALTER INDEX REBUILD文の例は次のとおりです。

ALTER INDEX REBUILD PARALLEL n
ALTER INDEX REBUILD PARAMETERS ('REPLACE DATASTORE datastore_pref')
ALTER INDEX REBUILD PARAMETERS ('REPLACE WORDLIST wordlist_pref')

ALTER INDEX MODIFY PARTITION構文

次の構文は、索引パーティションのメタデータの変更に使用します。

ALTER INDEX index_name MODIFY PARTITION partition_name PARAMETER (paramstring)

index_name

パーティション・メタデータを変更する索引の名前を指定します。

partition_name

メタデータを変更する索引パーティションの名前を指定します。

paramstring

有効な引数はREPLACE METADATAのみです。これはALTER INDEX REBUILD PARTITION PARAMETERS ('REPLACE METADATA')と同じ構文を取ります。詳細は、「ALTER INDEX REBUILD構文」の「REPLACE METADATA」の項を参照してください。(2つの文は同等です。ALTER INDEX MODIFY PARTITIONの方が使用方法が簡単で、推奨されている構文です。)

ALTER INDEX PARAMETERS構文

非パーティション索引またはローカル・パーティション索引のパラメータを、索引の再構築を行わずに変更する場合に、次の構文を使用します。パーティション索引の場合、この文は(パーティション・レベルではなく)索引レベルで有効です。すべてのパーティションを含めて索引全体の情報を変更します。

ALTER INDEX index_name PARAMETERS (paramstring)

paramstring

ALTER INDEX PARAMETERSでは、paramstringに対して次の引数を使用します。

- 'REPLACE METADATA'
現在のメタデータを置換します。詳細は、「ALTER INDEX REBUILD構文」の「REPLACE METADATA」の項を参照してください。

- 'ADD STOPWORD'
索引にストップワードを動的に追加します。詳細は、「ALTER INDEX REBUILD構文」の「ADD STOPWORD」の項を参照してください。

- 'ADD FIELD SECTION'
索引にフィールド・セクションを動的に追加します。詳細は、「ALTER INDEX REBUILD構文」の「ADD FIELD」の項を参照してください。追加できるフィールド・セクションの数は無制限です。

- 'ADD ZONE SECTION'
索引にゾーン・セクションを動的に追加します。詳細は、「ALTER INDEX REBUILD構文」の「ADD ZONE」の項を参照してください。

- 'ADD ATTR SECTION'
索引に属性セクションを動的に追加します。詳細は、「ALTER INDEX REBUILD構文」の「ADD ATTR」の項を参照してください。

- 'ADD SDATA SECTION'
索引を再構築せずに、SDATAセクションを動的に索引に追加します。SDATAセクションを追加できるのは、BASIC、HTML、XML、NEWSの各セクション・グループのみです。グローバルとローカルの両方の索引をサポートします。構文は次のとおりです。

ALTER INDEX index_name PARAMETERS (ADD SDATA SECTION sdata_section_name TAG sdata_section_tag DATATYPE sdata_section_datatype);

データ型は、VARCHAR2、CHAR、NUMBER、DATEまたはRAWです。

詳細は、「SDATAセクションの追加」を参照してください。

上に説明した各パラメータには、ALTER INDEX REBUILD PARAMETERSバージョンと同等のパラメータがありますが、ADD SDATA SECTIONは例外です。

たとえば、ALTER INDEX PARAMETERS ('REPLACE METADATA')は、ALTER INDEX REBUILD PARAMETERS ('REPLACE METADATA')と同等です。ただし、ALTER INDEX PARAMETERSバージョンがパーティション索引または非パーティション索引のいずれかに機能するのに対し、ALTER INDEX REBUILD PARAMETERSは非パーティション索引にのみ機能します。

ALTER INDEX RENAME構文

次の構文は、索引または索引パーティションの名前変更に使用します。

ALTER INDEX [schema.]index_name RENAME TO new_index_name;

ALTER INDEX [schema.]index_name RENAME PARTITION part_name TO new_part_name;

[schema.]index_name

名前変更する索引名を指定します。

new_index_name

schema.indexの新しい名前を指定します。new_index_nameパラメータは25バイト以内で設定し、パーティション索引は21バイト以内にします。26バイト以上の名前(またはパーティション索引に22バイト以上)を指定するとエラーが戻され、名前変更した索引は無効になります。

注意:

new_index_nameが26バイト以上(ローカル・パーティション索引が22バイト以上)で30バイト未満の場合は、システムによりエラーが戻されても、索引の名前が変更されます。索引およびそれに関連する表を削除するには、DROP INDEX文でnew_index_nameを削除した後、index_nameを再作成し、削除してください。

part_name

名前変更する索引パーティション名を指定します。

new_part_name

パーティションに新しい名前を指定します。

ALTER INDEX REBUILD構文

ALTER INDEX REBUILDを使用して、索引および索引パーティションの再構築、失敗した操作の再開、索引メタデータの置換、ストップワード、セクションおよび停止セクションの索引の追加を実行します。

ALTER INDEX REBUILDには独自の副構文があります。つまり、構文のパラメータが独自の構文を備えています。たとえば、ALTER INDEX REBUILD PARAMETERS文で引数としてREPLACEまたはRESUMEのいずれかを取ることができ、ALTER INDEX REBUILD PARAMETERS ('REPLACE')で複数の引数から取ることができます。

有効なALTER INDEX REBUILD文の例は次のとおりです。

ALTER INDEX REBUILD PARALLEL n
ALTER INDEX REBUILD PARAMETERS (REPLACE DATASTORE datastore_pref)
ALTER INDEX REBUILD PARAMETERS (REPLACE WORDLIST wordlist_pref)

ALTER INDEX REBUILDの構文は次のとおりです。

ALTER INDEX [schema.]index [REBUILD] [PARTITION partname] [ONLINE] [PARAMETERS
(paramstring)][PARALLEL N];

PARTITION partname

索引パーティションpartnameを再構築します。一度に構築できる索引パーティションは1つのみです。

パーティションの再構築時にparamstringに指定できるのは、RESUMEまたはREPLACEのみです。この操作は、指定したpartnameに対してのみ実行されます。

REPLACE操作で指定できるのは、各索引パーティションに対するMEMORY、STORAGEおよびSYNCです。

パーティションの追加: 元表にパーティションを追加するには、SQLのALTER TABLE文を使用します。索引表にパーティションを追加すると、新しい索引パーティションのメタデータが自動的に作成されます。新しい索引パーティションの名前と新しい表パーティションの名前は同じです。索引パーティション名は、ALTER INDEX RENAMEで変更します。

パーティションの分割とマージ: ALTER TABLEによって表パーティションを分割またはマージすると、その索引パーティションは無効になります。したがって、ALTER INDEX REBUILDを使用してその索引パーティションを再構築する必要があります。

ONLINE

元表での更新、挿入および削除を続行できます。元表を問い合せることはできません。ONLINEキーワードは、Enteprise EditionのOracle Databaseでのみ使用できます。

注意:

索引または索引パーティションをONLINEで再構築する場合は、REPLACEまたはRESUMEを指定できます。

PARAMETERS (paramstring)

オプションでparamstringを指定します。paramstringを指定しない場合、既存のプリファレンス設定で索引が再構築されます。

paramstringの構文は、次のとおりです。

paramstring =

'REPLACE
[DATASTORE datastore_pref]
[FILTER filter_pref]
[LEXER lexer_pref]
[WORDLIST wordlist_pref]
[STORAGE storage_pref]
[STOPLIST stoplist]
[SECTION GROUP section_group]
[MEMORY memsize
[[POPULATE | NOPOPULATE]
[INDEX SET index_set]

[METADATA preference new_preference]
[METADATA FORMAT COLUMN format_column_name]
[[METADATA] SYNC (MANUAL | EVERY "interval-string" | ON COMMIT)]
[[METADATA] TRANSACTIONAL|NONTRANSACTIONAL

| RESUME [memory memsize]
| OPTIMIZE [token index_token | fast | full [maxtime (time | unlimited)]
| ADD STOPWORD word [language language]
| ADD ZONE SECTION section_name tag tag
| ADD FIELD SECTION section_name tag tag [(VISIBLE | INVISIBLE)]
| ADD ATTR SECTION section_name tag tag@attr
| ADD STOP SECTION tag'

REPLACE [optional_preference_list]

索引を再構築します。オプションで、ユーザー独自またはシステム定義のプリファレンスを指定できます。

置換できるプリファレンスは、その索引タイプのサポート対象となっているプリファレンスのみです。たとえば、CONTEXT索引またはCTXRULE索引の場合、索引セットは置換できません。同様に、CTXCAT索引タイプの場合は、レクサー、ワードリスト、記憶域索引セットおよびメモリー・プリファレンスを置換できます。

POPULATEパラメータはデフォルトであり、指定する必要はありません。その内容の索引を空にする場合は、NOPOPULATEを指定します。索引を追加的に再構築する必要がある場合は、その内容の索引を消去します。NOPOPULATEは、索引の特定のパーティションに対して指定でき、索引全体に対しては指定できません。

REPLACEパラメータを使用してパーティション索引を再構築している場合は、STORAGE、MEMORYおよびNOPOPULATEのみ指定できます。

新しいワードリスト・プリファレンスSEPARATE_OFFSETSは、索引のtoken_infoをDOCIDとして1つの場所に格納し、offsetsを別の場所に格納することを指定します。CONTEXT索引のSEPARATE_OFFSETSオプションを使用して応答時間を改善する方法の詳細は、『Oracle Textアプリケーション開発者ガイド』を参照してください。

注意:

BASIC_STORAGE型の次の記憶域属性(いずれか)についてのみ、このプロシージャで既存の索引表を変更する場合は、データが再索引付けされません。

- BIG_IO

- I_INDEX_CLAUSE

- I_TABLE_CLAUSE

- SEPARATE_OFFSETS

関連項目:

.

- システム定義のプリファレンスの詳細、およびプリファレンスの作成と設定の詳細は、「Oracle Text索引付けの要素」を参照してください。

- CONTEXT索引のSEPARATE_OFFSETSオプションを使用して応答時間を改善する方法の詳細は、『Oracle Textアプリケーション開発者ガイド』を参照してください

REPLACE METADATA preference new_preference

SYNCパラメータを含む、索引の既存のpreferenceクラス設定を、new_preferenceの設定に置換します。索引プリファレンスおよび属性のみが置換されます。索引は再構築されません。

この文は、索引の構築後に、すべてのデータを再索引付けせずにプリファレンスとその属性設定を置き換える場合に便利です。データの再索引付けは、大幅な時間とコンピューティング・リソースを必要とするためです。

この文は、SYNCのタイプ(AUTOMATIC、MANUALまたはON-COMMIT)を変更する場合にも便利です。

ALTER INDEX REBUILD PARAMETER ('REPLACE METADATA')文は、索引のグローバル・レベルのローカル・パーティション索引には機能しません。たとえば、索引を再構築せずにフィルタまたはレクサー型などのグローバル・プリファレンスを変更する場合は、この構文を使用できません。かわりにALTER INDEX PARAMETERSを使用し、すべてのパーティションを含む、グローバル・レベルで索引のメタデータを変更します。「ALTER INDEX PARAMETERS構文」を参照してください。

METADATAキーワードを使用する必要がある場合REPLACE METADATAは、索引メタデータを変更しても、索引の一貫性が失われない場合のみ使用する必要があります。一貫性のない索引では、問合せ結果が不適切になる可能性があります。

たとえば、次の場合にこの文を使用します。

- マルチ言語データを想定して、単一言語レクサーからマルチレクサーに移行する場合。例については、「索引メタデータの置換: 単一レクサーからマルチレクサーへの変更」を参照してください。

- BASIC_WORDLISTのWILDCARD_MAXTERMS設定を変更する場合。

- SYNCのパラメータ・タイプ(AUTOMATIC、MANUALまたはON-COMMIT)を変更する場合。

これらの変更は安全で、索引の一貫性が失われることはありません。一貫性のない索引は、問合せ結果に悪影響を及ぼすことがあります。

警告:

REPLACE METADATA文を使用すると、索引データの一貫性が失われることがあります。これにより、問合せ結果が不適切になる可能性があります。したがって、索引データおよびその後の問合せの一貫性に与える影響を慎重に検討した場合を除いて、この文を使用することはお薦めできません。

メタデータの変更により、索引データの一貫性が失われる場合には、様々な例があります。たとえば、次の処理を行った後にMETADATAキーワードを使用しないことをお薦めします。

- USER_DATASTORE プロシージャを、出力が異なる新規のPL/SQLストアド・プロシージャに変更した場合。

- 既存のドキュメントに対してプリフィックスが生成されていないため、BASIC_WORDLIST属性PREFIX_INDEXをNOからYESに変更した場合。YESからNOへの変更は安全です。

- printjoinおよびskipjoin文字を使用した新規の問合せが、索引付け時にこれらの文字がレクサー処理されたのと異なる方法でレクサー処理されたため、BASIC_LEXER printjoinおよびskipjoin文字を追加または変更した場合。

- FORWARD_INDEXでREPLACE METADATAは使用しないでください。かわりに、REPLACE STORAGEを使用します。

このように危険な場合は、索引を再構築することをお薦めします。

REPLACE [METADATA] SYNC (MANUAL | EVERY "interval-string" | ON COMMIT)

元表に対するDML変更が発生した場合は、CONTEXT索引の自動同期化を行うためにSYNCを指定します。表1-1に示すSYNCメソッドのいずれかを指定できます。

表1-1 ALTER INDEXのSYNCメソッド

SYNCタイプ

説明

MANUAL

自動同期化は行われません。これはデフォルトです。CTX_DDL.SYNC_INDEXを使用して、索引を手動で同期化する必要があります。

ON COMMITおよびEVERY同期化を無効にするには、MANUALを使用します。

EVERY interval-string

スケジューラ・ジョブの場合と同じ構文をとるinterval-stringの値で指定された一定の間隔で、索引を自動的に同期化します。EVERYを使用した自動同期化の場合、索引作成者にCREATE JOB権限が必要です。

interval-stringが、前の同期化ジョブを完了できる十分な長さの期間に設定されていることを確認してください。長さが十分でないと、同期化ジョブがハングする可能性があります。interval-string引数は、二重引用符('' '')で囲む必要があります。

自動同期化構文の例は、「自動索引同期化の有効化」を参照してください。

ON COMMIT

コミットの直後に索引を同期化します。コミットは、同期化が完了するまで戻りません。(同期化は個別のトランザクションとして実行されるため、データがコミットされて索引変更がコミットされない場合でも、ある程度の時間(通常は短い)がかかります。)

この操作は、memoryパラメータで指定されたメモリーを使用します。

同期化操作には、独自のトランザクション・コンテキストがあります。この操作が失敗しても、データ・トランザクションはコミットされます。CTX_USER_INDEX_ERRORSビューに、索引同期化エラーが記録されます。CREATE INDEXの「索引エラーの表示」を参照してください。

ON COMMIT同期は、STAGE_ITAB索引が有効なときに最も有効に機能します。これが有効でないと、主索引が大幅に断片化し、頻繁なOPTIMIZEコールが必要になるからです。

ON COMMIT構文の例は、「自動索引同期化の有効化」を参照してください。

CONTEXT索引のSTAGE_ITABオプションの詳細は、『Oracle Textアプリケーション開発者ガイド』を参照してください。

ローカル・パーティション索引の各パーティションには、SYNCの独自のタイプ(ON COMMIT、EVERYまたはMANUAL)が設定されます。マスター・パラメータ文字列に指定されたSYNCのタイプは、パーティションが独自のタイプを指定した場合を除いて、すべての索引パーティションに適用されます。

自動(EVERY)同期化の場合は、メモリー・サイズおよびパラレル同期化を指定できます。構文は次のとおりです。

... EVERY interval_string MEMORY mem_size PARALLEL paradegree ...

ON COMMIT同期化は、シリアルでのみ実行され、索引作成時に指定されたサイズと同じメモリー・サイズで実行されます。

注意:

このコマンドは、索引を再構築します。索引を再構築せずにSYNC設定を変更する場合は、REBUILD REPLACE METADATA SYNC (MANUAL | ON COMMIT)操作を使用します。

REPLACE [METADATA] TRANSACTIONAL | NONTRANSACTIONAL

このパラメータを使用すると、TRANSACTIONALプロパティをオンまたはオフにできます。詳細は、"TRANSACTIONAL"を参照してください。

DML保留キューに行がない場合のみ、このパラメータの使用は成功します。したがって、このコマンドを発行する前に索引を同期化する必要があります。

TRANSACTIONAL索引プロパティをオンにする手順は、次のとおりです。

ALTER INDEX myidx REBUILD PARAMETERS('replace metadata transactional');

または

ALTER INDEX myidx REBUILD PARAMETERS('replace  transactional');

TRANSACTIONAL索引プロパティをオフにする手順は、次のとおりです。

ALTER INDEX myidx REBUILD PARAMETERS('replace metadata nontransactional');

または

ALTER INDEX myidx REBUILD PARAMETERS('replace  nontransactional');

RESUME [MEMORY memsize]

失敗した索引操作を再開します。オプションで、使用するメモリー量をmemsizeで指定できます。

注意:

このALTER INDEX操作が適用されるのは、CONTEXT索引とCTXRULE索引のみです。CTXCAT索引には適用されません。

ADD STOPWORD word [language language]

索引にストップワードのwordを動的に追加します。

この操作の前に存在したwordの索引エントリは、削除されません。ただし、wordに対する後続の問合せは、常にストップワードであるかのように処理されます。

使用しているストップリストがマルチ言語のストップリストの場合は、languageを指定する必要があります。

この文によって索引が再構築されることはありません。

ADD ZONE SECTION section_name tag tag

tagで識別されるゾーン・セクションsection_nameを、既存の索引に動的に追加します。

追加されたセクションsection_nameは、この操作の後に索引付けされるドキュメントのみに適用されます。変更を有効にするためには、このタグを含むすべての既存のドキュメントを、手動で再索引付けする必要があります。

この文によって索引が再構築されることはありません。

注意:

このALTER INDEX操作が適用されるのは、CONTEXT索引とCTXRULE索引のみです。CTXCAT索引には適用されません。

関連項目:

"注意"

ADD FIELD SECTION section_name tag tag [(VISIBLE | INVISIBLE)]

tagで識別されるフィールド・セクションsection_nameを、既存の索引に動的に追加します。追加できるフィールド・セクションの数に制限はありません。

オプションでVISIBLEを指定すると、フィールド・セクションを参照できます。デフォルトはINVISIBLEです。

関連項目:

参照できるフィールド・セクションおよび表示されないフィールド・セクションの詳細は、CTX_DDL.ADD_FIELD_SECTIONを参照してください。

追加されたセクションsection_nameは、この操作の後に索引付けされるドキュメントのみに適用されます。すでに索引付けされているドキュメントに対してこの変更を有効にするためには、このタグを含むすべてのドキュメントを、明示的に再索引付けする必要があります。

この文によって索引が再構築されることはありません。

注意:

このALTER INDEX操作が適用されるのは、CONTEXT索引とCTXRULE索引のみです。CTXCAT索引には適用されません。

関連項目:

"注意"

ADD ATTR SECTION section_name tag tag@attr

属性セクションsection_nameを、既存の索引に動的に追加します。XMLタグおよび属性を、tag@attrという形式で指定する必要があります。属性セクションは、XMLセクション・グループにのみ追加できます。

追加された属性セクションsection_nameは、この操作の後に索引付けされるドキュメントのみに適用されます。変更を有効にするためには、このタグを含むすべての既存のドキュメントを、手動で再索引付けする必要があります。

この文によって索引が再構築されることはありません。

注意:

このALTER INDEX操作が適用されるのは、CONTEXT索引とCTXRULE索引のみです。CTXCAT索引には適用されません。

関連項目:

"注意"

ADD STOP SECTION tag

tagで識別される停止セクションを、既存の索引に動的に追加します。停止セクションはXMLドキュメントの自動セクション処理のみに適用されるため、索引にはAUTO_SECTION_GROUPセクション・グループを使用する必要があります。定するタグは、自動セクション・グループ内で一意で、大/小文字を区別する必要があります。これに従わない場合、ALTER INDEXはエラーを戻します。

追加された停止セクションtagは、この操作の後に索引付けされるドキュメントのみに適用されます。すでに索引付けされているドキュメントに対してこの変更を有効にするためには、このタグを含むすべてのドキュメントを、明示的に再索引付けする必要があります。

停止セクション内のテキストは常に検索可能です。

追加できる停止セクションの数は無制限です。

この文によって索引が再構築されることはありません。

関連項目:

"注意"

注意:

このALTER INDEX操作が適用されるのは、CONTEXT索引のみです。CTXCAT索引には適用されません。

PARALLEL n

nを使用すると、パラレル索引付けに対する並列度をオプションで指定できます。このパラメータがサポートされるのは、SYNC、REPLACEおよびRESUMEをparamstringに使用した場合のみです。実際の並列度は、リソースによっては多少低くなります。

パラレル索引付けによって、索引付けするデータが大量にある場合およびオペレーティング・システムが複数のCPUをサポートしている場合は、索引付けを高速化できます。

ALTER INDEX Sub_Lexer構文

次の構文を使用します。

関連項目:

ALTER INDEXの索引タイプと構文は、「ALTER INDEXの用途」 を参照してください

New paramstring =
'REPLACE
[DATASTORE datastore_pref]
[FILTER filter_pref]
[LEXER lexer_pref]
[WORDLIST wordlist_pref]
[STORAGE storage_pref]
[STOPLIST stoplist]
[SECTION GROUP section_group]
[MEMORY memsize
[[POPULATE | NOPOPULATE]
[INDEX SET index_set]

[METADATA preference new_preference]
[[METADATA] SYNC (MANUAL | EVERY "interval-string" | ON COMMIT)]
[[METADATA] TRANSACTIONAL|NONTRANSACTIONAL

| RESUME [memory memsize]
| OPTIMIZE [token index_token | fast | full [maxtime (time | unlimited)]
| SYNC [memory memsize]
| ADD STOPWORD word [language language][LANGUAGE_DEPENDENT(TRUE|FALSE)]
| ADD ZONE SECTION section_name tag tag
| ADD FIELD SECTION section_name tag tag [(VISIBLE | INVISIBLE)]
| ADD ATTR SECTION section_name tag tag@attr
| ADD STOP SECTION tag
| ADD SUB_LEXER sub_lexer_name LANGUAGE language [ALT_VALUE alternate_value_for_language] [LANGUAGE_DEPENDENT (TRUE|FALSE)]
| REMOVE SUB_LEXER LANGUAGE language
| REMOVE STOPWORD word [LANGUAGE language]
| REMOVE STOPWORDS FOR LANGUAGE language
| MIGRATE to MULTI_STOPLIST [LANGUAGE COLUMN lang]
| MIGRATE FIELD SECTION field_section_name to [READ ONLY] MDATA
| UPDATE SUB_LEXER LANGUAGE language TO sub_lexer_preference
| ADD MDATA SECTION secname TAG sectag

Sub_Lexerの例

ALTER INDEX myidx PARAMETERS('ADD SUB_LEXER mycompany_lexer LANGUAGE mycompany LANGUAGE_DEPENDENT FALSE');

ALTER INDEX myidx PARAMETERS('REMOVE STOPWORDS FOR LANGUAGE mycompany');

Sub_Lexerの注意

言語は、Oracleで事前定義されている言語シンボル(Oracle Textでサポートされている言語のグローバリゼーション・サポート名または略称)、または言語に依存しないsub_lexerまたはstopwordにユーザーが定義するシンボルです。

ADD SUB_LEXER

次の条件が適用されます。

- LANGUAGE_DEPENDENT句を指定する場合、デフォルトはTRUEです。

- 同期はブロックされます(または同期によってブロックされます)。

- 言語に依存しない最初のsub_lexerを追加する場合は、元表もロックされます。

- 言語に依存しない最初のsub_lexerまたはストップワードを追加する場合は、完了するまで長い時間がかかります。それ以外の場合は、同じ索引に対して進行中の同期によってブロックされていないかぎり、すぐに終了します。

REMOVE SUB_LEXER

言語列が削除しようとしているsub_lexerのシンボルに設定されているドキュメントがない場合にのみ成功します。

REMOVE STOPWORD

次の条件が適用されます。

- LANGUAGE句を指定しない場合、索引はbasic_stoplistを使用していると想定されます。索引がbasic_stoplistを使用していない場合は、エラーが発生します。

- 索引が(multi_stoplistではなく)basic_stoplistを使用している場合でも、成功するのは元表が空の場合のみです。

- 索引がmulti_stoplistを使用しており、ユーザーLANGUAGE句にALLを指定した場合、成功するのは元表が空の場合のみです。

- 索引がmulti_stoplistを使用しており、ユーザーLANGUAGE句にシンボルを指定した場合は、削除しようとしているsub_lexerのシンボルに言語列が設定されているドキュメントがない場合にのみ成功します。

関連項目:

"「ALTER INDEX REBUILD Syntax」"

MIGRATE TO MULTI_STOPLIST [LANGUAGE COLUMN lang]

次の条件が適用されます。

- 既存のテキスト索引のストップリストをmulti_stoplistに移行します。既存のストップワードの言語は、値がALLになります。

- LANGUAGE列は、すでに索引に定義されています。

- LANGUAGE COLUMNはスキップできます(古い言語列が索引に保持されます)。

- LANGUAGE COLUMNを指定し、索引の言語列と指定した言語列が一致しない場合には、エラーが発生します。

- 索引にLANGUAGE COLUMNを指定する必要があります。指定しない場合は、エラーが発生します。

MIGRATE FIELD SECTION TO MDATA SECTION

次の条件が適用されます。

- ユーザーがフィールド・セクションをMDATAセクションに変換できます。MDATAセクションをREAD_ONLY MDATAセクションにする場合は、READ ONLY飲みを指定します(ADDとREMOVEは使用できない)。

- 制約: 移行されるMDATAセクションのトークンは、通常のMDATAの特性を持ちません。大/小文字の情報や、ドキュメントに確認されるトークンなどです。これらの特性を維持するには、ドキュメントを再索引付けする必要があります。

UPDATE SUB_LEXER LANGUAGE SUB_LEXER_SYMBOL TO SUB_LEXER_PREFERENCE

次の条件が適用されます。

- サブレクサーをユーザーが動的に更新できます。

- 言語、alt_value、言語依存性は、新旧のサブレクサー・プリファレンスで同じままである必要があります。

- デフォルトのサブレクサーを更新する構文は、次のとおりです。

UPDATE SUB_LEXER DEFAULT TO SUB_LEXER_PREFERENCE

ADD MDATA SECTION secname TAG sectag

次の条件が適用されます。

- MDATAセクションを索引に追加できます。

- NULL/AUTO/PATHセクション・グループで使用することはできません。

ALTER INDEXの例

失敗した索引付けの再開

次の文は、2MBのメモリーを使用してnewsindexの索引付け操作を再開します。

ALTER INDEX newsindex REBUILD PARAMETERS('resume memory 2M');

索引の再構築

次の文は、索引を再構築し、ストップリスト・プリファレンスをnew_stopで置換します。

ALTER INDEX newsindex REBUILD PARAMETERS('replace stoplist new_stop');

パーティション索引の再構築

次の例では、パーティション化されたテキスト表を作成し、それを移入してパーティション索引を作成します。次に、その表に新しいパーティションを追加し、次のようにALTER INDEXを使用して索引を再構築します。

PROMPT create partitioned table and populate it

create table part_tab (a int, b varchar2(40)) partition by range(a)
(partition p_tab1 values less than (10),
partition p_tab2 values less than (20),
partition p_tab3 values less than (30));

insert into part_tab values (1,'Actinidia deliciosa');
insert into part_tab values (8,'Distictis buccinatoria');
insert into part_tab values (12,'Actinidia quinata');
insert into part_tab values (18,'Distictis Rivers');
insert into part_tab values (21,'pandorea jasminoides Lady Di');
insert into part_tab values (28,'pandorea rosea');

commit;

PROMPT create partitioned index
create index part_idx on part_tab(b) indextype is ctxsys.context
local (partition p_idx1, partition p_idx2, partition p_idx3);

PROMPT add a partition and populate it
alter table part_tab add partition p_tab4 values less than (40);
insert into part_tab values (32, 'passiflora citrina');
insert into part_tab values (33, 'passiflora alatocaerulea');
commit;

次の文は、新しく移入されたパーティションに索引を再構築します。通常、新しく追加されたパーティションの索引パーティション名は、その名前がすでに使用済でないかぎり、表パーティションの名前と同じになります。使用済の場合は、新しい名前が生成されます。

alter index part_idx rebuild partition p_tab4;

次の文は、表を問い合せ、新しく追加されたパーティション内の2つのヒットを取り出します。

select * from part_tab where contains(b,'passiflora') >0;

次の文は、新しく追加されたパーティションに直接問い合せます。

select * from part_tab partition (p_tab4) where contains(b,'passiflora') >;

索引メタデータの置換: 単一レクサーからマルチレクサーへの変更

次の例は、レクサーの索引メタデータを置換することで、アプリケーションが単一言語のドキュメント(英語)からマルチ言語のドキュメント(英語およびスペイン語)に移行する方法を示しています。

REM creates a simple table, which stores only English (American) text

create table simple (text varchar2(80));
insert into simple values ('the quick brown fox');
commit;

REM create a simple lexer to lex this English text

begin
ctx_ddl.create_preference('us_lexer','basic_lexer');
end;
/

REM create a text index on the simple table
create index simple_idx on simple(text)
indextype is ctxsys.context parameters ('lexer us_lexer');

REM we can query easily
select * from simple where contains(text, 'fox')>0;

REM now suppose we want to start accepting Spanish documents.
REM first we have to extend the table with a language column
alter table simple add (lang varchar2(10) default 'us');

REM now let's create a Spanish lexer,
begin
ctx_ddl.create_preference('e_lexer','basic_lexer');
ctx_ddl.set_attribute('e_lexer','base_letter','yes');
end;
/
REM Then create a multilexer incorporating our English and Spanish lexers.
REM Note that the DEFAULT lexer is the exact same lexer, with which we have
REM have already indexed all the documents.
begin
ctx_ddl.create_preference('m_lexer','multi_lexer');
ctx_ddl.add_sub_lexer('m_lexer','default','us_lexer');
ctx_ddl.add_sub_lexer('m_lexer','spanish','e_lexer');
end;
/
REM next replace our metadata
alter index simple_idx rebuild
parameters ('replace metadata language column lang lexer m_lexer');

REM We are ready for some Spanish data.  Note that we could have inserted
REM this BEFORE the alter index, as long as we did not SYNC.
insert into simple values ('el zorro marr&oacute;n r&aacute;pido', 'e');
commit;
exec ctx_ddl.sync_index('simple_idx');
REM now query the Spanish data with base lettering:
select * from simple where contains(text, 'rapido')>0;

索引の最適化

索引を最適化するには、CTX_DDL.OPTIMIZE_INDEXを使用してください。

索引の同期化

索引を同期化するには、CTX_DDL.SYNC_INDEXを使用してください。

ゾーン・セクションの追加

タグ<author>で識別されるゾーン・セクションauthorを索引に追加するには、次の文を入力します。

ALTER INDEX myindex REBUILD PARAMETERS('add zone section author tag author');

停止セクションの追加

タグ<fluff>で識別される停止セクションを、AUTO_SECTION_GROUPを使用する索引に追加するには、次の文を入力します。

ALTER INDEX myindex REBUILD PARAMETERS('add stop section fluff');

属性セクションの追加

次のテキストがXMLドキュメントで使用されているとします。

<book title="Tale of Two Cities">It was the best of times.</book>

タイトル属性ごとに別のセクションを作成し、その新しい属性セクションにbooktitleという名前を付けるとします。そのためには、次の文を入力します。

ALTER INDEX myindex REBUILD PARAMETERS('add attr section booktitle tag
title@book');

SDATAセクションの追加

NUMBERデータ型で、タグT1により識別されるSDATAセクションS1を索引に追加するには、次のように文を入力します。

ALTER INDEX myindex PARAMETERS('add sdata section S1 tag T1 datatype NUMBER);

フラッシュバック問合せの使用

テキスト問合せのフラッシュバックが、問合せ対象のテキスト索引に対するALTER INDEX文の発行よりも前の時点になる場合は、次のように処理されます。

- 問合せオプティマイザでは、指定した索引の索引アクセス・パスは選択されません。これは、索引がALTER INDEXによる索引作成時間を基準に処理されるためです。この結果、問合せオプティマイザでは、索引は存在していないとみなされます。

- ALTER INDEX文にDR$索引表の再作成が含まれている場合、テキスト演算子の機能処理は、ORA-01466またはORA-08176エラーで失敗します。

この問題を回避するには、DBMS_FLASHBACKパッケージを使用します。次に例を示します。

EXEC dbms_flashback.enable_at_system_change_number(:scn);
SELECT id from documents WHERE CONTAINS(text, 'oracle')>0;
EXEC dbms_flashback.disable;

関連項目:

『Oracle Database開発ガイド』の「DBMS_FLASHBACKパッケージの使用」を参照してください

注意

セクション追加時の制約

Oracle Textでは、索引セクション情報を変更する前に、すべての妥当性制約が満たされていることを確認するために、新しいセクションが既存のセクションに対してチェックされます。PL/SQLパッケージCTX_DDLを使用してセクションをセクション・グループに追加するときにも同じ制約が適用されます。制約は次のとおりです。

- ゾーン、フィールドまたは停止セクションをNULL_SECTION_GROUPに追加することはできません。

- ゾーン、フィールドまたは属性セクションを自動セクション・グループに追加することはできません。

- 属性セクションをXMLセクション・グループ以外に追加することはできません。

- 2つの異なるセクションに同じタグを含めることはできません。

- ゾーン、フィールドおよび属性セクションのセクション名に、同じ名前を付けることはできません。

- セクションごとのフィールドの数は、64を超えることはできません。

- 停止セクションを基本、HTML、XMLまたは新しいセクション・グループに追加することはできません。

- SENTENCEおよびPARAGRAPHは、予約セクション名です。

関連項目

CTX_DDLパッケージのCTX_DDL.SYNC_INDEX

CTX_DDLパッケージのCTX_DDL.OPTIMIZE_INDEX

「CREATE INDEX」

1.2 ALTER TABLE: サポートされるパーティション化文

注意:

この項では、CONTEXTドメイン索引を持つパーティション化されたテキスト表の追加と変更に関連するALTER TABLE文について説明します。

ALTER TABLE文の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

用途

ALTER TABLE文を使用して、CONTEXTドメイン索引を持つパーティション化されたテキスト表を追加、変更、分割、マージ、交換または削除します。次の項では、ALTER TABLE操作をいくつか説明します。

MODIFY PARTITION構文

UNUSABLE LOCAL INDEXES

ALTER TABLE  [schema.]table MODIFY PARTITION partition UNUSABLE LOCAL INDEXES

指定した表パーティションに対応する索引パーティションにUNUSABLEのマークを付けます。「UNUSABLEのローカル索引の再構築」で説明するように、索引パーティションを再構築する前に、索引パーティションにUNUSABLEのマークを付けることができます。

索引パーティションにUNUSABLEのマークが付いていない場合、実際にはローカル索引パーティションの再構築を行わずに戻ります。

UNUSABLEのローカル索引の再構築

ALTER TABLE  [schema.]table MODIFY PARTITION partition REBUILD UNUSABLE LOCAL
INDEXES

指定したUNUSABLEステータスの表パーティションに対応する索引パーティションを再構築します。

注意:

索引パーティションのステータスが、この文の入力前にすでにVALIDになっている場合、その索引パーティションは再構築されません。この文は、ステータスがUNUSABLEでない索引パーティションの再構築には使用できません。

ADD PARTITION構文

ALTER TABLE [schema.]table ADD PARTITION [partition]
VALUES LESS THAN (value_list) [partition_description]

新しいパーティションをレンジ・パーティション化表の最後に追加します。

表の先頭または中間にパーティションを追加する場合は、ALTER TABLE SPLIT PARTITION文を使用します。

新しく追加された表パーティションは常に空で、このパーティションのCONTEXTドメイン索引(ある場合)のステータスは、常にVALIDになります。DMLの発行後に、新しく追加された索引パーティションを同期化または最適化する場合は、索引パーティション名を検索して、ALTER INDEX REBUILD PARTITION文を入力する必要があります。通常、新しく追加されたパーティションの索引パーティション名は、表パーティション名と同じになります。ただし、その表パーティション名がすでに別の索引パーティションの名前に使用されている場合は、SYS_Pnの形式で名前が割り当てられます。

USER_IND_PARTITIONSビューを問い合せてHIGH_VALUEフィールドを照合することで、新しく追加されたパーティションの索引パーティション名を確認できます。

MERGE PARTITION構文

ALTER TABLE [schema.]table
MERGE PARTITIONS partition1, partition2
[INTO PARTITION [new_partition] [partition_description]]
[UPDATE GLOBAL INDEXES]

レンジ・パーティションのみに適用されます。この文は、隣接する2つのパーティションの内容を新しいパーティションにマージした後、元の2つのパーティションを削除します。生成されたパーティションが空でない場合は、対応するローカル・ドメイン索引パーティションにUNUSABLEのマークが付けられます。ALTER TABLE MODIFY PARTITIONを使用して、パーティション索引を再構築できます。

グローバル非パーティション索引の場合、UPDATE GLOBAL INDEXES句を使用せずにマージ操作を実行すると、作成される索引(NULL以外の場合)は無効になり、再構築が必要です。操作の終了後にUPDATE GLOBAL INDEXES句を指定し、SYNCタイプがMANUALの場合、索引は有効になりますが、索引をCTX_DDL.SYNC_INDEXで同期化して、更新を有効にする必要があります。

生成された索引パーティションのネーミング規則は、ALTER TABLE ADD PARTITION文のネーミング規則と同じです。

SPLIT PARTITION構文

ALTER TABLE [schema.]table
SPLIT PARTITION partition_name_old
AT (value_list)
[into (partition_description, partition_description)]
[parallel_clause]
[UPDATE GLOBAL INDEXES]

レンジ・パーティションのみに適用されます。この文は、1つの表パーティションを2つのパーティションに分割することによって、新しいパーティションを表に追加します。対応する表パーティションが空でない場合は、対応するローカル索引パーティションにUNUSABLEのマークが付けられます。ALTER TABLE MODIFY PARTITION文を使用して、パーティション索引を再構築します。

グローバル非パーティション索引の場合、UPDATE GLOBAL INDEXES句を使用せずに分割操作を実行すると、作成される索引(NULL以外の場合)は無効になり、再構築が必要です。操作の終了後にUPDATE GLOBAL INDEXES句を指定し、SYNCタイプがMANUALの場合、索引は有効になりますが、索引をCTX_DDL.SYNC_INDEXで同期化して、更新を有効にする必要があります。

生成された2つの索引パーティションのネーミング規則は、ALTER TABLE ADD PARTITION文のネーミング規則と同じです。

EXCHANGE PARTITION構文

ALTER TABLE [schema.]table EXCHANGE PARTITION partition WITH TABLE table
[INCLUDING|EXCLUDING INDEXES}
[WITH|WITHOUT VALIDATION]
[EXCEPTIONS INTO [schema.]table]
[UPDATE GLOBAL INDEXES]

それぞれのデータ・セグメントを交換することによって、パーティションを非パーティション表に、および表をパーティション表のパーティションに変換します。ROWIDは保持されます。

EXCLUDING INDEXESが指定されている場合は、パーティションに対応するすべてのCONTEXT索引と、交換された表のすべての索引にUNUSABLEのマークが付けられます。新しい索引パーティションの再構築には、ALTER TABLE MODIFY PARTITION文を発行します。

INCLUDING INDEXESが指定されている場合は、パーティション表の各ローカル・ドメイン索引に対して、非パーティション表の非パーティション・ドメイン索引が存在している必要があります。ローカル索引パーティションは、対応する通常の索引と交換されます。

グローバル非パーティション索引の場合、UPDATE GLOBAL INDEXES句を使用せずに交換操作を実行すると、作成される索引(NULL以外の場合)は無効になり、再構築が必要です。操作の終了後にUPDATE GLOBAL INDEXES句を指定し、SYNCタイプがMANUALの場合、索引は有効になりますが、索引をCTX_DDL.SYNC_INDEXで同期化して、更新を有効にする必要があります。

フィールド・セクション

非パーティション索引とローカル索引で、同じフィールド・セクションに対して異なるセクションIDが使用されている場合、フィールド・セクション問合せは同じように機能しません。

記憶域

記憶域は変更されません。したがって、非パーティション表の$I表の索引が表領域XYZに存在していた場合、その索引はEXCHANGE PARTITIONの実行後も表領域XYZに存在しますが、今度は索引パーティションに対する$I表になります。

記憶域プリファレンスの切替えはありません。このため、切り替えた後で索引を再構築しても、異なる場所に表が作成されます。

制限事項

両方の索引が等価であることが必要です。索引に同じオブジェクトが使用され、各オブジェクトに同一の設定が使用されている必要があります。Oracle Textでチェックされるのは索引での同一のオブジェクトの使用のみであることに注意してください。実際は、使用されるものがすべて厳密に同じである必要があります。

ユーザーが$I表または$N表のパーティション化に記憶域オブジェクトを使用した場合、索引オブジェクトはパーティション化できません。

索引または索引パーティションが、これらいずれかの制限事項に違反している場合はすべてエラーが発生し、その索引および索引パーティションはINVALIDになります。ALTER INDEX REBUILD文を使用して、索引と索引パーティションをそれぞれ手動で再構築する必要があります。

TRUNCATE PARTITION構文

ALTER TABLE [schema.]table TRUNCATE PARTITION [DROP|REUSE STORAGE] [UPDATE GLOBAL
INDEXES]

表内のパーティションからすべての行を削除します。対応するCONTEXT索引パーティションも削除されます。

グローバル非パーティション索引の場合、UPDATE GLOBAL INDEXES句を使用せずに切捨て操作を実行すると、作成される索引(NULL以外の場合)は無効になり、再構築が必要です。操作の終了後にUPDATE GLOBAL INDEXES句を指定すると、索引が有効になります。

ALTER TABLEの例

パーティション表のグローバル索引の例

次の例では、3つのパーティションを持つレンジ・パーティション表を作成します。各パーティションには2つの行が移入されます。その後、グローバル非パーティションCONTEXT索引が作成されます。UPDATE GLOBAL INDEXES句を示すために、索引同期化によってパーティションが分割およびマージされます。

create table tdrexglb_part(a int, b varchar2(40)) partition by range(a)
(partition p1 values less than (10),
partition p2 values less than (20),
partition p3 values less than (30));

insert into tdrexglb_part values (1,'row1');
insert into tdrexglb_part values (8,'row2');
insert into tdrexglb_part values (11,'row11');
insert into tdrexglb_part values (18,'row18');
insert into tdrexglb_part values (21,'row21');
insert into tdrexglb_part values (28,'row28');

commit;
create index tdrexglb_parti on tdrexglb_part(b) indextype is ctxsys.context;

create table tdrexglb(a int, b varchar2(40));

insert into tdrexglb values(20,'newrow20');
commit;

PROMPT make sure query works
select * from tdrexglb_part where contains(b,'row18') >0;

PROMPT split partition
alter table tdrexglb_part split partition p2 at (15) into
(partition p21, partition p22) update global indexes;

PROMPT before sync
select * from tdrexglb_part where contains(b,'row11') >0;
select * from tdrexglb_part where contains(b,'row18') >0;

exec ctx_ddl.sync_index('tdrexglb_parti')

PROMPT after sync
select * from tdrexglb_part where contains(b,'row11') >0;
select * from tdrexglb_part where contains(b,'row18') >0;

PROMPT merge partition
alter table tdrexglb_part merge partitions p22, p3
into partition pnew3 update global indexes;

PROMPT before sync
select * from tdrexglb_part where contains(b,'row18') >0;
select * from tdrexglb_part where contains(b,'row28') >0;
exec ctx_ddl.sync_index('tdrexglb_parti');

PROMPT after sync
select * from tdrexglb_part where contains(b,'row18') >0;
select * from tdrexglb_part where contains(b,'row28') >0;

PROMPT drop partition
alter table tdrexglb_part drop partition p1 update global indexes;

PROMPT before sync
select * from tdrexglb_part where contains(b,'row1') >0;
exec ctx_ddl.sync_index('tdrexglb_parti');

PROMPT after sync
select * from tdrexglb_part where contains(b,'row1') >0;

PROMPT exchange partition
alter table tdrexglb_part exchange partition pnew3 with table
tdrexglb update global indexes;

PROMPT before sync
select * from tdrexglb_part where contains(b,'newrow20') >0;
select * from tdrexglb_part where contains(b,'row28') >0;

exec ctx_ddl.sync_index('tdrexglb_parti');
PROMPT after sync
select * from tdrexglb_part where contains(b,'newrow20') >0;
select * from tdrexglb_part where contains(b,'row28') >0;

PROMPT move table partition
alter table tdrexglb_part move partition p21 update global indexes;
PROMPT before sync
select * from tdrexglb_part where contains(b,'row11') >0;

exec ctx_ddl.sync_index('tdrexglb_parti');
PROMPT after sync
select * from tdrexglb_part where contains(b,'row11') >0;

PROMPT truncate table partition
alter table tdrexglb_part truncate partition p21 update global indexes;

update global indexes;

1.3 CATSEARCH

CTXCAT索引を検索するには、CATSEARCH演算子を使用します。この演算子は、SELECT文のWHERE句で使用します。

CATSEARCH演算子ではデータベース・リンクもサポートされます。名前の末尾に@dblinkを追加すると、リモート表またはマテリアライズド・ビューを識別できます。dblinkは、リモート表またはマテリアライズド・ビューが含まれているデータベースへのデータベース・リンクの完全名または部分名であることが必要です。(リモート・ビューの索引付けはサポートされていません。)

この演算子の文法は、CTXCATと呼ばれます。シソーラス、ファジー・マッチング、近接検索またはステミングなど、検索基準に特殊な機能が必要な場合は、CONTEXT文法を使用することもできます。CONTEXT文法を利用する場合は、この項で説明する"text_query"パラメータで問合せテンプレートを指定します。

パフォーマンス

CATSEARCH演算子をCTXCAT索引で使用すると、主に複合問合せのパフォーマンスを向上させることができます。テキスト問合せ条件の指定にはtext_query引数を使用し、構造化条件の指定にはstructured_queryを使用します。

内部的には、テキスト列および構造化列に対して結合Bツリー索引が使用され、問合せを満たす結果が迅速に生成されます。

制限事項

オプティマイザが機能問合せ呼出しの使用を選択すると、問合せは失敗します。構造化句の選択性が高い場合、オプティマイザは機能呼出しを選択する可能性があります。

CATSEARCH演算子のstructured_query引数は、CREATE INDEXセットで使用される列を参照する必要があります。それ以外の場合は、エラーDRG-10845が発生します。たとえば、CTXCAT索引が設定されている表の上に作成されたビューに対してCATSEARCH問合せを発行するとき、ビューの論理列名が物理表の実際の列名と異なる場合は、エラーが発生します。CATSEARCH演算子のstructured_query引数で参照される列は、ビューの論理列ではなく、CREATE INDEXセットで使用される物理列名であることが必要です。

構文

CATSEARCH(

[schema.]column,
text_query       [VARCHAR2|CLOB],
structured_query VARCHAR2,

RETURN NUMBER;

[schema.]column

検索するテキスト列を指定します。検索する列には、対応付けられたCTXCAT索引が必要です。

text_query

次のいずれかを指定して、columnの検索を定義します。

- CATSEARCH問合せ演算子

- 問合せテンプレート(CONTEXT文法を使用する場合)

CATSEARCH問合せ演算子

CATSEARCH演算子では、次の問合せ操作のみがサポートされます。

- 論理積(AND)

- 論理OR(|)

- 論理NOT (-)

- " "(引用符で囲んだ句)

- ワイルド・カード

表1-2に、これらの演算子の構文を示します。

表1-2 CATSEARCH問合せ演算子

操作

構文

操作の説明

論理積(AND)

a b c

a、bおよびcを含む行を戻します。

論理OR

a | b | c

a、bまたはcを含む行を戻します。

論理NOT

a - b

aを含み、bを含まない行を戻します。

空白なしのハイフン

a-b

通常の文字として処理されるハイフンです。

たとえば、ハイフンがskipjoinとして定義されている場合、web-siteなどのワードは、単一の問合せ語句websiteとして処理されます。

同様に、ハイフンがprintjoinとして定義されている場合、web-siteなどのワードは、CTXCAT問合せ言語ではweb-siteとして処理されます。

" "

"a b c"

句"a b c"を含む行を戻します。

たとえば、"Sony CD Player"と入力すると、この一連のワードを含むすべての行を戻します。

( )

(A B) | C

グループ設定をカッコで囲みます。この問合せは、CONTAINS問合せ(A &B) | Cに相当します。

ワイルド・カード

(右側切捨ておよび左右切捨て)

term*

a*b

ワイルド・カード文字は、0(ゼロ)個以上の文字と一致します。

たとえば、do*は、dogに一致し、gl*sは、glassに一致します。

左側切捨ては、サポートされていません。

注意: アプリケーションでワイルド・カード検索を使用する場合は、プリフィックス索引を作成することをお薦めします。プリフィックス索引付けは、BASIC_WORDLISTプリファレンスを使用して設定します。

前述の演算子には、次の制限事項が適用されます。

- 左側(列名)は、索引セットの少なくとも1つの索引でネーミングされた列である必要があります。

- 左側は明白な列名である必要があります。関数と式を置くことはできません。

- 右側はリテラル値で構成される必要があります。関数、式、他の列およびサブ選択肢を置くことはできません。

- 複数の基準をANDで結合できます。ORはサポートされていないことに注意してください。

- データベース・リンクを使用してリモート表を問い合せる場合、データベース・リンクは、問合せ対象の表に対してのみでなく、CATSEARCHに対しても指定されている必要があります。

たとえば、次の式がサポートされています。

catsearch(text, 'dog', 'foo > 15')
catsearch(text, 'dog', 'bar = ''SMITH''')
catsearch(text, 'dog', 'foo between 1 and 15')
catsearch(text, 'dog', 'foo = 1 and abc = 123')
catsearch@remote(text, 'dog', 'foo = 1 and abc = 123')

次の式はサポートされていません。

catsearch(text, 'dog', 'upper(bar) = ''A''')
catsearch(text, 'dog', 'bar LIKE ''A%''')
catsearch(text, 'dog', 'foo = abc')
catsearch(text, 'dog', 'foo = 1 or abc = 3')

問合せテンプレート

問合せテンプレートを指定するマークアップ文字列を指定します。次のテンプレートのいずれかを指定します。

- クエリー・リライト。問合せ文字列を別のバージョンに拡張するために使用されます。

- 漸進的緩和。再コールを増やすために、制限が緩和されたバージョンの問合せを漸進的に入力するために使用されます。

- 代替文法。CONTAINS演算子を指定するために使用されます(「CONTEXT問合せ文法の例」を参照)。

- 代替言語。代替問合せ言語を指定するために使用されます。

- 代替スコアリング。代替スコアリング・アルゴリズムを指定するために使用されます。

関連項目:

これらの問合せテンプレートの構文の詳細は、「CONTAINS」の「text_query」パラメータの説明を参照してください。

structured_query

構造化条件とORDER BY句を指定します。指定するすべての列に索引が存在している必要があります。たとえば、'category_id=1 order by bid_close'を指定するとします。CTX_DDL.ADD_INDEXパッケージで指定した場合と同様に、'category_id, bid_close'に索引が存在している必要があります。

structured_queryでは、標準SQL構文と併用できるのは次の演算子のみです。

- =

- <=

- >=

- >

- <

- IN

- BETWEEN

- AND(2つ以上の句を結合)

注意:

structured_queryパラメータにカッコ'()'は使用できません。

例

1. 表を作成します。
次の文では、索引付けする表を作成します。

CREATE TABLE auction (category_id number primary key, title varchar2(20),
bid_close date);

次の文で、変数を表に挿入します。

INSERT INTO auction values(1, 'Sony DVD Player', '20-FEB-2012');
INSERT INTO auction values(2, 'Sony DVD Player', '24-FEB-2012');
INSERT INTO auction values(3, 'Pioneer DVD Player', '25-FEB-2012');
INSERT INTO auction values(4, 'Sony DVD Player', '25-FEB-2012');
INSERT INTO auction values(5, 'Bose Speaker', '22-FEB-2012');
INSERT INTO auction values(6, 'Tascam CD Burner', '25-FEB-2012');
INSERT INTO auction values(7, 'Nikon digital camera', '22-FEB-2012');
INSERT INTO auction values(8, 'Canon digital camera', '26-FEB-2012');

2. CTXCAT索引を作成します。
次の文では、CTXCAT索引を作成します。

begin

ctx_ddl.create_index_set('auction_iset');
ctx_ddl.add_index('auction_iset','bid_close');

end;
/
CREATE INDEX auction_titlex ON auction(title) INDEXTYPE IS CTXSYS.CTXCAT
PARAMETERS ('index set auction_iset');

3. 表を問い合せます。
CATSEARCHによる一般的な問合せには、次のように、bid_closeによって順序付けられたワードcameraを含むすべての行を検索する構造化句が組み込まれています。

SELECT * FROM auction WHERE CATSEARCH(title, 'camera', 'order by bid_close desc')>
0;

CATEGORY_ID TITLE                BID_CLOSE
----------- -------------------- ---------
8 Canon digital camera 26-FEB-12
7 Nikon digital camera 22-FEB-12

次の問合せでは、語句Sony DVD Playerを含み、入札終了日が2012年2月20日のすべての行を検索します。

SELECT * FROM auction WHERE CATSEARCH(title, '"Sony DVD Player"',
'bid_close=''20-FEB-00''')> 0;

CATEGORY_ID TITLE                BID_CLOSE
----------- -------------------- ---------
1 Sony DVD Player       20-FEB-12

次の問合せでは、語句Sony、DVDおよびPlayerを含むすべての行を検索します。

SELECT * FROM auction WHERE CATSEARCH(title, 'Sony DVD Player',
'order by bid_close
desc')> 0;
CATEGORY_ID TITLE                BID_CLOSE
----------- -------------------- ---------
4 Sony DVD Player       25-FEB-12
2 Sony DVD Player       24-FEB-12
1 Sony DVD Player       20-FEB-12

次の問合せでは、語句DVDは含まれているがPlayerは含まれていないすべての行を検索します。

SELECT * FROM auction WHERE CATSEARCH(title, 'DVD - Player', 'order by bid_close
desc')> 0;

CATEGORY_ID TITLE                BID_CLOSE
----------- -------------------- ---------
6 Tascam CD Burner     25-FEB-12

次の問合せでは、語句CDまたはDVDまたはSpeakerを含むすべての行を検索します。

SELECT * FROM auction WHERE CATSEARCH(title, 'CD | DVD | Speaker', 'order by
bid_close desc')> 0;

CATEGORY_ID TITLE                BID_CLOSE
----------- -------------------- ---------
3 Pioneer DVD Player   25-FEB-12
4 Sony DVD Player      25-FEB-12
6 Tascam CD Burner     25-FEB-12
2 Sony DVD Player      24-FEB-12
5 Bose Speaker         22-FEB-12
1 Sony DVD Player      20-FEB-12

次の問合せは、audio equipmentに関連するすべての行を検索します。

SELECT * FROM auction WHERE CATSEARCH(title, 'ABOUT(audio equipment)',
NULL)> 0;

CONTEXT問合せ文法の例

次の例は、テンプレート機能を使用してCATSEARCH問合せでCONTEXT文法を指定する方法を示します。

PROMPT
PROMPT fuzzy: query = ?test
PROMPT should match all fuzzy variations of test (for example, text)
select pk||' ==> '||text from test
where catsearch(text,
'<query>
<textquery grammar="context">
?test
</textquery>
</query>','')>0
order by pk;

PROMPT
PROMPT fuzzy: query = !sail
PROMPT should match all soundex variations of bot (for example, sell)
select pk||' ==> '||text from test
where catsearch(text,
'<query>
<textquery grammar="context">
!sail
</textquery>
</query>','')>0
order by pk;

PROMPT
PROMPT theme (ABOUT) query
PROMPT query: about(California)
select pk||' ==> '||text from test
where catsearch(text,
'<query>
<textquery grammar="context">
about(California)
</textquery>
</query>','')>0
order by pk;

次の例は、CATSEARCH問合せの問合せテンプレートによる、CONTEXT文法を使用したCTXCAT索引に対するフィールド・セクション検索を示します。

-- Create and populate table
create table BOOKS (ID number, INFO varchar2(200), PUBDATE DATE);

insert into BOOKS values(1, '<author>NOAM CHOMSKY</author><subject>CIVIL
RIGHTS</subject><language>ENGLISH</language><publisher>MIT
PRESS</publisher>', '01-NOV-2003');

insert into BOOKS values(2, '<author>NICANOR PARRA</author><subject>POEMS
AND ANTIPOEMS</subject><language>SPANISH</language>
<publisher>VASQUEZ</publisher>', '01-JAN-2001');

insert into BOOKS values(1, '<author>LUC SANTE</author><subject>XML
DATABASE</subject><language>FRENCH</language><publisher>FREE
PRESS</publisher>', '15-MAY-2002');

commit;

-- Create index set and section group
exec ctx_ddl.create_index_set('BOOK_INDEX_SET');
exec ctx_ddl.add_index('BOOKSET','PUBDATE');

exec ctx_ddl.create_section_group('BOOK_SECTION_GROUP',
'BASIC_SECTION_GROUP');
exec ctx_ddl.add_field_section('BOOK_SECTION_GROUP','AUTHOR','AUTHOR');
exec ctx_ddl.add_field_section('BOOK_SECTION_GROUP','SUBJECT','SUBJECT');
exec ctx_ddl.add_field_section('BOOK_SECTION_GROUP','LANGUAGE','LANGUAGE');
exec ctx_ddl.add_field_section('BOOK_SECTION_GROUP','PUBLISHER','PUBLISHER');

-- Create index
create index books_index on books(info) indextype is ctxsys.ctxcat
parameters('index set book_index_set section group book_section_group');

-- Use the index
-- Note that: even though CTXCAT index can be created with field sections, it
-- cannot be accessed using CTXCAT grammar (default for CATSEARCH).
-- We need to use query template with CONTEXT grammar to access field
-- sections with CATSEARCH.

select  id, info from books
where catsearch(info,
'<query>
<textquery grammar="context">
NOAM within author and english within language
</textquery>
</query>',
'order by pubdate')>0;

関連項目

"CTXCAT索引タイプの構文"

『Oracle Textアプリケーション開発者ガイド』

1.4 CONTAINS

テキスト問合せに問合せ式を指定するには、SELECT文のWHERE句でCONTAINS演算子を使用します。

CONTAINS演算子ではデータベース・リンクもサポートされます。名前の末尾に@dblinkを追加すると、リモート表またはマテリアライズド・ビューを識別できます。dblinkは、リモート表またはマテリアライズド・ビューが含まれているデータベースへのデータベース・リンクの完全名または部分名であることが必要です(リモート・ビューの問合せはサポートされていません)。

CONTAINSは、選択されたすべての行に対して関連性スコアを戻します。関連性スコアは、SCORE演算子で取得します。

この演算子の文法は、CONTEXT文法と呼ばれます。単純な構文の方が効率的に動作するアプリケーションの場合は、CTXCAT文法を使用することもできます。そのためには、この項で説明するtext_queryパラメータに問合せテンプレートを指定します。

関連項目:

- "クエリー・リライト・テンプレート"

- "問合せ結果セット記述子テンプレート"

- "問合せ緩和テンプレート"

- "代替文法テンプレート"

- "言語非依存テンプレート"

- "代替言語テンプレート"

- "代替スコアリング・テンプレート"

- 『Oracle Textアプリケーション開発者ガイド』のCONTEXT文法に関する項

構文

CONTAINS(
[schema.]column,
text_query    [VARCHAR2|CLOB]
[,label       NUMBER])
RETURN NUMBER;

[schema.]column

検索するテキスト列を指定します。検索する列は、対応付けられたテキスト索引を持っている必要があります。

text_query

次のいずれかを指定します(VARCHAR2に対して4000バイト、CLOBに対して64000バイトに制限されます)。

- 列の検索を定義する問合せ式。

- 問合せテンプレートを指定するマークアップ・ドキュメント。
次のいずれかの問合せテンプレートを使用します。

- クエリー・リライト・テンプレート

- 問合せ結果セット記述子テンプレート

- 問合せ緩和テンプレート

- 代替文法テンプレート

- 言語非依存テンプレート

- 代替言語テンプレート

- 代替スコアリング・テンプレート

クエリー・リライト・テンプレート

このテンプレートを使用して、Oracle Textに問合せを発行する前に、様々なバージョンの問合せを自動的に書き換えます。これは、ユーザー問合せの再コールを最大化する必要がある場合に便利です。たとえば、単一の句問合せ'cat dog'を次の問合せに拡張するように、アプリケーションをプログラミングできます。

{cat} {dog}
{cat} ; {dog}
{cat} AND {dog}
{cat} ACCUM {dog}

これらの問合せは1つの問合せとして発行され、重複なしで結果が戻されます。この例では、問合せは、句cat dogを含むドキュメント、catがdogの近くにあるドキュメント、およびcatとdogを含むドキュメントを戻します。

これは、次のテンプレートを使用して実行されます。

<query>
<textquery lang="ENGLISH" grammar="CONTEXT"> cat dog
<progression>
<seq><rewrite>transform((TOKENS, "{", "}", " "))</rewrite></seq>
<seq><rewrite>transform((TOKENS, "{", "}", " ; "))</rewrite></seq>
<seq><rewrite>transform((TOKENS, "{", "}", "AND"))</rewrite></seq>
<seq><rewrite>transform((TOKENS, "{", "}", "ACCUM"))</rewrite></seq>
</progression>
</textquery>
<score datatype="INTEGER" algorithm="COUNT"/>
</query>

演算子TRANSFORMは、書換えルールを指定するために使用され、次の構文を使用します(二重カッコを使用することに注意してください)。表1-3に、パラメータを示します。

TRANSFORM((terms, prefix, suffix, connector))

表1-3 TRANSFORMパラメータ

パラメータ

説明

term

元の問合せから生成される語句のタイプを指定します。TOKENSまたはTHEMESのいずれかを指定します。

prefix

すべての語句の先頭に付加するリテラル文字列を指定します。

suffix

すべての語句の末尾に付加するリテラル文字列を指定します。

connector

プリフィックスおよびサフィックスを適用した後、すべての語句に接続するリテラル文字列を指定します。

注意:

TRANSFORMルールを使用したクエリー・リライト・テンプレートで指定されるテキスト問合せの入力文字列にOracle Text問合せ演算子(AND、OR、SOUNDEXなど)が含まれる場合、エラーが発生します。また、テキスト問合せの入力文字列に特殊文字(%や$など)を使用する場合、エスケープ文字の後に指定する必要があります。そうしないと、エラーが発生します。

問合せ結果セット記述子テンプレート

結果セット記述子を取得する場合に、このテンプレートを使用します。問合せテンプレートに、ctx_result_set_descriptor要素が追加されます。これによって、CONTAINS問合せカーソルがグループ・カウント問合せを取得できるようになります。

結果セット・インタフェース・ドキュメントが、ctx_queryパッケージのパブリック変数に配置されます。 (ctx_query.result_set_document)

CONTAINS問合せカーソルの動作は変わらず、結果セット・ドキュメントはカーソルのクローズ直後に使用できるようになります。

たとえば、kukui nutの次の問合せは、次のテンプレートを持つ結果セットを戻します。

<query>
<textquery lang="ENGLISH" grammar="CONTEXT">
<progression>
<seq><rewrite>transform((TOKENS, "{", "}", " "))</rewrite></seq>
<seq><rewrite>transform((TOKENS, "{", "}", " ; "))</rewrite></seq>
<seq><rewrite>transform((TOKENS, "{", "}", "AND"))</rewrite></seq>
<seq><rewrite>transform((TOKENS, "{", "}", "ACCUM"))</rewrite></seq>
</progression>
</textquery>
<score datatype="INTEGER" algorithm="COUNT"/>
<ctx_result_set_descriptor>
<group>
<group_values>
<value id="2"/>
<value id="3"/>
<value id="4"/>
</group_values>
<count/>
</group>
</ctx_result_set_descriptor>
</query>

問合せ緩和テンプレート

このテンプレートを使用して、問合せを漸進的に緩和します。漸進的緩和は、制限が緩和されたバージョンの問合せを漸進的に発行することで、再コールを増やすために使用されます。これにより、アプリケーションは適切なヒット数をユーザーに戻します。

たとえば、問合せblack penは次のように漸進的に緩和されます。

black pen
black NEAR pen
black AND pen
black ACCUM pen

これは、次のテンプレートを使用して実行されます。

<query>
<textquery lang="ENGLISH" grammar="CONTEXT">
<progression>
<seq>black pen</seq>
<seq>black NEAR pen</seq>
<seq>black AND pen</seq>
<seq>black ACCUM pen</seq>
</progression>
</textquery>
<score datatype="INTEGER" algorithm="COUNT"/>
</query>

代替文法テンプレート

このテンプレートを使用して、CONTEXTまたはCATSEARCHなどの代替文法を指定します。代替文法を指定すると、様々な構文や演算子を使用して問合せを入力できます。

たとえば、CATSEARCHを使用する場合、CONTEXT文法を使用してABOUT問合せを入力します。同様に、CONTAINSを使用する場合、簡略化されたCATSEARCH構文を使用して論理問合せを入力します。

句'dog cat mouse'は、CONTAINSの句として解釈されます。ただし、CATSEARCHを使用すると、これはAND問合せ'dog AND cat AND mouse'と同等になります。CONTAINSが次のテンプレートで代替文法を使用するように指定します。

<query>
<textquery grammar="CTXCAT">dog cat mouse</textquery>
<score datatype="integer"/>
</query>

言語非依存テンプレート

ユーザー定義のシンボル(または略称)を使用し、どの言語にも依存しないレクサーを指定する場合は、このテンプレートを使用します。

次の例では問合せが言語に依存しないサブレクサーのリストを取ることを指定しています。

<query>
<textquery grammar="CONTEXT" lang="ENGLISH">
Oracle
</textquery>
<score datatype="INTEGER" algorithm="COUNT"/>
<sublexers>
<sublexer_label>  SESSION_LANG   </sublexer_label>
<sublexer_label>   MAIL   </sublexer_label>
<sublexer_label> CALENDER </sublexer_label>
</sublexers>
</query>

次の条件が適用されます。

- sublexers要素は、1つ以上のsublexer_label要素で構成されます。

- 各sublexer_label要素には、言語に依存しないsub_lexerのシンボルが含まれます。

- sublexers要素を指定すると、sublexers要素に指定されるシンボルごとにストップワードとsub_lexerを使用して問合せが処理され、queryは指定されたsub_lexerによって索引付けされるドキュメントのみを戻します。

- 特別に予約されているSESSION_LANGというシンボルを使用すると、シンボルは問合せテンプレートのtextquery要素のlang属性で指定される言語に基づいて言語に依存するsub_lexerを選択します。lang属性を指定しない場合、lang属性はセッション言語に基づいて決定されます。選択したsub_lexerによって解析されるQueryは、言語に依存するそのsub_lexerによって索引付けされたドキュメントのみを戻すようになります。SESSION_LANG属性とlang属性の両方を指定した場合は、lang属性が優先されます。

- SESSION_LANGを指定せずにsublexers要素を指定した場合は、textquery要素のlang属性が無視されます。

- デフォルトの動作:
sublexers要素が問合せテンプレートに存在しない場合、queryは言語に依存する1つのsub-lexer (存在する場合)によって解析されます。これは、指定されたlang属性、またはセッション言語および言語に依存しないすべてのsub-lexerに基づいて選択されます。

代替言語テンプレート

このテンプレートを使用して、代替言語を指定します。

<query><textquery lang="french">bon soir</textquery></query>

代替スコアリング・テンプレート

このテンプレートを使用して、代替スコアリング・アルゴリズムを指定します。

次の例は、問合せがCONTEXT文法を使用し、COUNTアルゴリズムを使用して整数のスコアを戻すことを指定します。このアルゴリズムは、ドキュメント内に問合せが出現する回数としてスコアを戻します。

<query>
<textquery grammar="CONTEXT" lang="english"> mustang
</textquery>
<score datatype="INTEGER" algorithm="COUNT"/>
</query>

次の例は、normalization_expr属性を使用して、問合せで戻されたスコアにSDATA(price)を追加し、それを最終スコアとして使用します。

<query>
<textquery grammar="CONTEXT" lang="english">
DEFINESCORE(dog, RELEVANCE) and  cat
</textquery>
<score  algorithm="COUNT"  normalization_expr ="doc_score+ SDATA(price)"/>
</query>

normalization_expr属性は代替スコアリング・テンプレートでのみ使用されます。次の項目で構成される算術式です。

- 算術演算子: +、-、*、/。演算子の優先順位は、SQL演算子の優先順位と同じです。

- グループ化演算子: ()。カッコを使用すると、算術演算子の優先順位を変更できます。

- 絶対値関数: ABS(n)はnの絶対値を戻します。nは数値を戻す式です。

- 対数関数: LOG(n): nの基数10の対数値を戻します。nは数値を戻す式です。

- 事前定義済のコンポーネント: doc_score事前定義済のコンポーネントを使用すると、特定のドキュメントの最初の問合せスコアを戻すことができます。

- SDATAコンポーネント: SDATA(name)は、指定した名前をスコアとしてSDATAの値を戻します。

- NUMBERまたはDATEデータ型のSDATAのみ使用できます。これ以外のデータ型の場合はエラーが発生します。

- sdata文字列とSDATA名は、大/小文字が区別されません。

- SDATAセクションの値にNULLを使用できるため、NULL SDATAセクションの値を使用した式は、0として評価されます。たとえば、指定されたドキュメントのSDATA(price)にNULL値が含まれる場合、normalization_expr "doc_score + SDATA(price)"は0として評価されます。

- 数値リテラル: SQLのNUMBERリテラルのパターンに準拠し、倍精度浮動小数点(-3.4e38から3.4e38)の範囲内にある数値リテラルが存在します。

- 日付リテラル: 日付リテラルはDATE ()で囲む必要があります。使用できる形式は、YYYY-MM-DDまたはYYYY-MM-DD HH24:MI:SSのみです。たとえば、DATE(2005-11-08)です。
SQLと同様に、時間を指定しない場合は、00:00:00とみなされます。

normalization_expr属性は、アルゴリズム属性よりも優先されます。つまり、アルゴリズムにCOUNTが設定されていても、ユーザーがnormalization_exprを指定すると、スコアはカウントされませんが、normalization_exprに基づいて計算されます。

スコア(式はalgorithm = COUNTまたはnormalization_expr = ...)が内部的に計算されて100を超える場合、100に設定されます。

問合せ緩和テンプレートを使用すると、高い優先順位から戻されるドキュメントは常に低い優先順位から戻されるドキュメントよりも高いスコアになるので、さらにスコアが正規化されます。

DATEリテラルの制限事項

日付型データ(DATEリテラルと日付型のSDATA)の間で使用できるのは、マイナス(-)演算子のみです。他の演算子を使用するとエラーになります。2つの日付型のデータを減算すると、2つの日付の間の日数差違を表す数値(浮動)が生成されます。たとえば、次のような式を使用できます。

SDATA(dob) –  DATE(2005-11-08)

次のような式は使用できません。

SDATA(dob) +  DATE(2005-11-08)

数値データと日付型のデータ間では、プラス(+)演算子とマイナス(-)演算子を使用できます。数値オペランドは、日数または日数の端数として解釈されます。たとえば、次のような式を使用できます。

DATE(2005-11-08) + 1        = 9 NOV 2005

次のような式は使用できません。

DATE(2005-11-08)* 3          = ERROR

テンプレート属性の値

表1-4に、テンプレート属性の有効な値を示します。

表1-4 テンプレート属性の値

タグ属性

説明

有効な値

意味

grammar=

問合せの文法を指定します。

CONTEXT

CTXCAT

問合せの文法。

datatype=

スコアとして戻す数値の型を指定します。

INTEGER

FLOAT

0から100の整数としてスコアを戻します。

0から100の高精度浮動小数点数としてスコアを戻します。

algorithm=

使用するスコアリング・アルゴリズムを指定します。

DEFAULT

COUNT

デフォルトを戻します。

ドキュメント内の出現回数としてスコアを戻します。

lang=

言語の名前を指定します。

Oracle Databaseでサポートされるすべての言語。『Oracle Databaseグローバリゼーション・サポート・ガイド』を参照してください。

言語の名前。

テンプレート文法の定義

問合せテンプレートのインタフェースは、XML文書です。テンプレートの文法は、次のXML DTDを使用して定義されます。

<!ELEMENT query (textquery, score?, order?)>
<!ELEMENT textquery (#PCDATA|progression)*>
<!ELEMENT progression (seq)+>
<!ELEMENT seq (#PCDATA|rewrite)*>
<!ELEMENT rewrite (#PCDATA)>
<!ELEMENT score EMPTY>
<!ELEMENT order (orderkey+)>
<!ELEMENT orderkey (#PCDATA)>
<!ATTLIST textquery grammar (context | ctxcat) #IMPLIED>
<!ATTLIST textquery lang CDATA #IMPLIED>
<!ATTLIST score datatype (integer | float) "integer">
<!ATTLIST score algorithm (default | count) "default">

値は大/小文字が区別されず、integer | float、default | count、context |ctxcatです。

関連項目:

問合せ式の演算子の詳細は、「Oracle Text CONTAINS問合せ演算子」を参照してください。

label

オプションで、CONTAINS演算子で生成されたスコアを識別するラベルを指定します。

戻り値

CONTAINS演算子は、選択された各行に対して0から100の数値を戻し、そのドキュメントの行が問合せに対してどれだけ適合しているかを示します。0(ゼロ)は、その行に一致する検索結果がないことを示します。

注意:

この数値を取得するには、labelを付けてSCORE演算子を使用してください。

例

次の例では、oracleというワードを含むtext列のドキュメントをすべて検索します。各行のスコアは、ラベル1を使用してSCORE演算子で選択されます。

SELECT SCORE(1), title from newsindex
WHERE CONTAINS(text, 'oracle', 1) > 0;

CONTAINS演算子の後には、必ず>0という式を付けてください。これによって、CONTAINS演算子で計算されたスコア値が、選択された行では0(ゼロ)より大きくなる必要があることを指定します。

SCORE演算子を(SELECT句などで)コールする場合は、次のように、CONTAINS句がSCOREラベル値を参照するように指定します。

SELECT SCORE(1), title from newsindex
WHERE CONTAINS(text, 'oracle', 1) > 0 ORDER BY SCORE(1) DESC;

次の例では、CATSEARCH文法を使用して解析する問合せを指定します。

SELECT id FROM test WHERE CONTAINS (text,
'<query>
<textquery lang="ENGLISH" grammar="CATSEARCH">
cheap pokemon
</textquery>
<score datatype="INTEGER"/>
</query>' ) > 0;

文法テンプレートの例

次の例は、CONTAINS問合せでのCTXCAT文法の使用方法を示しています。この例では、CTXCAT索引とCONTEXT索引を同じ表に作成し、問合せ結果を比較しています。

PROMPT create context and ctxcat indexes, both using theme indexing
PROMPT
create index tdrbqcq101x on test(text) indextype is ctxsys.context
parameters ('lexer theme_lexer');

create index tdrbqcq101cx on test(text) indextype is ctxsys.ctxcat
parameters ('lexer theme_lexer');

PROMPT *****  San Diego             ***********
PROMPT *****  CONTEXT grammar       ***********
PROMPT ** should be interpreted as phrase query **
select pk||' ==> '||text from test
where contains(text,'San Diego')>0
order by pk;

PROMPT *****  San Diego      ***********
PROMPT *****  CTXCAT grammar ***********
PROMPT ** should be interpreted as AND query  ***
select pk||' ==> '||text from test
where contains(text,
'<query>
<textquery grammar="CTXCAT">San Diego</textquery>
<score datatype="integer"/>
</query>')>0
order by pk;

PROMPT *****  Hitlist from CTXCAT index ***********
select pk||' ==> '||text from test
where catsearch(text,'San Diego','')>0
order by pk;

代替スコアリング問合せテンプレートの例

次の問合せテンプレートは、price SDATAセクション(SDATAのフィルタ列)値を問合せで戻されたスコアに追加し、それを最終スコアとして使用します。

<query>
<textquery grammar="CONTEXT" lang="english">
DEFINESCORE(dog, RELEVANCE) and cat
</textquery>
<score algorithm="COUNT" normalization_expr ="doc_score+SDATA(price)"/>
</query>

問合せ緩和テンプレートの例

次の問合せテンプレートは、問合せ緩和の順序を定義します。問合せblack penは、black pen、black NEAR pen、black AND pen、black ACCUM penとして順に入力されます。アプリケーションが結果を必要とするかぎり、この順序で問合せヒット数が戻されます(重複なし)。

select id from docs where CONTAINS (text, '
<query>
<textquery lang="ENGLISH" grammar="CONTEXT">
<progression>
<seq>black pen</seq>
<seq>black NEAR pen</seq>
<seq>black AND pen</seq>
<seq>black ACCUM pen</seq>
</progression>
</textquery>
<score datatype="INTEGER" algorithm="COUNT"/>
</query>')>0;

アプリケーションが問合せの上位n個のヒット数を必要とする場合、問合せ緩和が最も効率的です。このヒット数は、DOMAIN_INDEX_SORTまたは非推奨となっているFIRST_ROWSヒントを使用して、またはPL/SQLカーソルで取得できます。

クエリー・リライト・テンプレートの例

次のテンプレートは、クエリー・リライトの順序を定義します。問合せkukui nutは次のように書き換えられます。

{kukui} {nut}

{kukui} ; {nut}

{kukui} AND {nut}

{kukui} ACCUM {nut}

select id from docs where CONTAINS (text, '
<query>
<textquery lang="ENGLISH" grammar="CONTEXT"> kukui nut
<progression>
<seq><rewrite>transform((TOKENS, "{", "}", " "))</rewrite></seq>
<seq><rewrite>transform((TOKENS, "{", "}", " ; "))</rewrite>/seq>
<seq><rewrite>transform((TOKENS, "{", "}", "AND"))</rewrite><seq/>
<seq><rewrite>transform((TOKENS, "{", "}", "ACCUM"))</rewrite><seq/>
</progression>
</textquery>
<score datatype="INTEGER" algorithm="COUNT"/>
</query>')>0;

SDATAセクション・テンプレートによる並替えの例

次の問合せテンプレートでは、 <order>要素と<orderkey>要素を使用してSDATAセクションの値を並べ替える問合せシーケンスを定義します。第1レベルの並替えはSDATAセクションのpriceに基づいて実行され、これによって昇順でソートされます。第2レベルと第3レベルの並替えはSDATAセクションのpub_dateとスコアに基づいて実行され、これによって降順でソートされます。

select id from docs where CONTAINS (text, '
<query>
<textquery lang="ENGLISH" grammar="CONTEXT"> Oracle </textquery>
<score datatype="INTEGER" algorithm="COUNT"/>
<order>
<orderkey> SDATA(price) ASC </orderkey>
<orderkey> SDATA(pub_date) DESC </orderKey>
<orderkey> Score DESC </orderkey>
</order>
</query>', 1)>0;

<orderkey>要素の値は、次の形式である必要があります。

<orderkey> SDATA(sdata_section_name) | score [DESC|ASC] </orderkey>

DESCまたはASCで指定しないデフォルトでは、ソート順は昇順です。

次の場合、<orderkey>要素は無視されます。

- Oracleのコストベース・オプティマイザ(CBO)が、SQL問合せレポートの並替えをテキスト索引にプッシュした場合

- CONTAINS()述語が関数的に処理される場合

- SQL問合せ文のORDER BY句によって、並替えがすでに指定されている場合

注意

マルチ言語表の問合せ

マルチレクサー・プリファレンスを使用して、マルチ言語表から索引を作成できます。問合せ時に、マルチレクサー・プリファレンスはセッションの言語設定を調べ、その言語に対してサブレクサー・プリファレンスを使用して問合せを解析します。言語設定がマップされていない場合は、デフォルト・レクサーが使用されます。

言語設定がマップされている場合は、問合せが解析され、通常に実行されます。索引には複数言語からのトークンが含まれているため、このような問合せはドキュメントを複数の言語で戻すことができます。

指定した言語のドキュメントのみを戻すように問合せを制限する場合は、言語列に構造化句を使用します。

パーティション索引による問合せパフォーマンスの制限

Oracle Textでは、パーティション化されたテキスト表のCONTEXT索引付けと問合せをサポートしています。

ただし、ORDER BY SCORE句を使用してパーティション表を問い合せる場合は、問合せパフォーマンスを最適化するために、パーティションを問い合せます。表全体を問い合せるためにORDER BY SCORE句を使用する場合は、問合せを1つのパーティションに制限できる範囲述語を組み込まないかぎり、最適な問合せは実行されません。

たとえば、次の文はp_tab4パーティションを直接問い合せます。

select * from part_tab partition (p_tab4) where contains(b,'oracle') > 0 ORDER BY
SCORE DESC;

CONTAINS問合せのリモート実行に関する制約

Oracle Textは、CONTAINS演算子のリモート実行をサポートしていますが、いくつかの制約があります。CONTAINS演算子を呼び出せるのは、問合せが完全にリモート・データベースで実行される場合のみです。問合せの副問合せではCONTAINS演算子を使用できません。リモート・データベースとローカル・データベースで問合せがそれぞれ部分的に実行されてしまうためです。これを実行すると、エラー「ORA-00949: リモート・データベースへの参照は無効です。」が発生します。ただし、CONTAINSを内部問合せからリモートで呼び出すと、ビューのマージが有効で、この問合せでも可能な場合には、正常に実行される場合があります。この場合は、問合せが単一の問合せに変換されるため、エラーになりません。

たとえば、次の問合せは正常です。

select id from remtab@rdb
where contains@rdb(text,'hello') > 0;

関連項目

"CONTEXT索引タイプの構文"

Oracle Text CONTAINS問合せ演算子

『Oracle Textアプリケーション開発者ガイド』のCONTEXT文法に関する項

"SCORE"

1.5 CREATE INDEX

この項では、Oracle Textドメイン索引およびコンポジット・ドメイン索引の作成に関連する部分でのCREATE INDEX文について説明します。

関連項目:

CREATE INDEX文の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

用途

CREATE INDEXを使用して、Oracle Textの索引を作成します。Oracle Textの索引は、CONTEXT、CTXCATまたはCTXRULE型のOracle Databaseドメイン索引またはコンポジット・ドメイン索引です。ドメイン索引はアプリケーション固有の索引です。コンポジット・ドメイン索引(CDI)は、指定したテキスト列に索引付けをして処理するのみでなく、索引作成時に指定されるFILTER BYおよびORDER BY構造化列も索引付けをして処理します。

CONTAINS、CATSEARCHまたはMATCHES問合せを入力するには、適切なOracle Textの索引を作成する必要があります。

索引構成表にはOracle Text索引を作成できません。

次の型のOracle Textの索引を作成できます。

CONTEXT

CONTEXT索引は、Oracle Text索引の基本タイプです。1つのテキスト列に対する索引です。CONTEXT索引は、ソース・テキストが、大規模な多数の一貫性のあるドキュメントで構成される場合に有効です。この索引は、SELECT文のWHERE句でCONTAINS演算子を使用して問い合せます。この索引は、DML操作後に手動で同期化する必要があります。「CONTEXT索引タイプの構文」を参照してください。

CTXCAT

CTXCAT索引は、1つのテキスト列と1つ以上の他の列に対する結合された索引です。CTXCATタイプは通常、カタログ内の品目名、名前、価格、説明など、小規模なドキュメントまたはテキストの断片を索引付けするために使用されます。SELECT文のWHERE句でCATSEARCH演算子を使用して、この索引を問い合せます。この型の索引は、複合問合せのために最適化されます。この索引はトランザクション型です。元表に対するDML操作によって、索引自体が自動的に更新されます。「CTXCAT索引タイプの構文」を参照してください。

CTXRULE

CTXRULE索引は、ドキュメント分類アプリケーションを作成するために使用されます。CTXRULE索引は、問合せの表、または問合せの集合を含む列に作成される索引です。問合せは、分類基準を定義するルールとして機能します。この索引は、SELECT文のWHERE句でMATCHES演算子を使用して問い合せます。「CTXRULE索引タイプの構文」を参照してください。

必要な権限

Oracle Textの索引の作成には、CTXAPPロールは不要です。テキスト列にBツリー索引を作成するOracle権限を持っていれば、そのユーザーにはテキスト索引を作成する権限があります。発行所有者、表所有者および索引所有者がすべて異なるユーザーである場合もあります。これは、通常のBツリー索引の作成時のOracle標準と一貫性があります。

CONTEXT索引タイプの構文

CONTEXT索引を使用して、テキスト列に索引を作成します。この索引は、SELECT文のWHERE句でCONTAINS演算子を使用して問い合せます。この索引は、DML操作後に手動で同期化する必要があります。

CREATE INDEX [schema.]index ON [schema.]table(txt_column)
INDEXTYPE IS ctxsys.context [ONLINE]
[FILTER BY filter_column[, filter_column]...]
[ORDER BY oby_column[desc|asc][, oby_column[desc|asc]]...]
[LOCAL [PARTITION [partition] [PARAMETERS('paramstring')]]
[, PARTITION [partition] [PARAMETERS('paramstring')]])]
[PARAMETERS(paramstring)] [PARALLEL n] [UNUSABLE]];

[schema.]index

作成するテキスト索引の名前を指定します。

[schema.]table(txt_column)

索引付けする表および列の名前を指定します。txt_columnは、CONTAINS()演算子が起動されるドメイン索引列の名前です。

CTX_DOCのプロシージャを使用して行を識別する場合は、必要に応じてその表に主キーを格納できます。表に主キーがない場合、ドキュメント・サービスでは、ROWIDによってドキュメントを識別します。

注意:

サポートされる主キーの型は、NUMBER、VARCHAR2、DATE、CHAR、VARCHARおよびRAWです。

指定する列は、CHAR、VARCHAR、VARCHAR2、BLOB、CLOB、BFILE、XMLTypeまたはURITypeのうちいずれかの型であることが必要です。

パーティション表を指定できます。LOCAL句を指定しない場合は、グローバルの非パーティション索引が作成されます。

DATE列、NUMBER列およびNESTED TABLE列は、索引付けできません。また、Object列にも索引付けできませんが、属性が基本データ型であれば、Object列の属性に索引付けできます。

仮想プライベート・データベース(VPD)保護表で索引を作成しようとすると、次のいずれかの基準に該当しないかぎり失敗します。

- VPDポリシーが作成され、INDEX文タイプに適用されない場合

- ポリシー関数が現在のユーザーに対してNULL条件を戻す場合

- ユーザー(索引所有者)がSYSの場合

- ユーザーにEXEMPT ACCESS POLICY権限がある場合

CONTEXT索引タイプでは、複数列に対する索引はサポートされていません。列リスト内の1つの列のみを指定する必要があります。

注意:

CTXCAT索引タイプを使用すると、テキスト列と構造化列の索引を作成できます。「CTXCAT索引タイプの構文」を参照してください。

注意:

透過的なデータ暗号化の可能な列ではドメイン索引はサポートされないため、Oracle Textで使用することはできません。ただし、透過的なデータ暗号化に対応する表領域に格納されている表の列に対しては、Oracle Text索引を作成することができます。

ONLINE

索引の作成時に、元表に対するDML挿入/更新/削除を実行できます。

索引付け中、DML要求は保留キューにエンキューされます。索引の作成が完了すると、元表はロックされます。その間、DMLはブロックされています。DML変更を有効にするには、索引を同期化する必要があります。

制限事項

ONLINEを使用する場合は、次の制限事項が適用されます。

- ONLINEプロセスの最初または最後に、DMLが失敗する可能性があります。

- ONLINEがサポートされているのは、CONTEXT索引のみです。

FILTER BY filter_column

複合問合せのWHERE句の範囲述語または等価述語の対象となる、構造化された索引列です。filter_columnに対して1つ以上の構造化列を指定できます。この列に対して、問合せでCONTAINS()述語とともに関係述語を指定できます。

コストベース・オプティマイザ(CBO)は、これらのFILTER BY列の構造化述語を、関係演算子(<、<=、=、>=、>、betweenおよびLIKE(VARCHAR2の場合))とともにプッシュ・ダウンしようとします。

これらの列に使用できる型は、CHAR、NUMBER、DATE、VARCHAR2またはRAWのみです。また、最大長が249以内に指定されている場合、サポートされる型はVARCHAR2とRAWのみです。サポートされている型(CHAR、NUMBER、DATE、VARCHAR2またはRAW)のADT属性も使用できます。これ以外のデータ型の場合はエラーが発生します。たとえば、式func(cola)および仮想列は使用できません。

FILTER BY列リストでtxt_columnを使用できます。

FILTER BY列のDML操作は常にトランザクション型です。

ORDER BY oby_column

構造化ORDER BY複合問合せの基準となる構造化された索引列です。構造化されたoby_columnのリストを、CONTAINS()問合せのORDER BY句に指定できます。

これらの列に使用できる型は、CHAR、NUMBER、DATE、VARCHAR2またはRAWのみです。また、最大長が249以内に指定されている場合、サポートされる型はVARCHAR2とRAWのみです。たとえば、式func(cola)および仮想列は使用できません。

指定した列の順序が重要です。コストベース・オプティマイザ(CBO)は、テキスト問合せのORDER BY句に次の項目のいずれかが含まれている場合にのみ、コンポジット・ドメイン索引にsortをプッシュしようとします。

- CREATE INDEX文のORDER BY句によって宣言されるORDER BY列を並べ替えた全体

- CREATE INDEX文のORDER BY句によって宣言されるORDER BY列を並べ替えた接頭辞のみ

- CREATEINDEX文の実行時にORDERBY句によって宣言され順序付けされたORDERBY列のプリフィックスが後に続くscore

- CREATE INDEX文のORDER BY句によって宣言されるORDER BY列を並べ替えた接頭辞に続くスコア

次の例では、ORDERのBY列に関して、コストベース・オプティマイザ(CBO)の動作を示しています。

CREATE INDEX foox ON foo(D) INDEXTYPE IS CTXSYS.CONTEXT
FILTER BY B, C
ORDER BY A, B desc;

次の問合せについて考えてみます。

SELECT A, SCORE(1) FROM foo WHERE CONTAINS(D, 'oracle',1)>0
AND C>100 ORDER BY col_list;

注意:

NLS_SORTまたはNLS_COMPパラメータ(つまり、alter session set NLS_SORT = <some lang>;)を設定している場合、CBOはsortまたは関連構造化述語をCDIにプッシュしません。この動作は、通常のBツリー索引と一貫性があります。

col_listに次の値がある場合、コストベース・オプティマイザ(CBO)は、コンポジット・ドメイン索引(CDI)に対するソートをプッシュしようとします。

A
A,B
SCORE(1), A
SCORE(1), A, B
A, SCORE(1)
A, B, SCORE(1)

CBOは、col_listが次のような値の場合、CDIにsortをプッシュしようとしません。

B
B,A
SCORE(1), B
B, SCORE(1)
A, B, C
A, B asc

(またはA, B)

- CREATE INDEX文のORDER BY句によって宣言され並べ替えられたORDER BY列の接頭辞が続くSCORE

- CREATE INDEX文のORDER BY句によって宣言され並べ替えられたORDER BY列の接頭辞に続くSCORE

たとえば、式func(cola)は使用できません。

ORDER BY列リストでtxt_columnを使用できます。

ORDER BY列のDML操作は常にトランザクション型です。

制限事項

FILTER BYおよびORDER BYを使用する場合は、次の制限事項が適用されます。

- FILTER BY句およびORDER BY句では、構造化列を使用できます。ただし、FILTER BY句のMDATAにマップされている列を、ORDER BY句でも使用することはできません。この場合はエラーが発生します。

- CHAR、VARCHAR2およびRAW列の最大長は249以内です。また、VARCHAR2またはRAW列がMDATA列にマップされている場合、指定可能な最大長はそれぞれ64バイトと32バイトです。(MDATAではCHARデータ型がサポートされていないことに注意してください。CHARデータ型のFILTER BY列がMDATAセクションにマップされている場合は、CREATE INDEX時にエラーが発生します。)

- INDEXED_COLUMN、FILTER BY列およびORDER BY列の合計数は99以内です。

注意:

- 連結されたBツリー索引またはビットマップ索引の場合と同様に、FILTER BY列およびORDER BY列の数が増加すると、DMLのパフォーマンスが低下する可能性があります。

- FILTER BY列のMDATAへのマッピングは、FILTER BY列にシーケンシャル値が含まれている場合、またはカーディナリティが非常に高い場合はお薦めしません。このようなマッピングは、非常に時間がかかり、$I表の範囲が限定され、$Xのパフォーマンスが低下する可能性があります。この例には、DATE型の列があります。この型の列については、SDATAへのマッピングをお薦めします。

注意:

SDATAセクションにマップされるFILTER BY列およびORDER BY列を格納するために、DR$indextable$Sという名前の索引表が作成されます。SDATAセクションに何もマップされない場合、$S表は作成されません。

$S表に含まれる列は、次のとおりです。

- SDATA_ID number。内部SDATAセクションID。

- SDATA_LAST number。最後のドキュメントID。token_lastと同じです。

- SDATA_DATA RAW(2000)。圧縮されたSDATA値。データベース・ブロック・サイズが4Kの表領域に$Sが作成される場合は、RAW(1500)で定義されます。

制限事項: パフォーマンス上の理由から、$S表は、データベース・ブロック・サイズが4KB以上の表領域に、オーバーフロー・セグメントとPCTTHRESHOLD句を指定せずに作成する必要があります。$Sをデータベース・ブロック・サイズが4KB未満の表領域に作成するか、オーバーフロー・セグメントまたはPCTTHRESHOLD句を指定して作成した場合は、CREATE INDEX文の実行時にエラーが発生します。

FILTER BY句またはORDER BY句(あるいはその両方)を指定してコンポジット・ドメイン索引が作成されているテキスト表のエクスポートとインポートに関する制限事項は、次のとおりです。

- 通常のexpおよびimpでは、コンポジット・ドメイン索引のエクスポートおよびインポートはサポートされません。実行を試行すると、「EXP-00113: 機能コンポジット・ドメイン索引はサポートされていません。」というエラーが発生します。

- コンポジット・ドメイン索引が作成されているテキスト表をエクスポートするには、データ・ポンプ・エクスポートおよびインポート・ユーティリティ(それぞれexpdpおよびimpdpコマンドで起動)、またはDBMS_DATAPUMP PL/SQLパッケージを使用する必要があります。

関連項目:

「CTX_DDLパッケージ」のADD_SDATA_COLUMN

コンポジット・ドメイン索引のFILTER BY列およびORDER BY列でのALTER INDEXとALTER TABLEの使用に関する制限事項(Oracle Databaseの拡張索引作成機能フレームワークによって適用):

(これらの制限事項は、Oracle Databaseの拡張索引作成機能フレームワークによって適用されます。)

- ALTER INDEXを使用したFILTER BYおよびORDER BY列の追加または削除は、現在サポートされていません。FILTER BY列またはORDER BY列を追加または削除するには、索引を再作成する必要があります。

- ALTER TABLE MODIFY COLUMNを使用して、コンポジット・ドメイン索引が作成されている列のデータ型を変更する場合は、列の変更前にコンポジット・ドメイン索引を削除する必要があります。

- ALTER TABLE DROP COLUMNを使用してコンポジット・ドメイン索引の一部である列を削除するには、索引列の削除前にコンポジット・ドメイン索引を削除する必要があります。

PL/SQLパッケージでFILTER BYおよびORDER BYを使用する場合は、次の制限事項が適用されます。

- FILTER BY列のセクションへのマッピングはオプションです。FILTER BY列にセクション・マッピングが存在しない場合は、デフォルトでSDATAセクションにマップされます。セクション名は、FILTER BY列の名前になります。

- コンポジット・ドメイン索引のCREATE INDEX句の実行時にセクション・グループを指定しない場合は、デフォルトのセクション・グループ設定が使用されます。FILTER BY列およびORDER BY列ごとに、1つのSDATAセクションが作成されます。

注意:

セクション名では特定の特殊文字が使用できず、大/小文字が区別されないため、列名で大/小文字が区別されているかまたは特殊文字が使用されている場合は、エラーが発生します。この問題を回避するには、索引を作成する前に、列をMDATAまたはSDATAセクションにマップする必要があります。「CTX_DDL.ADD_MDATA_COLUMN」または「CTX_DDL.ADD_SDATA_COLUMN」を参照してください。

- MDATAセクションにマップされている列がORDER BY列句でも使用されている場合は、エラーが発生します。

- 列セクション名は、セクション・グループ内で一意です。つまり、FOOというMDATA列セクションがすでにある場合、MDATA列セクション名にFOOを指定することはできません。同様に、FOOというSDATA列セクションがすでにある場合、フィールド・セクションにFOOを使用することはできません。このルールは、列セクションの作成方法が暗黙的(FILTER BYまたはORDER BY句のCREATE INDEXで作成)か、明示的(CTX_DDL.ADD_SDATA_COLUMNで作成)かに関係なく適用されます。

- 1つのFILTER BY列にマップできるのは1つのセクション名のみで、その逆もまた同様です。1つのセクションを複数の列にマップしたり、1つの列を複数のセクションにマップすることはできません。

- 列セクションは、NULLのセクション・グループも含めて、あらゆるタイプのセクション・グループに追加できます。

- CTX_DDL.ADD_MDATA_COLUMNまたはCTX_DDL.ADD_SDATA_COLUMNパッケージによって追加されたセクションがあるセクション・グループが、FILTER BY句のないCREATE INDEX文に指定されている場合、マップされた列セクションは無視されます。ただし、これらの列セクションなしでも索引は作成されます。これは、マップされた列が指定したセクション・グループに含まれていないFILTER BY句の場合も同じです。

関連項目:

「CTX_DDL.ADD_SDATA_COLUMN」

LOCAL [PARTITION [partition] [PARAMETERS('paramstring')]

パーティション表にローカル・パーティションCONTEXT索引を指定します。パーティション表は、レンジ・パーティション化する必要があります。ハッシュ・パーティション、コンポジット・パーティションおよびリスト・パーティションは、サポートされていません。

索引パーティション名のリストは、partition_nameで指定できます。パーティション名を指定しない場合は、システムによって割り当てられます。索引パーティション・リストの順序は、表パーティションの順序に対応している必要があります。

各パーティションに関連付けられたPARAMETERS句によって、そのパーティション固有のパラメータ文字列が指定されます。各索引パーティションのsync (manual|every |on commit)、memoryおよびstorageのみを指定することもできます。

PARAMETERS句では、POPULATEおよびNOPOPULATE引数もサポートされます。See ""POPULATE | NOPOPULATE"".

索引パーティション名、索引パーティション・ステータスなどの索引パーティション情報を検索するには、ビューCTX_INDEX_PARTITIONSまたはCTX_USER_INDEX_PARTITIONSを問い合せます。

関連項目:

"「ローカル・パーティション索引の作成」"

パーティション索引による問合せパフォーマンスの制限

ORDER BY SCORE句を使用してパーティション索引を問い合せる場合は、問合せパフォーマンスを最適化するために、パーティションを問い合せます。表全体を問い合せるためにORDER BY SCORE句を使用する場合は、問合せを1つのパーティションに制限できる範囲述語を組み込まないかぎり、最適な問合せは実行されません。

関連項目:

"「パーティション索引による問合せパフォーマンスの制限」"

PARALLEL n

オプションで、パラレル索引付けに対する並列度を指定します。実際の並列度は、リソースによっては多少低くなります。このパラメータは、非パーティション表に使用できます。ただし、パラレルで作成された非パーティション索引の場合、パラレル問合せ処理は実行されません。ローカル・パーティション索引を作成するために、パラレル索引付けがサポートされるようになりました。

パラメータ句に指定される索引付けのメモリー・サイズは、各パラレル・スレーブに適用されます。たとえば、パラメータ句に指定された索引付けのメモリー・サイズが500MBで、並列度が2の場合は、索引付けのための少なくとも1GBのメモリーを使用できるようにする必要があります。

関連項目:

- "パラレル索引付け"

- "「ローカル・パーティション索引のパラレルでの作成」"

- 『Oracle Textアプリケーション開発者ガイド』の「パフォーマンス・チューニング」

パフォーマンス

パラレル索引付けによって、索引付けするデータが大量にある場合およびオペレーティング・システムが複数のCPUをサポートしている場合は、索引付けを高速化できます。

注意:

ローカル・パーティション索引の作成にPARALLELを使用すると、パラレル問合せを実行できます。(非パーティション索引をパラレルに作成しても、問合せはパラレルに処理されません。)

パラレル問合せは、特に負荷の大きいシステムに対して実行すると、問合せのスループットが低下します。このため、ローカル索引の作成後に、パラレル問合せを使用禁止にすることをお薦めします。使用禁止にするには、ALTER INDEX NOPARALLEL文を使用します。

パラレル問合せの詳細は、『Oracle Textアプリケーション開発者ガイド』の「パフォーマンス・チューニング」を参照してください。

制限事項

パラレル索引付けがサポートされているのは、CONTEXT索引タイプのみです。

UNUSABLE

UNUSABLEの索引を作成します。このパラメータによって、索引メタデータのみが作成され、即時に終了します。

UNUSABLEの索引は、ローカル・パーティション索引をパラレルで作成する必要がある場合に作成します。

関連項目:

"「ローカル・パーティション索引のパラレルでの作成」"

PARAMETERS(paramstring)

オプションで、paramstringに索引付けパラメータを指定します。user.preference表記法を使用して、他のユーザーが所有するプリファレンスを指定できます。

paramstringの構文は、次のとおりです。

paramstring =
'[DATASTORE datastore_pref]
[FILTER filter_pref]
[CHARSET COLUMN charset_column_name]
[FORMAT COLUMN format_column_name]
[SAVE_COPY COLUMN save_copy_column_name]

[LEXER lexer_pref]
[LANGUAGE COLUMN language_column_name]

[WORDLIST wordlist_pref]
[STORAGE storage_pref]
[STOPLIST stoplist]
[SECTION GROUP section_group]
[MEMORY memsize]
[POPULATE | NOPOPULATE]
[SYNC (MANUAL | EVERY "interval-string" | ON COMMIT)]
[TRANSACTIONAL]'

CTX_DDL.CREATE_PREFERENCE でデータストア、フィルタ、レクサー、ワードリストおよび記憶域プリファレンスを作成します。作成後、それらをparamstringに指定します。

注意:

paramstringを指定しない場合は、システムのデフォルト値が使用されます。

これらのデフォルト値の詳細は、「デフォルトの索引付けパラメータ」を参照してください。

DATASTORE datastore_pref

データストア・プリファレンスの名前を指定します。データストア・プリファレンスを使用して、テキストの格納場所を指定します。「データストア型」 を参照してください。

FILTER filter_pref

フィルタ・プリファレンスの名前を指定します。フィルタ・プリファレンスを使用して、書式化されたドキュメントのフィルタ処理方法をプレーン・テキストまたはHTMLに指定します。「フィルタ型」を参照してください。

CHARSET COLUMN charset_column_name

キャラクタ・セット列の名前を指定します。キャラクタ・セット列は、テキスト列と同じ表内にある必要があり、CHAR、VARCHARまたはVARCHAR2型である必要があります。この列を使用して、データベースのキャラクタ・セットに変換するドキュメントのキャラクタ・セットを指定します。この値には大/小文字区別はありません。JA16EUCなどのグローバリゼーション・サポート・キャラクタ・セット文字列を指定する必要があります。

ドキュメントがプレーン・テキストまたはHTMLである場合、AUTO_FILTERおよびCHARSETフィルタはこの列を使用して、索引付けのためにドキュメントのキャラクタ・セットをデータベースのキャラクタ・セットに変換します。

プレーン・テキストまたはHTMLドキュメントが、異なる複数のキャラクタ・セットを持つ、またはデータベースのキャラクタ・セットとは異なるキャラクタ・セットである場合は、この列を使用してください。

NLS_LENGTH_SEMANTICSパラメータのCHAR設定はデータベース・レベルではサポートされていません。このパラメータは、次の列に対してサポートされます。

- CHARSET COLUMN。次に例を示します。

VARCHAR2 <size> CHAR
CHAR <size> CHAR

- VARCHAR2およびCHAR列で作成される索引

- CREATE INDEXのFILTER BY句およびORDER BY句に対するVARCHAR2およびCHAR列

- FORMAT COLUMN

注意:

- キャラクタ・セット列のみが変更された場合、ドキュメントは再索引付け用にマークされません。索引付けされた列が再索引付けにフラグされるには、その列を更新する必要があります。

- NLS_LENGTH_SEMANTICS = CHARパラメータは、この項で説明したように、列レベルでのみサポートされ、データベース・レベルではサポートされません。

FORMAT COLUMN format_column_name

フォーマット列の名前を指定します。フォーマット列は、テキスト列と同じ表内にある必要があり、CHAR、VARCHARまたはVARCHAR2型である必要があります。

FORMAT COLUMNにより、ドキュメントのフィルタ処理の方法、あるいはIGNORE値の場合は、索引付けされるかどうかが決定されます。

AUTO_FILTERは、ドキュメントのフィルタ時にフォーマット列を使用します。プレーン・テキストまたはHTMLドキュメントに対するフィルタ処理をオプションでバイパスするために、この列を異機種間ドキュメント・セットとともに使用してください。

フォーマット列には、次のオプションのいずれかを指定できます。

- TEXT

- BINARY

- IGNORE

TEXTオプションは、ドキュメントがプレーン・テキストまたはHTMLのいずれかであることを示します。TEXTを指定すると、ドキュメントはフィルタされませんが、キャラクタ・セットが変換される場合があります。

BINARYオプションは、ドキュメントがPDFのような、プレーン・テキストまたはHTML以外のAUTO_FILTERオブジェクトがサポートする形式であることを示します。フォーマット列のエントリをマップできない場合は、BINARYがデフォルトです。

IGNOREオプションは、索引付けの実行時に行が無視されることを示します。テキストへの索引付けで互換性のないイメージ・データなどのデータが含まれた行、または処理しない言語の行をバイパスするには、この値を使用します。フォーマット列タイプがTEXTのドキュメントとIGNOREのドキュメントとの相違は、前者が索引付けされてもフィルタには無視されるのに対し、後者はまったく索引付けされない点です。したがって、IGNOREはどのフィルタ・タイプにも使用できます。

注意:

フォーマット列のみが変更された場合、ドキュメントは再索引付け用にマークされません。索引付けされた列が再索引付けにフラグされるには、その列を更新する必要があります。

SAVE_COPY COLUMN save_copy_column_name

検索操作で$D索引表にドキュメントのコピーを保存するかどうかのプリファレンスを含む列の名前を指定します。

SAVE_COPY列に指定できるオプションは、PLAINTEXT、FILTERED、NONEの3つのいずれかです。

PLAINTEXTオプションでは、ドキュメントをプレーン・テキストとして$D索引表に格納することを指定します。SNIPPETプロシージャを使用するには、この値を指定する必要があります。

FILTEREDオプションでは、ドキュメントを$D索引表に格納する前に、そのドキュメントに存在するテキストにフィルタ・プリファレンスを適用することを指定します。MARKUPプロシージャまたはHIGHLIGHTプロシージャを使用するときは、この値を指定します。

NONEオプションでは、ドキュメントを$D索引表に格納しないことを指定します。次の場合には、この値を指定します。

- SNIPPET、MARKUPまたはHIGHLIGHTプロシージャを使用しない場合

- 索引付けされた列がVARCHAR2またはCLOBの場合

LEXER lexer_pref

レクサー・プリファレンスまたはマルチレクサー・プリファレンスの名前を指定します。レクサー・プリファレンスを使用して、テキストの言語およびテキストを索引付け用にトークン化する方法を識別します。「レクサー型」を参照してください。

LANGUAGE COLUMN language_column_name

マルチレクサー・プリファレンスを使用する場合は、言語列の名前を指定します。「MULTI_LEXER」を参照してください。

この列は、元表内にある必要があります。この列は、索引付けされた列とは別の列である必要があります。言語列の最初の30バイトのみが、言語を識別するために調べられます。

注意:

言語列のみが変更された場合、ドキュメントは再索引付け用にマークされません。索引付けされた列が再索引付けにフラグされるには、その列を更新する必要があります。

WORDLIST wordlist_pref

ワードリスト・プリファレンスの名前を指定します。ワードリスト・プリファレンスを使用して、ファジー、ステミングおよびプリフィックス索引付けなどの機能を有効化すると、ワイルド・カード検索のパフォーマンスが向上します。「ワードリスト型」を参照してください。

STORAGE storage_pref

テキスト索引用の記憶域プリファレンスの名前を指定します。記憶域プリファレンスを使用して、索引表の格納方法を指定します。「記憶域型」を参照してください。

STOPLIST stoplist

ストップリストの名前を指定します。ストップリストを使用して、索引付けの対象でないワードを識別します。「CTX_DDL.CREATE_STOPLIST 」を参照してください。

SECTION GROUP section_group

セクション・グループの名前を指定します。セクション・グループを使用して、構造化ドキュメントに検索可能なセクションを作成します。「CTX_DDL.CREATE_SECTION_GROUP 」を参照してください。

MEMORY memsize

索引付けに使用するランタイム・メモリー量を指定します。memsizeの構文は、次のとおりです。

memsize = number[K|M|G]

KはKB、MはMB、GはGBを表します。

memsizeの値は、1MBからCTX_PARAMETERSビューのMAX_INDEX_MEMORYの値までの間で指定する必要があります。MAX_INDEX_MEMORYの値より大きいメモリー・サイズを指定する場合は、CTX_ADM.SET_PARAMETERによってこのパラメータをmemsize以上に再設定する必要があります。

デフォルトは、CTX_PARAMETERSのDEFAULT_INDEX_MEMORYに指定された値です。

memsizeパラメータは、索引付けに使用するメモリー量を指定します。使用量が指定値を超えると、索引がディスクにフラッシュされます。大きいメモリー量を指定すると、I/Oが削減されるため索引付けのパフォーマンスが向上します。また、断片化も削減されるため問合せのパフォーマンスおよびメンテナンスが向上します。

小さいメモリー量を指定すると、ディスクI/Oおよび索引の断片化が増加しますが、ランタイム・メモリーが不足している場合に有効なことがあります。

POPULATE | NOPOPULATE

索引を空にするか移入するかを指定します。デフォルトはPOPULATEです。

注意:

POPULATE | NOPOPULATEオプションのみ、デフォルト値をCTX_ADM.SET_PARAMETERで設定できません。

空の索引は、元表を更新または元表に挿入することで移入されます。索引を追加的に作成したり、元表内のドキュメントを選択的に索引付けするときに、空の索引の作成が必要な場合があります。空の索引は、ドキュメント・セットからテーマおよび要点の出力のみを必要とする場合にも作成します。

SYNC (MANUAL | EVERY "interval-string" | ON COMMIT)

元表に対する挿入、更新または削除がある場合は、CONTEXT索引の自動同期化を行うためにSYNCを指定します。次のSYNCメソッドのいずれかを指定できます。

表1-5 SYNCタイプ

SYNCタイプ

説明

MANUAL

自動同期化は行われません。これはデフォルトです。CTX_DDL.SYNC_INDEXを使用して、索引を手動で同期化する必要があります。

EVERY "interval-string"

スケジューラ・ジョブの場合と同じ構文をとるinterval-stringの値で指定された一定の間隔で、索引を自動的に同期化します。EVERYを使用した自動同期化の場合、索引作成者にCREATE JOB権限が必要です。

interval-stringが、前の同期化ジョブを完了するのに十分な長さの期間に設定されていることを確認してください。長さが十分でないと、同期化ジョブがハングする可能性があります。interval-stringは、二重引用符で囲む必要があります。interval-string内の一重引用符は、別の一重引用符をエスケープ文字で指定する必要があります。

自動同期化構文の例は、「自動索引同期化の有効化」を参照してください。

ON COMMIT

コミット・トランザクションの直後に索引を同期化します。コミット・トランザクションは、同期化が完了するまで戻りません。(同期化は個別のトランザクションとして実行されるため、データがコミットされて索引変更がコミットされない場合でも、ある程度の時間(通常は短い)がかかります。)

この操作は、memoryパラメータで指定されたメモリーを使用します。

同期化操作には、独自のトランザクション・コンテキストがあります。この操作が失敗しても、データ・トランザクションはコミットされます。CTX_USER_INDEX_ERRORSビューに、索引同期化エラーが記録されます。「索引エラーの表示」を参照してください。

ON COMMIT構文の例は、「自動索引同期化の有効化」を参照してください。

ローカル・パーティション索引の各パーティションには、SYNCの独自のタイプ(ON COMMIT、EVERYまたはMANUAL)が設定されます。マスター・パラメータ文字列に指定されたSYNCのタイプは、パーティションが独自のタイプを指定した場合を除いて、すべての索引パーティションに適用されます。

自動(EVERY)同期化の場合、ユーザーは、メモリー・サイズおよびパラレル同期化を指定できます。構文は次のとおりです。

... EVERY interval_string MEMORY mem_size PARALLEL paradegree ...

ON COMMIT同期化は、シリアルでのみ実行され、索引作成時に指定されたサイズと同じメモリー・サイズを使用する必要があります。

関連項目:

ジョブ・スケジューリングの詳細は、『Oracle Database管理者ガイド』を参照してください。

TRANSACTIONAL

ドキュメントが挿入または更新された直後にドキュメントを検索するように指定します。TRANSACTIONALを有効にしてテキスト索引を作成する場合、索引内のすでに同期化されたROWIDを処理する以外に、CONTAINS演算子は、非同期化されたROWIDも処理します。Oracle Textでは非同期ROWIDのインメモリー索引付けが実行され、インメモリー索引に対する問合せが処理されます。

TRANSACTIONALは索引レベル・パラメータのため、パーティション・レベルでは適用されません。

(CTX_DDL.SYNC_INDEXを使用して)テキスト索引を適宜同期化し、保留中のROWIDを索引に取り込む必要があります。非同期ROWIDの数が増えると、問合せのパフォーマンスが低下します。そのため、EVERYまたはON COMMITパラメータとともに自動同期化を使用するように索引を設定することをお薦めします。(""SYNC (MANUAL | EVERY "interval-string" | ON COMMIT)""を参照してください。)

TRANSACTIONALパラメータを使用して作成された索引に対するトランザクション問合せは、PL/SQL変数CTX_QUERY.disable_transactional_queryを使用してオンまたはオフにできます(ユーザー・セッションの継続時間中)。これは、たとえば、保留中のROWIDが多すぎるために問合せに時間がかかる場合に便利です。次に、このセッション変数を設定する例を示します。

exec ctx_query.disable_transactional_query := TRUE;

索引がAUTO_FILTERを使用する場合、非同期ROWIDを含む問合せでは、同期化されていないドキュメントをフィルタ処理する必要があります。

CREATE INDEX: CONTEXT索引の例

次の項では、CONTEXT索引の作成例を示します。

デフォルトのプリファレンスを使用したCONTEXT索引の作成

次の例では、mytable内のdocs列に、myindexというCONTEXT索引を作成します。デフォルトのプリファレンスが使用されます。

CREATE INDEX myindex ON mytable(docs) INDEXTYPE IS ctxsys.context;

関連項目:

- 『Oracle Textアプリケーション開発者ガイド』

- このデフォルト設定の詳細は、「デフォルトの索引付けパラメータ」を参照してください"

カスタム・プリファレンスを使用したCONTEXT索引の作成

次の例では、mytable内のdocs列に、myindexというCONTEXT索引を作成します。索引は、my_lexerというカスタム・レクサー・プリファレンスおよびmy_stopというカスタム・ストップリストで作成されます。

また、この例では、プリファレンスおよびストップリストは、my_lexerがCTX_DDL.CREATE_PREFERENCE で、my_stopがCTX_DDL.CREATE_STOPLIST で作成されていることを前提としています。未指定のプリファレンスに対しては、デフォルトのプリファレンスが使用されます。

CREATE INDEX myindex ON mytable(docs) INDEXTYPE IS ctxsys.context
PARAMETERS('LEXER my_lexer STOPLIST my_stop');

すべてのユーザーが、あらゆるプリファレンスを使用できます。他のユーザーのスキーマにあるプリファレンスを指定するには、そのユーザー名をプリファレンス名に追加します。次の例では、プリファレンスmy_lexerおよびmy_stopが、ユーザーkennyのスキーマ内にあることを前提としています。

CREATE INDEX myindex ON mytable(docs) INDEXTYPE IS ctxsys.context
PARAMETERS('LEXER kenny.my_lexer STOPLIST kenny.my_stop');

自動索引同期化の有効化

索引を作成し、元表に対する挿入、更新および削除にあわせて一定の間隔で索引を同期化するように指定できます。それには、SYNC (EVERY "interval-string")パラメータを使用して索引を作成します。

ジョブ・スケジューリングを使用するには、DBA権限を持つユーザーとしてログインし、CREATE JOB権限を付与する必要があります。

次の例では、索引を作成して、3つの索引パーティションに対して3つの同期化ジョブをスケジュールします。最初のパーティションは、ON COMMIT同期化を使用します。残りの2つのパーティションは、毎週月曜日の午後3時に実行するようにスケジュールされたジョブによって同期化されます。

CONNECT system/password
GRANT CREATE JOB TO dr_test

CREATE INDEX tdrmauto02x ON tdrmauto02(text)
INDEXTYPE IS CTXSYS.CONTEXT local
(PARTITION tdrm02x_i1 PARAMETERS('
MEMORY 20m SYNC(ON COMMIT)'),
PARTITION tdrm02x_i2,
PARTITION tdrm02x_i3)  PARAMETERS('
SYNC (EVERY "NEXT_DAY(TRUNC(SYSDATE), ''MONDAY'') + 15/24")
');

ジョブ・スケジューリング構文の詳細は、『Oracle Database管理者ガイド』を参照してください。

マルチレクサー・プリファレンスを使用したCONTEXT索引の作成

マルチレクサー・プリファレンスは、各行にどのレクサーを使用するかを、言語列に基づいて決定します。これは、テキスト列内のドキュメントの言語識別名を格納する文字の列です。たとえば、異なる複数の言語のドキュメントを持つglobaldoc表を、次のように作成するとします。

CREATE TABLE globaldoc (
doc_id NUMBER PRIMARY KEY,
lang VARCHAR2(10),
text CLOB
);

作成したマルチレクサー・プリファレンスが、global_lexerであるとします。global_doc表を索引付けするには、マルチレクサー・プリファレンスおよび言語列の名前を次のように指定します。

CREATE INDEX globalx ON globaldoc(text) INDEXTYPE IS ctxsys.context PARAMETERS
('LEXER global_lexer LANGUAGE COLUMN lang');

関連項目:

マルチレクサー・プリファレンスの作成の詳細は、「MULTI_LEXER」を参照してください。

ローカル・パーティション索引の作成

次の例では、3つにパーティション化されたテキスト表を作成し、それを移入した後、パーティション索引を作成します。

PROMPT create partitioned table and populate it

CREATE TABLE part_tab (a int, b varchar2(40)) PARTITION BY RANGE(a)
(partition p_tab1 values less than (10),
partition p_tab2 values less than (20),
partition p_tab3 values less than (30));

PROMPT create partitioned index
CREATE INDEX part_idx on part_tab(b) INDEXTYPE IS CTXSYS.CONTEXT
LOCAL (partition p_idx1, partition p_idx2, partition p_idx3);

注意:

Oracle Textのパーティション数の制限は、Oracle Databaseの表ごとの最大パーティション数と同じです。

FILTER BYおよびORDER BY句の使用

次の例では、docsという表に索引を作成し、作成者の公開日でドキュメントを順序付けします。

最初に、表を作成します。

CREATE TABLE docs (
docid    NUMBER,
pub_date DATE,
author   VARCHAR2(30),
category VARCHAR2(30),
document CLOB
);

FILTER BY句およびORDER BY句を指定して索引を作成します。

CREATE INDEX doc_idx on docs(document) indextype is ctxsys.context
FILTER BY category, author
ORDER BY pub_date desc, docid
PARAMETERS ('memory 500M');

パラレル索引付け

複数のCPUがある場合、パラレル索引付けにより、索引のパフォーマンスが向上します。

索引をパラレルに作成するには、並列度を使用してPARALLEL句を使用します。この例では、並列度3を使用します。

CREATE INDEX myindex ON mytab(pk) INDEXTYPE IS ctxsys.context PARALLEL 3;

ローカル・パーティション索引のパラレルでの作成

複数のCPUがある場合、ローカル・パーティション索引をパラレルに作成することでパフォーマンスが向上します。パーティション表を使用すると、作業を分割できます。ローカル・パーティション索引をパラレルで作成するには、次の2つの方法があります。

- CREATE INDEX文でPARALLEL句とLOCAL句を使用します。この場合、最大並列度は、使用するパーティション数に制限されます。「CREATE INDEXの並列性」を参照してください。

- UNUSABLEの索引を作成してから、DBMS_PCLXUTIL.BUILD_PART_INDEXユーティリティを実行します。この方法により、特にパーティションより多くのCPUを使用している場合に、並列性が高くなります。「DBMS_PCLUTIL.BUILD_PART_INDEXの並列性」を参照してください。

ローカル・パーティション索引をパラレルで作成しようとすると失敗し、次のエラー・メッセージが表示される場合があります。

ORA-29953: error in the execution of the ODCIIndexCreate routine for one or more
of the index partitions

索引の作成に失敗した具体的な理由を判断するには、CTX_USER_INDEX_ERRORSビューを問い合せます。

CREATE INDEXの並列性

CREATE INDEX文でPARALLEL句とLOCAL句を使用することで、ローカル索引並列性を実現できます。この場合、最大並列度は、使用するパーティション数に制限されます。

次の例では、3つのパーティションを持つ表を作成し、それを移入した後、並列度2のローカル索引を作成します。

create table part_tab3(id number primary key, text varchar2(100))
partition by range(id)
(partition p1 values less than (1000),
partition p2 values less than (2000),
partition p3 values less than (3000));

begin
for i in 0..2999
loop
insert into part_tab3 values (i,'oracle');
end loop;
end;
/

create index part_tab3x on part_tab3(text)
indextype is ctxsys.context local (partition part_tabx1,
partition part_tabx2,
partition part_tabx3)
parallel 2;

DBMS_PCLUTIL.BUILD_PART_INDEXの並列性

UNUSABLEのCONTEXT索引を作成してから、DBMS_PCLUTIL.BUILD_PART_INDEXユーティリティを実行することで、ローカル索引並列性を実現できます。この方法により、特にパーティションより多くのCPUを使用している場合に、並列性が高くなります。

この例の元表には3つのパーティションがあります。最初にローカル・パーティションのUNUSABLEの索引を作成してから、DBMS_PCLUTIL.BUILD_PART_INDEXを実行すると、3つのパーティションがパラレルに作成されます(パーティション間並列性と呼びます)。また、各パーティション内の索引も、並列度2でパラレルに作成されます(パーティション内並列性と呼びます)。したがって、並列度の合計は6(3の2倍)になります。

create table part_tab3(id number primary key, text varchar2(100))
partition by range(id)
(partition p1 values less than (1000),
partition p2 values less than (2000),
partition p3 values less than (3000));

begin
for i in 0..2999
loop
insert into part_tab3 values (i,'oracle');
end loop;
end;
/

create index part_tab3x on part_tab3(text)
indextype is ctxsys.context local (partition part_tabx1,
partition part_tabx2,
partition part_tabx3)
unusable;

exec dbms_pclxutil.build_part_index(jobs_per_batch=>3,
procs_per_job=>2,
tab_name=>'PART_TAB3',
idx_name=>'PART_TAB3X',
force_opt=>TRUE);

索引エラーの表示

CREATE INDEX操作またはALTER INDEX操作が完了した後、Oracle Textのビューに索引エラーを表示できます。索引エラーを表示するには、CTX_USER_INDEX_ERRORSビューを問い合せます。全索引のエラーをCTXSYSとして表示するには、CTX_INDEX_ERRORSビューを問い合せます。

たとえば、索引に最後に発生したエラーを表示するには、次の文を入力します。

SELECT err_timestamp, err_text FROM ctx_user_index_errors
ORDER BY err_timestamp DESC;

索引エラーの削除

索引エラーのビューを消去するには、次の文を入力します。

DELETE FROM ctx_user_index_errors;

CTXCAT索引タイプの構文

1つのテキスト列と1つ以上の他の列に対して索引を結合します。SELECT文のWHERE句でCATSEARCH演算子を使用して、この索引を問い合せます。この型の索引は、複合問合せのために最適化されます。この索引はトランザクション型です。元表に対するDML操作によって、索引自体が自動的に更新されます。

CREATE INDEX [schema.]index on [schema.]table(column) INDEXTYPE IS ctxsys.ctxcat
[PARAMETERS('[index set index_set]
[lexer lexer_pref]
[storage storage_pref]
[stoplist stoplist]
[section group sectiongroup_pref]
[wordlist wordlist_pref]
[memory memsize]');

[schema.]table(column)

索引付けする表および列の名前を指定します。

CTXCAT索引の作成時に指定する列は、CHAR型またはVARCHAR2型である必要があります。CTXCATでは、それ以外の型はサポートされていません。

仮想プライベート・データベース(VPD)保護表で索引を作成しようとすると、次のオプションのいずれかに該当しないかぎり失敗します。

- VPDポリシーが作成され、INDEX文タイプに適用されない場合(デフォルト)

- ポリシー関数が現在のユーザーに対してNULL条件を戻す場合

- ユーザー(索引所有者)がSYSの場合

- ユーザーにEXEMPT ACCESS POLICY権限がある場合

サポートされているCTXCATプリファレンス

index set index_set

CTXCAT索引を作成するには、索引セット・プリファレンスを指定します。索引セット・プリファレンスは、サブ索引を構成する列にネーミングします。索引セット列リストでネーミングされた列は、元表の行にNULL値を設定することはできません。NULL値を設定すると、エラーが発生します。

索引付けの前後に、列にNULL以外の値が設定されていることを確認してください。

「CTXCAT索引の作成」を参照してください。

索引パフォーマンスとサイズに関する考慮点

CTXCAT索引には問合せパフォーマンスの向上という利点がありますが、この型の索引の作成はコストがかかります。CTXCAT索引の作成に要する時間は、その合計サイズによって異なります。

CTXCAT索引の合計サイズに直接関係する要因は、次のとおりです。

- 索引付けするテキストの合計数

- 索引セットに含まれるコンポーネント索引の数

- コンポーネント索引を構成する元表の列数

索引セットに多数のコンポーネント索引がある場合、更新が必要な索引が増えるため、DMLのパフォーマンスは低下します。

CTXCAT索引の作成には追加コストが必要になるため、索引セットにコンポーネント索引を追加する前に、それぞれのコンポーネント索引によりアプリケーションに提供される問合せパフォーマンス上の利点を慎重に考慮する必要があります。

関連項目:

CTXCAT索引の作成とその利点に関する詳細は、『Oracle Textアプリケーション開発者ガイド』を参照してください。

その他のCTXCATプリファレンス

CTXCAT型の索引を作成する場合、parameters文字列で使用できるのは、表1-6に記載されたサポートされている索引プリファレンスです。

表1-6 サポートされているCTXCAT索引プリファレンス

プリファレンス・クラス

サポートされている型

データストア

このプリファレンス・クラスは、CTXCATに対してはサポートされていません。

フィルタ

このプリファレンス・クラスは、CTXCATに対してはサポートされていません。

レクサー

BASIC_LEXER(index_themes属性はサポートされていません)

CHINESE_LEXER

CHINESE_VGRAM_LEXER

JAPANESE_LEXER

JAPANESE_VGRAM_LEXER

KOREAN_MORPH_LEXER

ワードリスト

BASIC_WORDLIST

記憶域

BASIC_STORAGE

ストップリスト

1つの言語のストップリストのみがサポートされます(BASIC_STOPLIST型)。

セクション・グループ

フィールド・セクションのみがCTXCATに対してサポートされています。

サポートされないプリファレンスとパラメータ

CTXCAT索引を作成する場合、データストアおよびフィルタのプリファレンスは指定できません。セクション・グループ・プリファレンスでは、フィールド・セクション・プリファレンスのみがサポートされています。CONTEXT索引の場合と同様に、言語列、フォーマット列またはキャラクタ・セット列は指定できません。

CTXCAT索引の作成

この項では、CTXCAT索引の作成の簡単な例を示します。詳細な例は、『Oracle Textアプリケーション開発者ガイド』を参照してください。

次のスキーマを使用してAUCTIONという表について考えます。

create table auction(item_id number,
title varchar2(100),
category_id number,
price number,
bid_close date);

表の問合せに、priceに対する必須のテキスト問合せ句とオプションの構造化条件が含まれているとします。結果は、bid_closeに基づいてソートする必要があります。したがって、構造化およびソート基準に適した応答時間をサポートする索引が必要です。

ユーザーが入力する可能性がある様々なタイプの構造化問合せをサポートするために、カタログ索引を作成できます。構造化問合せの場合、CONTEXT索引に比べ、CTXCAT索引の方が問合せパフォーマンスが向上します。

索引を作成する場合は、最初に索引セット・プリファレンスを作成してオプションで記憶域プリファレンスを追加した後、そのプリファレンスに必要な索引を追加します。

begin
ctx_ddl.create_index_set('auction_iset');
ctx_ddl.add_index('auction_iset','bid_close');
ctx_ddl.add_index('auction_iset','price, bid_close');
end;

オプションで、記憶域プリファレンスを作成します。

begin
ctx_ddl.create_preference('auction_st_pref', 'BASIC_STORAGE');
ctx_ddl.set_attribute('auction_st_pref', 'I_TABLE_CLAUSE',
'tablespace TEXT storage (initial 5M)');
ctx_ddl.set_attribute('auction_st_pref', 'I_ROWID_INDEX_CLAUSE',
'tablespace TEXT storage (initial 5M)');
ctx_ddl.set_attribute('auction_st_pref', 'I_INDEX_CLAUSE',
'tablespace TEXT storage (initial 5M) compress 2');
end;
/

CTXCAT索引は、CREATE INDEX文を使用して次のように作成します。

create index auction_titlex on AUCTION(title) indextype is CTXSYS.CTXCAT
parameters ('index set auction_iset storage auction_st_pref');

CTXCAT索引の問合せ

ワードpokemonのtitle列を問い合せるには、次のように、通常の複合問合せを入力します。

select * from AUCTION where CATSEARCH(title, 'pokemon',NULL)> 0;
select * from AUCTION where CATSEARCH(title, 'pokemon', 'price < 50 order by
bid_close desc')> 0;

関連項目:

CTXCATの詳細な例は、『Oracle Textアプリケーション開発者ガイド』を参照してください。

CTXRULE索引タイプの構文

CTXRULEタイプは、問合せの集合を含む列に対する索引です。この索引は、SELECT文のWHERE句でMATCHES演算子を使用して問い合せます。

CREATE INDEX [schema.]index on [schema.]table(rule_col) INDEXTYPE IS
ctxsys.ctxrule
[PARAMETERS ('[lexer lexer_pref] [storage storage_pref]
[section group section_pref] [wordlist wordlist_pref]
[classifier classifier_pref]');

[PARALLEL n];

[schema.]table(column)

索引付けする表およびルール列の名前を指定します。ルールは、問合せ互換文字列、問合せテンプレート文字列またはバイナリ・サポート・ベクター・マシンのルールになります。

CTXRULE索引の作成時に指定する列は、VARCHAR2型、CLOB型またはBLOB型である必要があります。CTXRULEタイプでは、それ以外のタイプはサポートされていません。

仮想プライベート・データベース(VPD)保護表で索引を作成しようとすると、次のいずれかに該当しないかぎり失敗します。

- VPDポリシーで、INDEX文タイプがオンになっていない場合(デフォルト)

- ポリシー関数が現在のユーザーに対してNULL条件を戻す場合

- ユーザー(索引所有者)がSYSの場合

- ユーザーにEXEMPT ACCESS POLICY権限がある場合

lexer_pref

MATCHES関数を使用して、問合せの処理およびその後のドキュメントの分類に使用するレクサー・プリファレンスを指定します。

SVN_CLASSFIER分類およびRULE_CLASSIFIER分類の両方で、BASIC_LEXER、CHINESE_LEXER、JAPANESE_LEXER、KOREAN_MORPH_LEXERレクサーを使用できます。(「分類型」および「レクサー型」を参照してください。)

問合せ処理の場合、このレクサーがサポートしている演算子は、ABOUT、STEM、AND、NEAR、NOT、ORおよびWITHINです。

シソーラスを使用した演算子(BT*、NT*、PT、RT、SYN、TR、TRSYS、TTなど)がサポートされています。ただし、これらの演算子は、MATCHES関数の入力時ではなく、索引付け時にシソーラスのスナップショットを使用して拡張されます。したがって、索引付けの後にシソーラスを変更する場合は、問合せセットの再索引付けが必要になります。

storage_pref

問合せに対して索引の記憶域プリファレンスを指定します。この記憶域プリファレンスを使用して索引表の格納方法を指定します。「記憶域型」を参照してください。

セクション・グループ

セクション・グループを指定します。このパラメータは問合せには影響を与えません。分類するドキュメントのセクションに適用されます。CTXRULE索引タイプに対して、次のセクション・グループがサポートされています。

- BASIC_SECTION_GROUP

- HTML_SECTION_GROUP

- XML_SECTION_GROUP

- AUTO_SECTION_GROUP

「セクション・グループ型」を参照してください。

CTXRULEでは、特殊セクションはサポートされません。また、NDATAセクションもサポートされません。

wordlist_pref

ワードリスト・プリファレンスを指定します。このプリファレンスを使用すると、問合せ語句でステミング操作を有効化できます。「ワードリスト型」を参照してください。

classifier_pref

分類プリファレンスを指定します。「分類型」を参照してください。CTX_CLS.TRAINで指定したのと同じプリファレンス名を使用する必要があります。

CTXRULE索引の作成例

ドキュメント・ルーティング・アプリケーションでのCTXRULE索引タイプの使用方法の詳細は、『Oracle Textアプリケーション開発者ガイド』を参照してください。

関連項目

「CTX_DDL.CREATE_PREFERENCE 」

「CTX_DDL.CREATE_STOPLIST 」

「CTX_DDL.CREATE_SECTION_GROUP 」

"ALTER INDEX "

"CATSEARCH "

1.6 DROP INDEX

注意:

この項では、テキスト・ドメイン索引の削除に関連するDROP INDEX文について説明します。

DROP INDEX文の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

用途

DROP INDEXを使用して、指定したテキスト索引を削除します。

構文

DROP INDEX [schema.]index [force];

[force]

オプションで、索引を強制的に削除します。forceオプションは、索引付け操作が失敗したときなど、索引の状態を判定できない場合に使用してください。

デフォルトでは、このオプションを使用しないことをお薦めします。通常のDROP INDEX呼出しが失敗した場合にのみ使用してください。

例

次の例では、カレント・ユーザーのデータベース・スキーマ内にあるdoc_indexという名前の索引を削除します。

DROP INDEX doc_index;

関連項目

"ALTER INDEX "

"CREATE INDEX"

1.7 MATCHES

MATCHES演算子を使用して、指定したドキュメントに一致している問合せ表のすべての行を検索します。ドキュメントは、プレーン・テキスト、HTMLまたはXMLのドキュメントである必要があります。

MATCHES演算子ではデータベース・リンクもサポートされます。名前の末尾に@dblinkを追加すると、リモート表またはマテリアライズド・ビューを識別できます。dblinkは、リモート表またはマテリアライズド・ビューが含まれているデータベースへのデータベース・リンクの完全名または部分名であることが必要です。(リモート・ビューの問合せはサポートされていません。)

この演算子では、問合せセットにCTXRULE索引が必要です。

SVM_CLASSIFIER分類型が使用されている場合、MATCHESは0から100の範囲のスコアを戻します。数値が大きいほど、一致の信頼度が高いことを示します。この数値を取得するには、labelパラメータおよびMATCH_SCOREを使用します。一致スコアを使用して、カテゴリ固有のしきい値を特定のカテゴリに適用します。

SVM_CLASSIFIERタイプが使用されていない場合、この演算子は100(ドキュメントが基準と一致)または0(ドキュメントが不一致)のいずれかを戻します。

制限事項

オプティマイザがMATCHES問合せとともに機能問合せ呼出しを使用すると、問合せは失敗します。

構文

MATCHES(

[schema.]column,
document VARCHAR2 or CLOB
[,label INTEGER])

RETURN NUMBER;

column

索引付けられた問合せセットを含む列を指定します。

document

分類するドキュメントを指定します。ドキュメントは、プレーン・テキスト、HTMLまたはXMLドキュメントである必要があります。バイナリ・フォーマットはサポートされていません。

label

オプションで、MATCHES演算子で生成されたスコアを識別するラベルを指定します。MATCH_SCOREとともにこのラベルを使用します。

MATCHESの例

次の例では、表querytableを作成し、分類名および関連ルールを移入します。さらに、CTXRULE索引を作成します。

例では、分類するドキュメント文字列を指定してMATCHES問合せを入力します。SELECT文は、ドキュメントが適合する行(問合せ)をすべて戻します。

create table querytable (classification varchar2(64), text varchar2(4000));
insert into querytable values ('common names', 'smith OR jones OR brown');
insert into querytable values ('countries', 'United States OR Great Britain OR
France');
insert into querytable values ('Oracle DB', 'oracle NEAR database');

create index query_rule on querytable(text) indextype is ctxsys.ctxrule;

SELECT classification FROM querytable WHERE MATCHES(text, 'Smith is a common name
in the United States') > 0;

CLASSIFICATION
----------------------------------------------------------------
common names
countries

関連項目

"MATCH_SCORE"

"CTXRULE索引タイプの構文"

「CTX_CLS.TRAIN」

MATCHES演算子を使用する、単純な分類および管理型分類の拡張例については、『Oracle Textアプリケーション開発者ガイド』を参照してください。

1.8 MATCH_SCORE

文でMATCH_SCORE演算子を使用して、MATCHES問合せによって生成されたスコアが戻されるようにします。

MATCH_SCORE演算子ではデータベース・リンクもサポートされます。名前の末尾に@dblinkを追加すると、リモート表またはマテリアライズド・ビューを識別できます。dblinkは、リモート表またはマテリアライズド・ビューが含まれているデータベースへのデータベース・リンクの完全名または部分名であることが必要です。(リモート・ビューの問合せはサポートされていません。)

SVM_CLASSIFIER分類型が使用されている場合、この演算子は0から100の範囲のスコアを戻します。一致スコアを使用して、カテゴリ固有のしきい値を特定のカテゴリに適用します。

SVM_CLASSIFIER分類が使用されていない場合、この演算子は100(ドキュメントが基準と一致)または0(ドキュメントが不一致)のいずれかを戻します。

構文

MATCH_SCORE(label NUMBER)

label

問合せで生成されたスコアを識別するための数値を指定します。この数値を使用して、このスコアを戻すMATCHES句を識別します。

例

一致スコアを取得するには、次の構文を使用します。

select cat_id, match_score(1) from training_result where matches(profile,
text,1)>0;

関連項目

"MATCHES "

1.9 SCORE

SELECT文でSCORE演算子を使用して、CONTAINS問合せによって生成されたスコア値が戻されるようにします。SCORE演算子は、SELECT、ORDER BYまたはGROUP BY句で使用できます。

SCORE演算子ではデータベース・リンクもサポートされます。名前の末尾に@dblinkを追加すると、リモート表またはマテリアライズド・ビューを識別できます。dblinkは、リモート表またはマテリアライズド・ビューが含まれているデータベースへのデータベース・リンクの完全名または部分名であることが必要です。(リモート・ビューの問合せはサポートされていません。)

構文

SCORE(label NUMBER)

label

問合せで生成されたスコアを識別するための数値を指定します。この数値を使用して、このスコアを戻すCONTAINS句を識別します。

例

1つのCONTAINS

SCORE演算子を(SELECT句などで)コールする場合は、次のように、CONTAINS句がSCOREラベル値を参照するように指定します。

SELECT SCORE(1), title from newsindex
WHERE CONTAINS(text, 'oracle', 1) > 0 ORDER BY SCORE(1) DESC;

複数のCONTAINS

newsデータベースでは、ニュース記事のタイトルおよび本文が別々に格納および索引付けされるとします。次の問合せは、タイトルにOracleというワードおよび本文にjavaというワードを含むすべてのドキュメントを戻します。戻された記事は、最初のCONTAINS (Oracle)に対するスコア順にソートされた後、次のCONTAINS (java)のスコア順にソートされます。

SELECT title, body, SCORE(10), SCORE(20)

FROM news
WHERE CONTAINS (news.title, 'Oracle', 10) > 0 OR

CONTAINS (news.body, 'java', 20) > 0
ORDER BY SCORE(10), SCORE(20);

関連項目

"CONTAINS"

Oracle Textのスコア付けのアルゴリズム

2 Oracle Text索引付けの要素

Oracle Text索引を作成する際には、記憶域、フィルタ処理、プリファレンス、ストップリストの索引付けの型を使用することができます。

この章の項目は次のとおりです。

- 概要

- プリファレンスの作成

- データストア型

- フィルタ型

- レクサー型

- ワードリスト型

- 記憶域型

- セクション・グループ型

- 分類型

- クラスタ型

- ストップリスト

- システム定義プリファレンス

- システム・パラメータ

2.1 概要

索引の作成にCREATE INDEX文を使用する場合、または索引の管理にALTER INDEX 文を使用する場合は、オプションでパラメータ文字列に索引付けプリファレンス、ストップリストおよびセクション・グループを指定できます。プリファレンス、ストップリストまたはセクション・グループを指定することによって、Oracle Textがテキストを索引付けする方法を1つずつ設定できます。

プリファレンス・クラス

説明

データストア

ドキュメントの保存方法

フィルタ

ドキュメントのプレーン・テキストへの変換方法

レクサー

索引付けされる言語

ワードリスト

ステミング問合せおよびファジー問合せの拡張方法

記憶域

索引表の格納方法

ストップリスト

索引付けしないワードまたはテーマ

セクション・グループ

セクション内の問合せの使用可能化、およびドキュメント・セクションの定義方法

この章では、各プリファレンスの設定方法について説明します。オプションを使用可能にするには、この章で説明する型の1つを使用してプリファレンスを作成します。

たとえば、ドキュメントを外部ファイルに格納するように指定するには、FILE_DATASTORE型を使用してmydatastoreというデータストア・プリファレンスを作成できます。mydatastoreをデータストア・プリファレンスとしてCREATE INDEX文のPARAMETERS句に指定します。

2.2 プリファレンスの作成

データストア、レクサー、フィルタ、分類、ワードリストまたは記憶域プリファレンスを作成するには、CTX_DDL.CREATE_PREFERENCE プロシージャを使用し、この章で説明する型の1つを指定します。一部の型に対しては、CTX_DDL.SET_ATTRIBUTE プロシージャで属性も設定できます。

索引付けの型は、索引プリファレンスの作成に使用できる索引付けオブジェクトのクラスに名前を付けます。したがって、型は抽象IDですが、プリファレンスは型に対応するエンティティです。システム定義プリファレンスの多くには、型と同じ名前(例: BASIC_LEXER)が付いていますが、正確な対応は保証されていません。索引付けの型やシステム・プリファレンスの存在または性質を推測する場合には、注意が必要です。

CREATE INDEX文とALTER INDEX文で索引付けプリファレンスを指定します。索引付けプリファレンスにより、索引の作成方法が決定します。たとえば、レクサー・プリファレンスは、索引付けするテキストの言語を示します。独自のユーザー定義のプリファレンスを作成して指定したり、システム定義のプリファレンスを利用することもできます。

ストップリストを作成するには、CTX_DDL.CREATE_STOPLIST プロシージャを使用します。ストップリストにストップワードを追加するには、CTX_DDL.ADD_STOPWORDを使用します。

セクション・グループを作成するには、CTX_DDL.CREATE_SECTION_GROUP を使用してセクション・グループの型を指定します。セクション・グループにセクションを追加するには、CTX_DDL.ADD_ZONE_SECTIONまたはCTX_DDL.ADD_FIELD_SECTIONプロシージャを使用します。

2.3 データストア型

データストア型を使用して、テキストの格納方法を指定します。データストア・プリファレンスを作成するには、表2-1で説明するデータストア型のうちいずれか1つを使用する必要があります。

表2-1 データストア型

データストア型

使用する場合

DIRECT_DATASTORE

データをテキスト列に内部的に格納する場合。各列が単一のドキュメントとして索引付けされます。

MULTI_COLUMN_DATASTORE

データをテキスト表の複数の列に格納する場合。列が連結され、各行に1つずつ仮想ドキュメントが作成されます。

DETAIL_DATASTORE

データをテキスト列に内部的に格納する場合。ドキュメントがディテール表のテキスト列にある1つ以上の行で構成され、ヘッダー情報はマスター表に格納されます。

FILE_DATASTORE

データをオペレーティング・システム・ファイルに外部的に格納する場合。ファイル名が、テキスト列の各行に1つずつ格納されます。

NESTED_DATASTORE

データをNESTED TABLEに格納する場合。

URL_DATASTORE

データをインターネットまたはイントラネット上にあるファイルに外部的に格納する場合。Uniform Resource Locator(URL)がテキスト列に格納されます。

USER_DATASTORE

ドキュメントが、索引付け時にユーザー定義ストアド・プロシージャによって合成されます。

2.3.1 DIRECT_DATASTORE

テキスト列の各行にドキュメントが1つずつ直接格納されるテキストには、DIRECT_DATASTORE型を使用します。DIRECT_DATASTORE型には属性がありません。

CHAR、VARCHAR、VARCHAR2、BLOB、CLOB、BFILE、XMLTypeおよびURITypeの列型がサポートされています。

注意:

列がBFILEの場合、索引所有者は、BFILEsによって使用されるすべてのディレクトリに対して読取り権限を持っている必要があります。

次の例では、テキスト・データを格納するCLOB列がある表を作成します。その後、2つの行にテキスト・データを移入し、システム定義プリファレンスCTXSYS.DEFAULT_DATASTOREを使用して表を索引付けします。

create table mytable(id number primary key, docs clob);

insert into mytable values(111555,'this text will be indexed');
insert into mytable values(111556,'this is a direct_datastore example');
commit;

create index myindex on mytable(docs)
indextype is ctxsys.context
parameters ('DATASTORE CTXSYS.DEFAULT_DATASTORE');

2.3.2 MULTI_COLUMN_DATASTORE

テキストが複数の列に格納されている場合は、MULTI_COLUMN_DATASTOREデータストアを使用します。索引付け時、システムはテキスト列を連結し、列テキストにタグ付けして、テキストを単一ドキュメントとして索引付けします。XMLに似たタグ付けはオプションです。バイナリ列をフィルタ処理して連結するように、システムを設定することもできます。

- MULTI_COLUMN_DATASTORE属性

- 索引付けとDML

- MULTI_COLUMN_DATASTOREの制限事項

- MULTI_COLUMN_DATASTOREの例

- MULTI_COLUMN_DATASTOREフィルタの例

- タグ付けの動作

- セクションとしての列の索引付け

2.3.2.1 MULTI_COLUMN_DATASTORE属性

MULTI_COLUMN_DATASTOREデータストアには、表2-2に示す属性があります。

表2-2 MULTI_COLUMN_DATASTORE属性

属性

属性値

columns

索引付け時に連結する列のカンマで区切られたリストを指定します。元表に関するSELECT文の列リストに使用可能な式も指定できます。この中には、各種の式、PL/SQLファンクション、列別名などが含まれます。

NUMBER列型およびDATE列型はサポートされています。これらの型は、索引付け前にデフォルトの書式マスクを使用してテキストに変換されます。書式設定には、TO_CHARファンクションを列リストで使用できます。

RAW列およびBLOB列は、バイナリ・データとして直接連結されます。

LONG、LONG RAW、NCHAR、NCLOBデータ型、NESTED TABLEの各列およびコレクションはサポートされていません。

列リストは500バイトに制限されています。

フィルタ

カンマで区切られたY/Nフラグのリストを指定します。各フラグはCOLUMNSリストの列に対応しており、AUTO_FILTERを使用して列をフィルタ処理するかどうかを示します。

次の使用可能な値のいずれかを指定します。

Y: 列はAUTO_FILTERでフィルタ処理されます。

Nまたは値なし: 列はフィルタ処理されません(デフォルト)。

delimiter

列テキストを区切るデリミタを次のいずれかに指定します。

COLUMN_NAME_TAG: 列テキストは、XMLに似たオープン・タグとクローズ・タグで区切られます(デフォルト)。

NEWLINE: 列テキストは改行で区切られます。

2.3.2.2 索引付けとDML

索引付けには、CREATE INDEX文で指定するダミー列を作成する必要があります。この列の内容は、その列名が列属性で指定されていないかぎり、仮想ドキュメントの一部にはなりません。

索引は、ダミー列の更新時にのみ同期化されます。必要に応じて、変更内容を伝播するためにトリガーを作成できます。

2.3.2.3 MULTI_COLUMN_DATASTOREの制限事項

XMLType列を持つ複数列のデータストアは作成できません。MULTI_COLUMN_DATA_STOREでは、XMLTypeはサポートされていません。「Oracle TextのSQL文と演算子」で説明したように、XMLType列にはCONTEXT索引を作成できます。

2.3.2.4 MULTI_COLUMN_DATASTOREの例

次の例では、3つのテキスト列を持つmy_multiという複数列のデータストア・プリファレンスを作成します。

begin

ctx_ddl.create_preference('my_multi', 'MULTI_COLUMN_DATASTORE');
ctx_ddl.set_attribute('my_multi', 'columns', 'column1, column2, column3');

end;

2.3.2.5 MULTI_COLUMN_DATASTOREフィルタの例

次の例では、複数列のデータストア・プリファレンスを作成して、bar列がAUTO_FILTERでフィルタ処理されることを示します。

ctx_ddl.create_preference('MY_MULTI','MULTI_COLUMN_DATASTORE');
ctx_ddl.set_attribute('MY_MULTI', 'COLUMNS','foo,bar');
ctx_ddl.set_attribute('MY_MULTI','FILTER','N,Y');

複数列のデータストアは、foo列およびbar列の内容をフェッチして、barをフィルタ処理し、複合ドキュメントを次のように構成します。

<FOO>
foo contents
</FOO>
<BAR>
bar filtered contents (probably originally HTML)
</BAR>

Nフラグを指定する必要はありません。また、列ごとにフラグを設定する必要もありません。適用する列を示すカンマを付けて、Yフラグのみを指定してください。次に例を示します。

ctx_ddl.create_preference('MY_MULTI','MULTI_COLUMN_DATASTORE');
ctx_ddl.set_attribute('MY_MULTI', 'COLUMNS','foo,bar,zoo,jar');
ctx_ddl.set_attribute('MY_MULTI','FILTER',',,Y');

この例により、列zooのみがフィルタ処理されます。

2.3.2.6 タグ付けの動作

索引付け時、列ごとに仮想ドキュメントが作成されます。仮想ドキュメントは、リスト順に連結され自動的に列名タグが追加された列の内容で構成されています。

次に例を示します。

create table mc(id number primary key, name varchar2(10), address varchar2(80));
insert into mc values(1, 'John Smith', '123 Main Street');

exec ctx_ddl.create_preference('mymds', 'MULTI_COLUMN_DATASTORE');
exec ctx_ddl.set_attibute('mymds', 'columns', 'name, address');

これによって、次の仮想テキストが索引付けのために作成されます。

<NAME>
John Smith
</NAME>
<ADDRESS>
123 Main Street
</ADDRESS>

2.3.2.7 セクションとしての列の索引付け

タグをセクションとして索引付けするには、オプションで、BASIC_SECTION_GROUPを使用してフィールド・セクションを作成できます。

注意:

MULTI_COLUMN_DATASTOREを使用した場合、セクション・グループは作成されません。これらのタグに対してセクションを作成するには、セクション・グループを作成する必要があります。

式またはファンクションを使用する場合、列別名が使用されていないかぎり、タグは使用する式の最初の30文字で構成されます。

たとえば、次の式を使用するとします。

exec ctx_ddl.set_attibute('mymds', 'columns', '4 + 17');

次の仮想テキストが生成されます。

<4 + 17>
21
</4 + 17>

次の式を使用するとします。

exec ctx_ddl.set_attibute('mymds', 'columns', '4 + 17 col1');

次の仮想テキストが生成されます。

<col1>
21
<col1>

列名または列別名が小文字で二重引用符で囲まれていないかぎり、タグは大文字になります。次に例を示します。

exec ctx_ddl.set_attibute('mymds', 'COLUMNS', 'foo');

次の仮想テキストが生成されます。

<FOO>
content of foo
</FOO>

小文字のタグを生成するには、次のようにします。

exec ctx_ddl.set_attibute('mymds', 'COLUMNS', 'foo "foo"');

この式によって、次のタグが生成されます。

<foo>
content of foo
</foo>

2.3.3 DETAIL_DATASTORE

データベースのディテール表に直接格納されているテキストには、DETAIL_DATASTORE型を使用します。この場合、マスター表に索引付けされたテキスト列があります。

- DETAIL_DATASTORE属性

- マスター表/ディテール表の索引の同期化

- マスター表/ディテール表の例

2.3.3.1 DETAIL_DATASTORE属性

DETAIL_DATASTORE型には、表2-3に示す属性があります。

表2-3 DETAIL_DATASTORE属性

属性

属性値

binary

Oracle TextにTRUEを指定すると、各ディテール表の行の後ろに改行文字は追加されません。

Oracle TextにFALSEを指定すると、各ディテール表の行の後ろに改行文字(\n)が自動的に追加されます。

detail_table

ディテール表の名前(必要な場合はOWNER.TABLE)を指定します。

detail_key

ディテール表の外部キー列の名前を指定します。

detail_lineno

ディテール表の順序列の名前を指定します。

detail_text

ディテール表のテキスト列の名前を指定します。

2.3.3.2 マスター表/ディテール表の索引の同期化

ディテール表が変更された場合、索引の同期化時に再索引付け操作はトリガーされません。マスター表の索引付けされた列が変更された場合のみ、索引の同期化時に再索引付け操作がトリガーされます。

ディテール表にトリガーを作成すると、マスター表の行の索引付けされた列に変更内容を伝播できます。

2.3.3.3 マスター表/ディテール表の例

この例では、マスター表およびディテール表が互いにどのように関連しているかを示します。

- マスター表の例

- ディテール表の例

- ディテール表の例の属性

- マスター/ディテールの索引の例

2.3.3.3.1 マスター表の例

マスター表は、マスター/ディテールの関係にあるドキュメントを定義します。各ドキュメントに識別番号を割り当てます。次の表は、my_masterというマスター表の例です。

列名

列型

説明

article_id

NUMBER

各ドキュメントに一意のドキュメントID(主キー)

author

VARCHAR2(30)

ドキュメントの作成者

title

VARCHAR2(50)

ドキュメントのタイトル

body

CHAR(1)

CREATE INDEX内で指定するダミー列

注意:

DETAIL_DATASTORE型を使用する場合は、マスター表に主キー列を組み込む必要があります。

2.3.3.3.2 ディテール表の例

ディテール表にはドキュメントのテキストがあり、通常、その内容はいくつかの行に分散して格納されます。次のディテール表my_detailは、article_id列でマスター表my_masterと関連しています。この列によって、各ディテール表の行(サブドキュメント)が属するマスター・ドキュメントを識別します。

列名

列型

説明

article_id

NUMBER

マスター表に関連するドキュメントID

seq

NUMBER

article_idで定義されるマスター表のドキュメント順序

text

VARCHAR2

ドキュメント・テキスト

2.3.3.3.3 ディテール表の例の属性

この例で、DETAIL_DATASTORE属性には次の値が指定されます。

属性

属性値

binary

TRUE

detail_table

my_detail

detail_key

article_id

detail_lineno

seq

detail_text

text

CTX_DDL.CREATE_PREFERENCE を使用して、DETAIL_DATASTOREを持つプリファレンスを作成します。CTX_DDL.SET_ATTRIBUTE を使用して、前述のとおり、このプリファレンスに属性を設定します。次に、これを行う方法を示します。

begin

ctx_ddl.create_preference('my_detail_pref', 'DETAIL_DATASTORE');
ctx_ddl.set_attribute('my_detail_pref', 'binary', 'true');
ctx_ddl.set_attribute('my_detail_pref', 'detail_table', 'my_detail');
ctx_ddl.set_attribute('my_detail_pref', 'detail_key', 'article_id');
ctx_ddl.set_attribute('my_detail_pref', 'detail_lineno', 'seq');
ctx_ddl.set_attribute('my_detail_pref', 'detail_text', 'text');

end;

2.3.3.3.4 マスター/ディテールの索引の例

このマスター/ディテールの関係で定義されたドキュメントを索引付けするには、CREATE INDEX文でマスター表の列を指定します。指定する列は、許容される型のいずれかである必要があります。

この例ではbody列を使用します。この列には、マスター/ディテールの索引の作成を可能にし、コードの可読性を向上させる機能があります。my_detail_prefプリファレンスは、必要な属性でDETAIL_DATASTOREに設定されます。

CREATE INDEX myindex on my_master(body) indextype is ctxsys.context
parameters('datastore my_detail_pref');

この例では、titleまたはauthor列を指定して索引を作成することもできます。ただし、これを指定すると、これらの列が変更された場合に、索引の再作成操作がトリガーされます。

2.3.4 FILE_DATASTORE

FILE_DATASTORE型は、ローカル・ファイル・システム上のファイルに格納されているテキストに使用します。

- FILE_DATASTORE属性

- FILE_DATASTOREとセキュリティ

- FILE_DATASTOREの例

注意:

- FILE_DATASTORE型は、特定のタイプのリモート・マウント・ファイル・システムでは機能しないことがあります。

- ファイル・データストアのキャラクタ・セットがデータベースのキャラクタ・セットとみなされます。

2.3.4.1 FILE_DATASTORE属性

FILE_DATASTORE型には、表2-4に示す属性があります。

表2-4 FILE_DATASTORE属性

属性

属性値

path

path1:path2:pathn

filename_charset

name

path

ファイル・システムに外部的に格納されたファイルのフル・ディレクトリ・パス名を指定します。このようにフル・ディレクトリ・パスを指定する場合、テキスト列に組み込む必要があるのはファイル名のみです。

path属性には複数のパスを指定できます(パスは、UNIXの場合はコロン(:)、Windowsの場合はセミコロン(;)で区切ります)。ファイル名は、テキスト表のテキスト列に格納されます。

この属性を使用して外部ファイルのパスを指定しない場合、テキスト列にあるファイル名にパスを組み込む必要があります。

PATH属性には、次の制限事項があります。

- PATH属性を指定した場合、索引付けされた列では単純なファイル名のみ使用できます。ファイル名の一部としてPATH属性をパスと結合することはできません。ファイルが複数のフォルダまたはディレクトリに存在する場合、PATH属性を設定せずに、索引付けされた列にPATHを含む完全なファイル名を指定する必要があります。

- Windowsシステムでは、ファイルはローカル・ドライブに配置する必要があります。リモート・ドライブがローカル・ドライブ文字にマップされているかどうかに関係なく、ファイルをリモート・ドライブに配置することはできません。

filename_charset

ファイル名を変換するためにファイル・データストアで使用する、有効なOracleキャラクタ・セット名(30文字以内)を指定します。通常、Oracle Databaseでは、オペレーティング・システムとは異なるキャラクタ・セットを使用できます。このため、索引付けされた列にオペレーティング・システムのキャラクタ・セットに変換できない文字が含まれている場合は、ファイルの検索で問題が発生する(DRG-11513エラーが発生する)可能性があります。デフォルトでは、ファイル・データストアはファイル名をWE8ISO8859p1(ASCIIプラットフォームの場合)またはWE8EBCDIC1047(EBCDICプラットフォームの場合)に変換します。

ただし、WE8ISO8859p1およびWE8EBCDIC1047ではマルチバイト文字がサポートされていないため、データベースとオペレーティング・システムの両方でマルチバイト・キャラクタ・セットを使用するアプリケーションについては、これでは対応できない場合があります。filename_charset属性によってこの問題を解決します。この属性を指定すると、データストアはデータベース・キャラクタ・セットを、ISO8859またはEBCDICではなく、指定のキャラクタ・セットに変換します。

filename_charset属性がデータベース・キャラクタ・セットと同じ場合は、そのファイル名がそのまま使用されます。filename_charsetが有効なキャラクタ・セットでない場合は、エラー「DRG-10763: 値%sは有効なキャラクタ・セットではありません」が発生します。

2.3.4.2 FILE_DATASTOREとセキュリティ

ファイル・データストアおよびURLデータストアを使用すると、実際のデータベース・ディスク上のファイルにアクセスできます。Oracleユーザーがアクセス可能なファイル・システムをすべてのユーザーが参照できるため、これは、セキュリティが重要な場合は望ましくありません。FILE_ACCESS_ROLEシステム・パラメータを使用すると、FILEまたはURLデータストアを使用して索引を作成する権限のあるデータベース・ロールの名前を設定できます。データベース・ロールを設定すると、FILEまたはURLデータストアを使用して索引を作成しようとするユーザーはこのロールが必要になり、このロールを持たないユーザーは索引の作成に失敗します。SYSだけがFILE_ACCESS_ROLEを設定できます。他のユーザーが変更しようとすると、エラーが発生します。FILE_ACCESS_ROLEがデフォルトのNULLの場合、アクセスできません。したがって、デフォルトで、ユーザーはファイルまたはURLデータストアを使用する索引を作成できません。以前のリリースの動作を保存する場合、ユーザーは必要に応じてFILE_ACCESS_ROLEをPUBLICに設定できます。

たとえば、次の文でデータベース・ロールの名前を設定します。

ctx_adm.set_parameter('FILE_ACCESS_ROLE','TOPCAT');

TOPCATは、ファイル・データストアまたはURLデータストアを使用して索引を作成する権限があるロールです。権限が付与されたロールを持たないユーザーがファイル・データストアまたはURLデータストアを使用して索引を作成しようとすると、CREATE INDEX操作は失敗します。次に例を示します。

CREATE INDEX myindex ON mydocument(TEXT) INDEXTYPE IS ctxsys.context  PARAMETERS('DATASTORE ctxsys.file_datastore')

ここで、ユーザーがTOPCATロールを持たない場合は、索引作成が失敗してエラーが戻されます。ユーザーがTOPCATロールを持っている場合、索引作成は通常どおり処理されます。

データストアにアクセスするたびに、権限が付与されたロール名がチェックされます。これには、索引の作成、索引の同期化、CTX_DOC.HIGHLIGHTなどのドキュメント・サービスの呼出しが含まれます。

2.3.4.3 FILE_DATASTOREの例

この例では、パス/mydocsを持つCOMMON_DIRというファイル・データストア・プリファレンスを作成します。

begin
ctx_ddl.create_preference('COMMON_DIR','FILE_DATASTORE');
ctx_ddl.set_attribute('COMMON_DIR','PATH','/mydocs');
end;

mytable表にデータを移入する場合、テキスト列にはファイル名の挿入のみが必要となります。path属性によって、索引付け操作中に検索する場所がシステムに示されます。

create table mytable(id number primary key, docs varchar2(2000));
insert into mytable values(111555,'first.txt');
insert into mytable values(111556,'second.txt');
commit;

次のように索引を作成します。

create index myindex on mytable(docs)
indextype is ctxsys.context
parameters ('datastore COMMON_DIR');

2.3.5 URL_DATASTORE

次のファイルに格納されるテキストには、URL_DATASTORE型を使用します。

- HTTPまたはFTPを使用してアクセスするWorld Wide Web上のファイル

- ファイル・プロトコルを使用してアクセスするローカル・ファイル・システム内のファイル

各URLを単一のテキスト・フィールドに格納します。

- URL_DATASTORE URL構文

- URL_DATASTORE属性

- URL_DATASTOREとセキュリティ

- URL_DATASTOREの例

2.3.5.1 URL_DATASTORE URL構文

テキスト・フィールドに格納するURLの構文は、次のとおりです(カッコ内は、オプションのパラメータです)。

[URL:]<access_scheme>://<host_name>[:<port_number>]/[<url_path>]

access_scheme文字列は、ftp、httpまたはfileのいずれかです。次に例を示します。

http://mycomputer.us.example.com/home.html

注意:

login:password@構文がURL内でサポートされるのは、FTPアクセス・スキームの場合のみです。

この構文はRFC1738仕様に部分的に適合しているため、次の制限がURLの構文に適用されます。URLには、印字可能なASCII文字のみが含まれる必要があります。印字できないASCII文字およびマルチバイト文字は、% %xx 表記法でエスケープする必要があります。このxxは特殊文字の16進コードを表します。

2.3.5.2 URL_DATASTORE属性

URL_DATASTOREには次の属性があります。

表2-5 URL_DATASTORE属性

属性

属性値

timeout

この属性の値は無視されます。これは下位互換性の目的で提供されています。

maxthreads

この属性の値は無視されます。URL_DATASTOREはシングル・スレッドです。これは下位互換性の目的で提供されています。

urlsize

この属性の値は無視されます。これは下位互換性の目的で提供されています。

maxurls

この属性の値は無視されます。これは下位互換性の目的で提供されています。

maxdocsize

この属性の値は無視されます。これは下位互換性の目的で提供されています。

http_proxy

HTTPプロキシ・サーバーのホスト名を指定します。オプションで、hostname:portという形式でコロンを使用してポート番号を指定します。

ftp_proxy

FTPプロキシ・サーバーのホスト名を指定します。オプションで、hostname:portという形式でコロンを使用してポート番号を指定します。

no_proxy

非プロキシ・サーバーのドメインを指定します。カンマで区切られた文字列を使用して最大16個のドメイン名を指定します。

timeout

この属性の値は無視されます。これは下位互換性の目的で提供されています。

maxthreads

この属性の値は無視されます。URL_DATASTOREはシングル・スレッドです。これは下位互換性の目的で提供されています。

urlsize

この属性の値は無視されます。これは下位互換性の目的で提供されています。

maxdocsize

この属性の値は無視されます。これは下位互換性の目的で提供されています。

maxurls

この属性の値は無視されます。これは下位互換性の目的で提供されています。

http_proxy

Oracle TextがインストールされているコンピュータのHTTPプロキシ(ゲートウェイ)として機能するホスト・コンピュータの完全修飾名を指定します。オプションで、hostname:portという形式でコロンを使用してポート番号を指定できます。

この属性の設定が必要なのは、ファイアウォールの外側にあるWebファイルにアクセスするためにプロキシ・サーバーによる認証が必要なイントラネット上にコンピュータがある場合です。

ftp_proxy

Oracle TextがインストールされているサーバーのFTPプロキシ(ゲートウェイ)として機能するホスト・コンピュータの完全修飾名を指定します。オプションで、hostname:portという形式でコロンを使用してポート番号を指定できます。

この属性の設定が必要なのは、ファイアウォールの外側にあるWebファイルにアクセスするためにプロキシ・サーバーによる認証が必要なイントラネット上にコンピュータがある場合です。

no_proxy

イントラネット上のコンピュータのほとんどすべてにあるドメイン文字列(16個以内、カンマで区切られている)を指定します。ドメインの1つがホスト名内で検出されると、ftp_proxyおよびhttp_proxyに指定されたサーバーには要求が送られません。かわりに、要求は、URL内で指定されたホスト・コンピュータによって直接処理されます。

たとえば、no_proxyにus.example.comまたはuk.example.comという文字列を指定した場合、ホスト名にこのドメインのいずれかが含まれているコンピュータへのすべてのURL要求は、プロキシ・サーバーでは処理されません。

2.3.5.3 URL_DATASTOREとセキュリティ

ファイル・データストアおよびURLデータストアのファイル・アクセス・セキュリティを制御する方法については、「FILE_DATASTOREとセキュリティ」を参照してください。

2.3.5.4 URL_DATASTOREの例

この例では、URL_PREFというURL_DATASTOREプリファレンスを作成します。このプリファレンスには、http_proxy、no_proxyおよびtimeout属性を設定します。属性を設定しない場合は、デフォルトが使用されます。

begin
ctx_ddl.create_preference('URL_PREF','URL_DATASTORE');
ctx_ddl.set_attribute('URL_PREF','HTTP_PROXY','www-proxy.us.example.com');
ctx_ddl.set_attribute('URL_PREF','NO_PROXY','us.example.com');
ctx_ddl.set_attribute('URL_PREF','Timeout','300');
end;

表を作成し、その表に値を挿入します。

create table urls(id number primary key, docs varchar2(2000));
insert into urls values(111555,'http://context.us.example.com');
insert into urls values(111556,'http://www.sun.com');
commit;

索引を作成するには、データストアとしてURL_PREFを指定します。

create index datastores_text on urls ( docs )
indextype is ctxsys.context
parameters ( 'Datastore URL_PREF' );

2.3.6 USER_DATASTORE

USER_DATASTORE型を使用して、索引付け時にドキュメントを合成するストアド・プロシージャを定義します。たとえば、ユーザー・プロシージャによって、1つのドキュメント内に作成者、日付およびテキスト列を合成することで、作成者と日付の情報を索引付けされるドキュメントの一部にすることもできます。

- USER_DATASTORE属性

- USER_DATASTORE制約

- USER_DATASTORE索引付け後のプロシージャの編集

- CLOBを含むUSER_DATASTOREの例

- BLOB_LOCを含むUSER_DATASTOREの例

2.3.6.1 USER_DATASTORE属性

USER_DATASTOREには次の属性があります。

表2-6 USER_DATASTORE属性

属性

属性値

procedure

索引付けされるドキュメントを合成するプロシージャを指定します。

このプロシージャは、任意のユーザーが所有し、索引所有者が実行できる必要があります。

output_type

procedureへの2つ目の引数のデータ型を指定します。有効な値は、CLOB、BLOB、CLOB_LOC、BLOB_LOCまたはVARCHAR2です。デフォルトはCLOBです。

CLOB_LOCまたはBLOB_LOCを指定することは、一時CLOBまたは一時BLOBが不要であることを示します。これは、プロシージャによってロケータがIN/OUTの第2パラメータにコピーされるためです。

プロシージャ

索引付けされるドキュメントを合成するプロシージャ名を指定します。この指定は、PROCEDURENAMEまたはPACKAGENAME.PROCEDURENAMEの形式である必要があります。スキーマの所有者名を指定することもできます。

指定するプロシージャには、次のように定義された2つの引数が必要です。

procedure (r IN ROWID, c IN OUT NOCOPY output_type)

1つ目の引数rは、ROWID型にしてください。2つ目の引数c は、output_type型である必要があります。NOCOPYは、可能な場合は参照によってパラメータcを渡すようにOracle Textに指示する、コンパイラ・ヒントです。

注意:

プロシージャ名およびその引数には、どのような名前でも付けることができます。この例では、説明を単純にするために、rおよびcという引数を使用しています。

ストアド・プロシージャは、索引付けされる行ごとに1回コールされます。現在行のROWIDが引数として渡されるたびに、procedureは、ドキュメントのテキストを2つ目の引数(output_typeで指定)に書き込む必要があります。

2.3.6.2 USER_DATASTORE制約

次の制約が、procedureに適用されます。

- すべてのユーザーが所有できますが、そのユーザーには、procedureを正しく実行するデータベース権限が必要です。

- 索引所有者が実行できる必要があります。

- COMMITのようなトランザクション制御文またはDDLは入力できません。

2.3.6.3 USER_DATASTORE索引付け後のプロシージャの編集

ストアド・プロシージャを変更または編集する場合、そのプロシージャをベースにしている索引には通知されないため、このような索引を手動で再作成する必要があります。ストアド・プロシージャが他の列を使用し、その列の値が変更された場合、行は再索引付けされません。行が再索引付けされるのは、索引列が変更されたときのみです。

output_type

procedureへの2つ目の引数のデータ型を指定します。CLOB、BLOB、CLOB_LOC、BLOB_LOCまたはVARCHAR2のいずれかを指定できます。

2.3.6.4 CLOBを含むUSER_DATASTOREの例

次のように定義されたarticles表のように、作成者、タイトルおよびテキスト・フィールドが分割されている表を考えます。

create table articles(
id       number,
author   varchar2(80),
title    varchar2(120),
text     clob );

作成者フィールドおよびタイトル・フィールドは、索引付けドキュメントのテキストの一部になります。ユーザーappownerが、ユーザー・データストア・インタフェースでテキスト、作成者およびタイトル・フィールドからドキュメントを合成するストアド・プロシージャを作成するとします。

create procedure myproc(rid in rowid, tlob in out clob nocopy) is
begin
for c1 in (select author, title, text from articles
where rowid = rid)
loop

dbms_lob.writeappend(tlob, length(c1.title), c1.title);
dbms_lob.writeappend(tlob, length(c1.author), c1.author);
dbms_lob.writeappend(tlob, length(c1.text), c1.text);

end loop;
end;

このプロシージャは、ROWIDおよび一時CLOBロケータを取得し、すべての列を一時CLOBに連結します。forループは1回のみ実行されます。

ユーザーappownerは、次のようにプリファレンスを作成します。

begin

ctx_ddl.create_preference('myud', 'user_datastore');
ctx_ddl.set_attribute('myud', 'procedure', 'myproc');
ctx_ddl.set_attribute('myud', 'output_type', 'CLOB');

end;

appownerが、このプリファレンスを使用して索引をarticles(text)に作成する場合、索引付け操作では、ドキュメント・テキストにある作成者およびタイトルが参照されます。

2.3.6.5 BLOB_LOCを含むUSER_DATASTOREの例

次のプロシージャは、OUTPUT_TYPE BLOB_LOCで使用できます。

procedure myds(rid in rowid, dataout in out nocopy blob)
is
l_dtype varchar2(10);
l_pk    number;
begin
select dtype, pk into l_dtype, l_pk from mytable where rowid = rid;
if (l_dtype = 'MOVIE') then
select movie_data into dataout from movietab where fk = l_pk;
elsif (l_dtype = 'SOUND') then
select sound_data into dataout from soundtab where fk = l_pk;
end if;
end;

ユーザーappownerは、次のようにプリファレンスを作成します。

begin

ctx_ddl.create_preference('myud', 'user_datastore');
ctx_ddl.set_attribute('myud', 'procedure', 'myproc');
ctx_ddl.set_attribute('myud', 'output_type', 'blob_loc');

end;

2.3.7 NESTED_DATASTORE

NESTED_DATASTORE型は、NESTED TABLEに行として格納されているドキュメントを索引付けするために使用します。

- NESTED_DATASTORE属性

- NESTED_DATASTOREの例

2.3.7.1 NESTED_DATASTORE属性

NESTED_DATASTOREには次の属性があります。

表2-7 NESTED_DATASTORE属性

属性

属性値

nested_column

NESTED TABLE列の名前を指定します。この属性は必須です。列名のみを指定します。スキーマ所有者または格納表の名前は指定しないでください。

nested_type

NESTED TABLEの型を指定します。この属性は必須です。所有者名および型を指定する必要があります。

nested_lineno

行を順序付けする、NESTED TABLE内の属性名を指定します。これは、ディテール・データストアのDETAIL_LINENOに似ています。この属性は必須です。

nested_text

行のテキストを含むNESTED TABLE型内の列名を指定します。これは、ディテール・データストアのDETAIL_TEXTに似ています。この属性は必須です。LONG列型は、NESTED TABLEテキスト列としてはサポートされていません。

binary

FALSEを指定すると、ドキュメント・テキストの合成時に、改行が自動的に挿入されます。TRUEを指定すると、これは行われません。この属性は必須ではありません。デフォルトはFALSEです。

NESTED TABLEデータストアを使用する場合、拡張索引作成機能フレームワークではNESTED TABLE列の索引付けが禁止されているため、ダミー列を索引付けする必要があります。「NESTED_DATASTOREの例」を参照してください。

NESTED TABLEのDMLは、索引付けに使用されたダミー列には自動的に伝播されません。NESTED TABLEのDMLをダミー列に伝播するには、アプリケーション・コードまたはトリガーによって、ダミー列を明示的に更新する必要があります。

索引に対するフィルタのデフォルトは、nested_text列の型によって異なります。

妥当性チェックの間に、その型が存在するかどうか、およびnested_linenoとnested_textに対して指定した属性がNESTED TABLE型に存在するかどうかがOracle Textによりチェックされます。指定されたNESTED TABLE列が索引付けされた表に存在するかどうかはチェックされません。

2.3.7.2 NESTED_DATASTOREの例

この項では、NESTED_DATASTORE型を使用して、NESTED TABLEの行として格納されたドキュメントを索引付けする例を示します。

- NESTED TABLEの作成

- NESTED TABLEへの値の挿入

- NESTED TABLEプリファレンスの作成

- NESTED TABLEへの索引の作成

- ネストしたデータストアの問合せ

2.3.7.2.1 NESTED TABLEの作成

次のコードは、NESTED TABLEおよびNESTED TABLEの記憶表mytabを作成します。

create type nt_rec as object (
lno number, -- line number
ltxt varchar2(80) -- text of line
);

create type nt_tab as table of nt_rec;
create table mytab (
id number primary key, -- primary key
dummy char(1), -- dummy column for indexing
doc nt_tab -- nested table
)
nested table doc store as myntab;

2.3.7.2.2 NESTED TABLEへの値の挿入

次のコードは、NESTED TABLEの親行で、IDが1であるものに値を挿入します。

insert into mytab values (1, null, nt_tab());
insert into table(select doc from mytab where id=1) values (1, 'the dog');
insert into table(select doc from mytab where id=1) values (2, 'sat on mat ');
commit;

2.3.7.2.3 NESTED TABLEプリファレンスの作成

次のコードは、NESTED TABLE型nt_tabおよび親表mytabの定義に従って、NESTED_DATASTOREにプリファレンスおよび属性を設定します。

begin
-- create nested datastore pref
ctx_ddl.create_preference('ntds','nested_datastore');

-- nest tab column in main table
ctx_ddl.set_attribute('ntds','nested_column', 'doc');

-- nested table type
ctx_ddl.set_attribute('ntds','nested_type', 'scott.nt_tab');

-- lineno column in nested table
ctx_ddl.set_attribute('ntds','nested_lineno','lno');

--text column in nested table
ctx_ddl.set_attribute('ntds','nested_text', 'ltxt');
end;

2.3.7.2.4 NESTED TABLEへの索引の作成

次のコードは、NESTED TABLEデータストアを使用して索引を作成します。

create index myidx on mytab(dummy) -- index dummy column, not nest table
indextype is ctxsys.context parameters ('datastore ntds');

2.3.7.2.5 ネストしたデータストアの問合せ

次のSELECT文は、NESTED TABLEから作成された索引を問い合せます。

select * from mytab where contains(dummy, 'dog and mat')>0;
-- returns document 1, because it has dog in line 1 and mat in line 2.

2.4 フィルタ型

フィルタ型を使用して、ドキュメントをフィルタ処理して索引付けテキスト文字列を取得するためのプリファレンスを作成します。フィルタ処理によって、ワード・プロセッサ形式のドキュメント、形式設定されたドキュメント、プレーン・テキスト、HTMLおよびXMLドキュメントの索引付けができるようになります。

形式設定されたドキュメントについては、ドキュメントをその固有の形式で格納した後、フィルタを使用してそのドキュメントの一時的なプレーン・テキストまたはHTML形式を作成します。Oracle Textにより、プレーン・テキストまたはHTMLで形式設定されたドキュメントから導出されたワードが索引付けされます。TMP_DIR環境変数では、フィルタで作成した一時ファイルを格納するディレクトリ・パスが設定されます。

フィルタ・プリファレンスを作成するには、表2-8で説明するフィルタ型のうちいずれか1つを使用する必要があります。

表2-8 フィルタ型

フィルタ

使用される場合

AUTO_FILTER

形式設定されたドキュメントのフィルタ処理用Autoフィルタです。

NULL_FILTER

フィルタ処理は必要ありません。プレーン・テキスト、HTMLまたはXMLドキュメントの索引付けに使用します。

MAIL_FILTER

MAIL_FILTERを使用して、RFC-822、RFC-2045メッセージを索引付け可能なテキストに変換します。

「USER_FILTER」

カスタム・フィルタ処理に使用するユーザー定義外部フィルタです。

PROCEDURE_FILTER

カスタム・フィルタ処理に使用するユーザー定義ストアド・プロシージャ・フィルタです。

2.4.1 AUTO_FILTER

AUTO_FILTERは、PDFおよびMicrosoft Wordのドキュメントを含む、ほとんどのドキュメント形式をフィルタ処理する汎用フィルタです。単一書式および複合書式の両方の列の索引付けに使用します。このフィルタは、プレーン・テキスト、HTML、XHTML、SGMLおよびXMLドキュメントを自動的にバイパスします。

- AUTO_FILTER属性

- AUTO_FILTERと形式設定されたドキュメントの索引付け

- AUTO_FILTERと複合フォーマット列のプレーン・テキストまたはHTMLの明示的なバイパス

- AUTO_FILTERとAUTO_FILTERによるキャラクタ・セット変換

関連項目:

AUTO_FILTERがサポートしている形式のリストおよび環境の設定方法は、「Oracle Textでサポートされているドキュメント形式」を参照してください。

注意:

AUTO_FILTERは、非推奨のINSO_FILTERに代わるものです。INSO_FILTERを使用するアプリケーションに変更を加えずに機能するように、2つのフィルタ間の下位互換性を最大限確保していますが、一部相違が発生する可能性があります。このため、ユーザーは新しいプログラムでAUTO_FILTERを使用し、可能な場合は、INSO_FILTERのインスタンスおよび旧アプリケーションでそのインスタンスを使用するすべてのシステム・プリファレンスまたは定数を置換してください。

2.4.1.1 AUTO_FILTER属性

AUTO_FILTERプリファレンスには、表2-9に示す属性があります。

表2-9 AUTO_FILTER属性

属性

属性値

timeout

AUTO_FILTERタイムアウトを秒単位で指定します。0から42,949,672の数を使用します。デフォルトは120です。この値を0(ゼロ)に設定すると、この機能は使用禁止になります。

この待機時間がどのように使用されるかは、timeout_typeの設定方法によって異なります。

この機能は、行に対応しているキャラクタ・セット列やフォーマット列によってAUTO_FILTERがバイパスする行には使用できません。たとえば、その形式がTEXTにマークされている場合です。

この機能を使用して、Oracle Textの索引付け操作が停止中のフィルタ操作を無制限に待機するのを回避します。

timeout_type

HEURISTICまたはFIXEDを指定します。デフォルトはHEURISTICです。

Outside In HTML Exportによる出力が増加した場合に、すべてのTIMEOUT秒をチェックする場合は、Oracle TextにHEURISTICを指定します。出力が増加していない場合、そのドキュメントに対する操作は終了します。エラーはCTX_USER_INDEX_ERRORSビューに記録され、操作は次の索引付け対象のドキュメント行に移動します。

フィルタ処理が正常に進行中か停止中かに関係なく、TIMEOUT秒後にOutside In HTML Exportの処理を終了するには、FIXEDを指定します。この値は、大規模なドキュメントのフィルタ処理を正常に行うために時間をかけるより、索引付けのスループットが重要な場合に便利です。

output_formatting

この属性を設定しても、フィルタのパフォーマンスまたはフィルタの出力に影響はありません。下位互換性の目的でのみ保持されています。

2.4.1.2 AUTO_FILTERと形式設定されたドキュメントの索引付け

Microsoft Wordなどの形式設定されたドキュメントを含むテキスト列を索引付けするには、AUTO_FILTERを使用します。このフィルタは、ドキュメント形式を自動的に検出します。CTXSYS.AUTO_FILTERシステム定義プリファレンスを、PARAMETERS句で次のように使用できます。

create index hdocsx on hdocs(text) indextype is ctxsys.context
parameters ('datastore ctxsys.file_datastore
filter ctxsys.auto_filter');

注意:

CTXSYS.AUTO_FILTERは、非推奨のCTXSYS.INSO_FILTERに代わるものです。CTXSYS.INSO_FILTERを使用するプログラムはまだ機能します。新しいプログラムでは、CTXSYS.AUTO_FILTERを使用してください。

2.4.1.3 AUTO_FILTERと複合フォーマット列のプレーン・テキストまたはHTMLの明示的なバイパス

複合フォーマット列は、複数のドキュメント形式を含むテキスト列です。これには、Microsoft Word、PDF、プレーン・テキストおよびHTMLドキュメントを含む列などがあります。

AUTO_FILTERによって、複合フォーマット列を索引付けして、プレーン・テキスト、HTMLおよびXML文書を自動的にバイパスできます。ただし、組込みのバイパス・メカニズムを使用しない場合は、行をテキストとして明示的にタグ付けし、AUTO_FILTERがその行を無視して、ドキュメントを処理しないように指定できます。

元表内のフォーマット列では、テキスト列に含まれるドキュメントのタイプを指定できます。指定できるドキュメント・タイプは、TEXT、BINARYおよびIGNOREです。索引付け中に、AUTO_FILTERは、TEXTと指定されたすべてのドキュメントを無視します(キャラクタ・セット列が指定されていない場合)。TEXTフォーマット列タイプのドキュメントとIGNOREタイプのドキュメントの相違点は、TEXTドキュメントは索引付けされてフィルタには無視されるのに対し、IGNOREドキュメントはまったく索引付けされない点です。IGNOREを使用すると、イメージ・ファイルなどのドキュメントまたは索引付けしない言語のドキュメントが無視されます。IGNOREはどのフィルタ・タイプにも使用できます。

AUTO_FILTERのバイパス・メカニズムを設定するには、元表にフォーマット列を作成する必要があります。

次に例を示します。

create table hdocs (
id number primary key,
fmt varchar2(10),
text varchar2(80)
);

主にWordドキュメントを索引付けすると想定すると、Wordドキュメントをフィルタするために、フォーマット列にBINARYを指定します。一方、AUTO_FILTERにHTMLドキュメントを無視させるには、フォーマット列にTEXTを指定します。

たとえば、次の文によってテキスト表に2つのドキュメントを追加し、1つのドキュメントの形式にBINARYを、もう1つのドキュメントの形式にTEXTを割り当てるとします。

insert into hdocs values(1, 'binary', '/docs/myword.doc');
insert in hdocs values (2, 'text', '/docs/index.html');
commit;

索引を作成するには、CREATE INDEXを使用して、パラメータ文字列にフォーマット列名を指定します。

create index hdocsx on hdocs(text) indextype is ctxsys.context
parameters ('datastore ctxsys.file_datastore
filter ctxsys.auto_filter
format column fmt');

フォーマット列にTEXTまたはBINARYを指定しない場合は、BINARYが使用されます。

注意:

AUTO_FILTERを使用する場合は、CREATE INDEXにフォーマット列を指定する必要はありません。

2.4.1.4 AUTO_FILTERとAUTO_FILTERによるキャラクタ・セット変換

ドキュメント形式列がTEXTに設定されている場合、AUTO_FILTERはドキュメントをデータベース・キャラクタ・セットに変換します。この場合、AUTO_FILTERはキャラクタ・セット列を検索して、ドキュメントのキャラクタ・セットを判断します。

キャラクタ・セット列値がOracle Textキャラクタ・セット名でない場合、ドキュメントはキャラクタ・セット変換なしで渡されます。

注意:

AUTO_FILTERを使用している場合は、キャラクタ・セット列を指定する必要はありません。

2.4.2 NULL_FILTER

NULL_FILTER型は、プレーン・テキストまたはHTMLが索引付けされ、フィルタ処理を行う必要がない場合に使用します。NULL_FILTERには属性がありません。

NULL_FILTERとHTMLドキュメントの索引付け

ドキュメント・セット全体がHTMLである場合は、フィルタ・プリファレンスにNULL_FILTERを使用することをお薦めします。

たとえば、HTMLドキュメント・セットを索引付けするには、NULL_FILTERおよびHTML_SECTION_GROUPに対するシステム定義プリファレンスを次のように指定します。

create index myindex on docs(htmlfile) indextype is ctxsys.context
parameters('filter ctxsys.null_filter
section group ctxsys.html_section_group');

関連項目:

セクション・グループとHTMLドキュメントの索引付けの詳細は、「セクション・グループ型」を参照してください。

2.4.3 MAIL_FILTER

MAIL_FILTERを使用して、RFC-822、RFC-2045メッセージを索引付け可能なテキストに変換します。入力には、次の制限事項が適用されます。

- ドキュメントはUS-ASCIIである必要があります。

- 行の長さは1024バイト以内にする必要があります。

- RFC-822については、ドキュメントは構文的に有効にする必要があります。

無効な入力に対する動作は定義されていません。逸脱すると、フィルタによってエラーなしで確実に処理される場合もあります。フェッチ時またはフィルタ時にエラーが発生することもあります。

- MAIL_FILTER属性

- MAIL_FILTERの動作

- メール・フィルタ構成ファイル

- Mail_Filterの例

2.4.3.1 MAIL_FILTER属性

MAIL_FILTERには、表2-10に示す属性があります。

表2-10 MAIL_FILTER属性

属性

属性値

INDEX_FIELDS

出力に保持するフィールドのコロンで区切られたリストを指定します。これらのフィールドは、タグ・マークアップに変換されます。INDEX_FIELDSがFROMに設定されている場合の例を示します。

From: Scott Tiger

次のように変換されます。

<FROM>Scott Tiger</FROM>

トップレベルのフィールドのみがこのように変換されます。

AUTO_FILTER_TIMEOUT

メール・フィルタによって起動されるAUTO_FILTERフィルタ処理のタイムアウト値を指定します。デフォルトは60です。(INSO_TIMEOUT属性を置換してINSO_TIMEOUTとの下位互換性を保ちます。)

AUTO_FILTER_OUTPUT_FORMATTING

TRUEまたはFALSEを指定します。デフォルトはTRUEです。

この属性は以前のINSO_OUTPUT_FORMATTING属性に代わるものです。ただし、現行のリリースへの影響はありません。

PART_FIELD_STYLE

INDEX_FIELDS属性で識別される下位レベル・フィールドの変換方法を指定します。INDEX_FIELDSにより識別される最上位レベルのメッセージ部分のフィールドは、常にタグ・マークアップに変換されます(前述のINDEX_FIELDSの説明を参照)。つまり、PART_FIELD_STYLEは、添付された電子メールなど下位レベル部分の変換を制御します。

可能な値は、IGNORE (デフォルト。索引付けに部分フィールドが含まれない)、TAG (最上位レベルの部分フィールドで実行されるように、部分フィールド名をタグに変換)、FIELD (部分フィールド名をタグとしてではなく、フィールドとして保持)、およびTEXT (部分フィールド名を削除し、索引付け用にフィールドの内容のみを保持)です。PART_FIELD_STYLEの機能の例は、「Mail_Filterの例」を参照してください。

2.4.3.2 MAIL_FILTERの動作

このフィルタは、ドキュメントごとに次のように動作します。

- ヘッダー・フィールドの読取りおよび削除

- Content-transfer-encodingフィールドの値によって、メッセージ本文のデコード(必要に応じて)

- メール・フィルタ構成ファイルで指定されたContent-Typeフィールドの値、およびユーザー指定の動作によって、処理を実行します。(「メール・フィルタ構成ファイル」を参照してください。)有効な処理は、次のとおりです。

- 出力テキストの本文を作成します(INCLUDE)。キャラクタ・セットがContent-Typeヘッダー・フィールドのINCLUDE部分にない場合は、元表のキャラクタ・セット列で指定する値にデフォルト設定されます。作成したキャラクタ・セット列をCREATE INDEXコマンドのパラメータ文字列で指定します。

- AUTO_FILTERで本文の内容をフィルタ処理します(AUTO_FILTERディレクティブ)。

- 出力テキストから本文の内容を削除します(IGNORE)。

- 構成ファイルの型に動作が指定されていない場合、デフォルトは次のとおりです。

- text/*: 出力テキストの本文を作成します。

- application/*: AUTO_FILTERで本文の内容をフィルタ処理します。

- image/*、audio/*、video/*、model/*: 無視されます。

- マルチパート・メッセージが解析され、メール・フィルタが各パートに再帰的に適用されます。各パートが出力に追加されます。

- 作成されたテキストはすべて、必要に応じてデータベース・キャラクタ・セットにキャラクタ・セット変換されます。

2.4.3.3 メール・フィルタ構成ファイル

MAIL_FILTERフィルタは、メール・ドキュメントのフィルタ処理の方法を指定するディレクティブを含む、メール・フィルタ構成ファイルを使用します。メール・フィルタ構成ファイルは、編集可能なテキスト・ファイルです。このファイルでは、Content-Typeごとにデフォルトの動作をオーバーライドできます。構成ファイルには、IANAからOracleグローバリゼーション・サポートへのキャラクタ・セット名マッピングも含まれています。

ファイルは、ORACLE_HOME/ctx/configに存在する必要があります。使用するファイル名は、新しいシステム・パラメータMAIL_FILTER_CONFIG_FILEに格納されます。このファイル名はインストール時にdrmailfl.txtに設定され、デフォルトの内容として有効になります。

独自のメール・フィルタ構成ファイルを作成して、新規バージョンまたはパッチ・セットのインストールにより上書きされないようにすることをお薦めします。メール・フィルタ構成ファイルは、データベース・キャラクタ・セットである必要があります。

メール・フィルタ構成ファイルの構造

ファイルには、BEHAVIORおよびCHARSETSという2つのセクションがあります。behaviorセクションの最初の部分は、次のとおりです。

[behavior]

続く行はそれぞれ、MIMEタイプ、空白、動作の指定で始まります。MIMEタイプは、完全なTYPE/SUBTYPEまたはTYPEのみで、そのタイプのすべてのサブタイプに適用されます。TYPE/SUBTYPEを指定すると、TYPEの指定がオーバーライドされ、デフォルトの動作がオーバーライドされます。動作は、INCLUDE、AUTO_FILTERまたはIGNOREです(定義は「MAIL_FILTERフィルタの動作」を参照)。次に例を示します。

application/zip     IGNORE
application/msword  AUTO_FILTER
model               IGNORE

"multipart"または"message"タイプに動作を指定することはできません。これらのタイプに動作を指定すると、その行は無視されます。タイプの指定が重複している場合、後に指定した方が優先されます。

行の先頭に#記号を付けることで、メール構成ファイルにコメントを含めることができます。

charsetマッピング・セクションの最初の部分は、次のとおりです。

[charsets]

各行は、次のように、IANA名、空白、Oracleグローバリゼーション・サポート・キャラクタ・セット名で構成されます。

US-ASCII     US7ASCI
ISO-8859-1   WE8ISO8859P1

メール・フィルタがマッピングを取得する方法は、このファイルのみです。デフォルトはありません。

構成ファイルを変更すると、変更は、それ以降に索引付けされたドキュメントのみに影響します。ファイルを変更した後に、共有プールをフラッシュする必要があります。

2.4.3.4 Mail_Filterの例

次のような形式で、件名行が複数ある他の複数の電子メールが添付されている電子メールがあるとします。

To:  somebody@someplace
Subject:  mainheader
Content-Type:  multipart/mixed
. . .
Content-Type: text/plain
X-Ref:  some_value
Subject:  subheader 1
. . .
Content-Type:  text/plain
X-Control:  blah blah blah
Subject:  subheader 2
. . .

INDEX_FIELDSをSubjectに設定し、最初にPART_FIELD_STYLEをIGNOREに指定します。

CTX_DDL.CREATE_PREFERENCE('my_mail_filt', 'mail_filter');
CTX_DDL_SET_ATTRIBUTE(my_mail_filt', 'INDEX_FILES', 'subject');
CTX_DDL.SET ATTRIBUTE ('my_mail_filt', 'PART_FIELD_STYLE', 'ignore');

索引が作成され、ファイルが次のように索引付けされます。

<SUBJECT>mainheader</SUBJECT>

PART_FIELD_STYLEをTAGに指定した場合は、次のようになります。

<SUBJECT>mainheader</SUBJECT>
<SUBJECT>subheader1</SUBJECT>
<SUBJECT>subheader2</SUBJECT>

PART_FIELD_STYLEをFIELDに指定した場合は、次のようになります。

<SUBJECT>mainheader<SUBJECT>
SUBJECT:subheader1
SUBJECT:subheader2

最後に、PART_FIELD_STYLEをTEXTに指定した場合は、次のようになります。

<SUBJECT>mainheader</SUBJECT>
subheader1
subheader2

2.4.4 USER_FILTER

USER_FILTER型を使用して、列内のドキュメントをフィルタ処理するための外部フィルタを指定します。

この項では、次の項目について説明します。

- USER_FILTER属性

- キャラクタ・セット列とフォーマット列を指定したUSER_FILTERの使用

- USER_FILTERと複合フォーマット列のプレーン・テキストまたはHTMLの明示的なバイパス

- USER_FILTERによるキャラクタ・セット変換

- ユーザー・フィルタの例

2.4.4.1 USER_FILTER属性

USER_FILTERには次の属性があります。

表2-11 USER_FILTER属性

属性

属性値

command

実行可能なフィルタの名前を指定します。

警告:

USER_FILTER型を使用するとき、セキュリティ上の潜在的な脅威があります。CTXAPPロールを付与されたデータベース・ユーザーが、USER_FILTERを使用して悪質なアプリケーションをロードする可能性があります。したがって、DBAは、システム・セキュリティを危険にさらすような実行可能なフィルタを有効にする入力と出力のファイル・パラメータの組合せに対して、保護手段を講じる必要があります。

コマンド

列に格納されているすべてのテキストをフィルタ処理するときに使用する、単一外部フィルタの実行可能ファイルを指定します。複数のドキュメント形式が列に格納されている場合、commandに指定された外部フィルタはそれらの形式のすべてを認識し、処理する必要があります。

指定する実行可能ファイルは、$ORACLE_HOME/ctx/binディレクトリ(UNIXの場合)、または%ORACLE_HOME%/ctx/binディレクトリ(Windowsの場合)に存在する必要があります。

次の2つのパラメータで、ユーザー・フィルタ・コマンドを作成します。

- 1つ目のパラメータは、読み取られる入力ファイルの名前です。

- 2つ目のパラメータは、書き込まれる出力ファイルの名前です。

すべてのドキュメント形式がAUTO_FILTERでサポートされている場合は、フィルタ処理以外にドキュメントに対する追加処理が必要でないかぎり、USER_FILTERのかわりにAUTO_FILTERを使用します。

2.4.4.2 キャラクタ・セット列とフォーマット列を指定したUSER_FILTERの使用

USER_FILTERは、フィルタ処理を必要としないドキュメントをバイパスします。その動作は、フォーマット列とキャラクタ・セット列の値の影響を受けます。さらにUSER_FILTERは、キャラクタ・セット列の値に従ってキャラクタ・セット変換を実行します。

2.4.4.3 USER_FILTERと複合フォーマット列のプレーン・テキストまたはHTMLの明示的なバイパス

複合フォーマット列は、複数のドキュメント形式を含むテキスト列です。これには、Microsoft Word、PDF、プレーン・テキストおよびHTMLドキュメントを含む列などがあります。

USER_FILTER実行可能ファイルによって、複合フォーマット列を索引付けして、テキスト文書を自動的にバイパスできます。ただし、組込みのバイパス・メカニズムを使用しない場合は、行をテキストとして明示的にタグ付けし、USER_FILTER実行可能ファイルがその行を無視して、ドキュメントを処理しないように指定できます。

元表内のフォーマット列では、テキスト列に含まれるドキュメントのタイプを指定できます。指定できるドキュメント・タイプは、TEXT、BINARYおよびIGNOREです。索引付け中に、USER_FILTER実行可能ファイルは、TEXTと指定されたすべてのドキュメントを無視します(キャラクタ・セット列が指定されていない場合)。(TEXTフォーマット列タイプのドキュメントとIGNOREタイプのドキュメントの相違点は、TEXTドキュメントは索引付けされてフィルタには無視されるのに対し、IGNOREドキュメントはまったく索引付けされない点です。IGNOREを使用すると、イメージ・ファイルなどのドキュメントまたは索引付けしない言語のドキュメントが無視されます。IGNOREはどのフィルタ・タイプにも使用できます。

USER_FILTERのバイパス・メカニズムを設定するには、元表にフォーマット列を作成する必要があります。次に例を示します。

create table hdocs (
id number primary key,
fmt varchar2(10),
text varchar2(80)
);

主にWordドキュメントを索引付けすると想定すると、Wordドキュメントをフィルタするために、フォーマット列にBINARYを指定します。一方、USER_FILTER実行可能ファイルにHTMLドキュメントを無視させるには、フォーマット列にTEXTを指定します。

たとえば、次の文によってテキスト表に2つのドキュメントを追加し、1つのドキュメントの形式にBINARYを、もう1つのドキュメントの形式にTEXTを割り当てるとします。

insert into hdocs values(1, 'binary', '/docs/myword.doc');
insert into hdocs values(2, 'text', '/docs/index.html');
commit;

このファイルの名前がupcase.plである場合、次のようにフィルタ・プリファレンスを作成します。

ctx_ddl.create_preference
(
preference_name => 'USER_FILTER_PREF',
object_name     => 'USER_FILTER'
);

ctx_ddl.set_attribute ('USER_FILTER_PREF', 'COMMAND', 'upcase.pl');

索引を作成するには、CREATE INDEXを使用して、パラメータ文字列にフォーマット列名を指定します。

create index hdocsx on hdocs(text) indextype is ctxsys.context
parameters ('datastore ctxsys.file_datastore
filter 'USER_FILTER_PREF'
format column fmt');

フォーマット列にTEXTまたはBINARYを指定しない場合は、BINARYが使用されます。

2.4.4.4 USER_FILTERによるキャラクタ・セット変換

ドキュメント形式列がTEXTに設定されている場合、USER_FILTER実行可能ファイルはドキュメントをデータベース・キャラクタ・セットに変換します。この場合、USER_FILTER実行可能ファイルはキャラクタ・セット列を検索して、ドキュメントのキャラクタ・セットを判断します。

キャラクタ・セット列値がOracle Textキャラクタ・セット名でない場合、ドキュメントはキャラクタ・セット変換なしで渡されます。

2.4.4.5 ユーザー・フィルタの例

次に、ユーザー・フィルタとして使用されるPerlスクリプトの例を示します。このスクリプトは、1つ目の引数に指定された入力テキスト・ファイルを大文字に変換し、出力を2つ目の引数に指定された場所に書き込みます。

#!/usr/local/bin/perl

open(IN, $ARGV[0]);
open(OUT, ">".$ARGV[1]);

while (<IN>)
{
tr/a-z/A-Z/;
print OUT;
}

close (IN);
close (OUT);

このファイルの名前がupcase.plである場合、次のようにフィルタ・プリファレンスを作成します。

begin
ctx_ddl.create_preference
(
preference_name => 'USER_FILTER_PREF',
object_name     => 'USER_FILTER'
);
ctx_ddl.set_attribute
('USER_FILTER_PREF','COMMAND','upcase.pl');
end;

次のようにSQL*Plusで索引を作成します。

create index user_filter_idx on user_filter ( docs )
indextype is ctxsys.context
parameters ('FILTER USER_FILTER_PREF');

2.4.5 PROCEDURE_FILTER

ドキュメントをストアド・プロシージャでフィルタ処理するには、PROCEDURE_FILTER型を使用します。ストアド・プロシージャは、ドキュメントのフィルタ処理が必要になるたびにコールされます。

この項では、次の項目について説明します。

- PROCEDURE_FILTER属性

- PROCEDURE_FILTERパラメータの順序

- PROCEDURE_FILTERの実行要件

- PROCEDURE_FILTERエラー処理

- PROCEDURE_FILTERプリファレンスの例

2.4.5.1 PROCEDURE_FILTER属性

表2-12に、PROCEDURE_FILTERの属性を示します。

表2-12 PROCEDURE_FILTER属性

属性

用途

使用可能な値

procedure

フィルタのストアド・プロシージャの名前。

任意のプロシージャ。プロシージャには、PL/SQLストアド・プロシージャを指定できます。

input_type

ストアド・プロシージャの入力引数の型。

VARCHAR2、BLOB、CLOB、FILE

output_type

ストアド・プロシージャの出力引数の型。

VARCHAR2、CLOB、FILE

rowid_parameter

ROWIDパラメータを含めるか。

TRUE/FALSE

format_parameter

formatパラメータを含めるか。

TRUE/FALSE

charset_parameter

charsetパラメータを含めるか。

TRUE/FALSE

プロシージャ

フィルタ処理に使用するストアド・プロシージャの名前を指定します。プロシージャには、PL/SQLストアド・プロシージャを指定できます。プロシージャは、セーフ・コールアウトになることも、セーフ・コールアウトをコールすることもできます。

rowid_parameter、format_parameterおよびcharset_parameterをFALSEに設定すると、プロシージャに次のシグネチャのいずれかを設定できます。

PROCEDURE(IN BLOB, IN OUT NOCOPY CLOB)
PROCEDURE(IN CLOB, IN OUT NOCOPY CLOB)
PROCEDURE(IN VARCHAR, IN OUT NOCOPY CLOB)
PROCEDURE(IN BLOB, IN OUT NOCOPY VARCHAR2)
PROCEDURE(IN CLOB, IN OUT NOCOPY VARCHAR2)
PROCEDURE(IN VARCHAR2, IN OUT NOCOPY VARCHAR2)
PROCEDURE(IN BLOB, IN VARCHAR2)
PROCEDURE(IN CLOB, IN VARCHAR2)
PROCEDURE(IN VARCHAR2, IN VARCHAR2)

1つ目の引数は、データストアによって出力される、フィルタ処理されていない行の内容です。2つ目の引数は、フィルタ処理済のドキュメント・テキストを戻すプロシージャ用の引数です。

プロシージャの属性は必須です。したがって、デフォルトはありません。

input_type

フィルタ・プロシージャの入力引数の型を指定します。次のいずれかの型を指定できます。

データ型

説明

procedure

フィルタのストアド・プロシージャの名前。

input_type

ストアド・プロシージャの入力引数の型。

output_type

ストアド・プロシージャの出力引数の型。

rowid_parameter

ROWIDパラメータを含めるか。

input_type属性は必須ではありません。指定しない場合は、BLOBがデフォルトになります。

output_type

フィルタ・プロシージャの出力引数の型を指定します。次のいずれかの型を指定できます。

データ型

説明

CLOB

出力引数は、IN OUT NOCOPY CLOBです。プロシージャでは、渡されたCLOBにフィルタ処理済の内容を書き込む必要があります。

VARCHAR2

出力引数は、IN OUT NOCOPY VARCHAR2です。プロシージャでは、渡されたVARCHAR2変数にフィルタ処理済の内容を書き込む必要があります。

FILE

出力引数は、IN VARCHAR2である必要があります。フィルタ・プロシージャの入力時、出力引数は一時ファイルの名前です。フィルタ・プロシージャでは、この名前が指定されたファイルにフィルタ処理済の内容を書き込む必要があります。

FILE出力型の使用は、プロシージャがファイルへの書込みができるセーフ・コールアウトの場合のみ有効です。

output_type属性は必須ではありません。指定しない場合は、CLOBがデフォルトになります。

rowid_ parameter

TRUEを指定するとフィルタ処理を行うドキュメントのROWIDが、入力および出力パラメータの前に、1つ目のパラメータとして渡されます。

たとえば、INPUT_TYPE BLOB、OUTPUT_TYPE CLOBおよびROWID_PARAMETER TRUEを使用したとします。フィルタ・プロシージャには次のようなシグネチャが必要です。

procedure(in rowid, in blob, in out nocopy clob)

この属性は、プロシージャが他の列または表のデータを要求する場合に有効です。この属性は必須ではありません。デフォルトはFALSEです。

format_parameter

TRUEを指定すると、フィルタ処理を行うドキュメントのフォーマット列の値が入力および出力パラメータの前にフィルタ・プロシージャに渡されます。ただし、ROWIDパラメータが有効な場合は、その後に渡されます。

索引付け時にフォーマット列の名前をパラメータ文字列に指定します。このとき、キーワード'format column <columnname>'を使用します。パラメータ・タイプは、IN VARCHAR2である必要があります。

フォーマット列の値は、ROWIDパラメータを介して読み取ることができますが、この属性では、単一フィルタが複数の表構造体で機能できます。これは、format属性が抽象化されており、表またはフォーマット列の名前を認識する必要がないためです。

FORMAT_PARAMETERは必須ではありません。デフォルトはFALSEです。

charset_parameter

TRUEを指定すると、フィルタ処理を行うドキュメントのキャラクタ・セット列の値が入力および出力パラメータの前にフィルタ・プロシージャに渡されます。ただし、ROWIDおよびformatパラメータが有効な場合は、その後に渡されます。

索引付け時にキャラクタ・セット列の名前をパラメータ文字列に指定します。このとき、キーワード'charset column <columnname>'を使用します。パラメータ・タイプは、IN VARCHAR2である必要があります。

CHARSET_PARAMETER属性は必須ではありません。デフォルトはFALSEです。

2.4.5.2 PROCEDURE_FILTERパラメータの順序

ROWID_PARAMETER、FORMAT_PARAMETERおよびCHARSET_PARAMETERは、すべて非依存型です。順序はrowid、format、次にcharsetとなります。ただし、フィルタ・プロシージャには、必要最小数のパラメータのみが渡されます。

たとえば、INPUT_TYPEがBLOBで、OUTPUT_TYPEがCLOBとします。フィルタ・プロシージャにすべてのパラメータが必要な場合、そのプロシージャのシグネチャは、次のように指定する必要があります。

(id IN ROWID, format IN VARCHAR2, charset IN VARCHAR2, input IN BLOB, output IN
OUT NOCOPY CLOB)

プロシージャで必要なパラメータがROWIDのみの場合、プロシージャのシグネチャは、次のように指定する必要があります。

(id IN ROWID,input IN BLOB, ouput IN OUT NOCOPY CLOB)

2.4.5.3 PROCEDURE_FILTERの実行要件

PROCEDURE_FILTERプリファレンスを使用して索引を作成するには、索引所有者が、プロシージャに対する実行権限を所有している必要があります。

2.4.5.4 PROCEDURE_FILTERエラー処理

フィルタ・プロシージャでは、通常のPL/SQL raise_application_error機能を使用して、必要に応じてエラーを戻すことができます。戻されたエラーは、フィルタの起動方法に応じて、CTX_USER_INDEX_ERRORSビューに伝播されるか、またはユーザーにレポートされます。

2.4.5.5 PROCEDURE_FILTERプリファレンスの例

次のシグネチャを使用して定義するフィルタ・プロシージャCTXSYS.NORMALIZEを考えてみます。

PROCEDURE NORMALIZE(id IN ROWID, charset IN VARCHAR2, input IN CLOB,
output IN OUT NOCOPY VARCHAR2);

このプロシージャをフィルタとして使用するには、フィルタ・プリファレンスを次のように設定します。

begin
ctx_ddl.create_preference('myfilt', 'procedure_filter');
ctx_ddl.set_attribute('myfilt', 'procedure', 'normalize');
ctx_ddl.set_attribute('myfilt', 'input_type', 'clob');
ctx_ddl.set_attribute('myfilt', 'output_type', 'varchar2');
ctx_ddl.set_attribute('myfilt', 'rowid_parameter', 'TRUE');
ctx_ddl.set_attribute('myfilt', 'charset_parameter', 'TRUE');
end;

2.5 レクサー型

レクサー・プリファレンスを使用して、索引付けするテキストの言語を指定します。レクサー・プリファレンスを作成するには、表2-13で説明するレクサー型のうちいずれか1つを使用する必要があります。

表2-13 レクサー型

データ型

説明

AUTO_LEXER

異なる複数言語のドキュメントを含む列の索引付けに使用するレクサー。

BASIC_LEXER

空白のデリミタ付きワードを使用する英語およびほとんどのヨーロッパ言語で、テキストからのトークンの抽出に使用するレクサー。

MULTI_LEXER

英語、ドイツ語および日本語など、異なる複数言語のドキュメントを含む表の索引付けに使用するレクサー。

CHINESE_VGRAM_LEXER

中国語テキストからのトークンの抽出に使用するレクサー。

CHINESE_LEXER

中国語テキストからのトークンの抽出に使用するレクサー。このレクサーは、CHINESE_VGRAMレクサーと比較して次の利点があります。

- 小型の索引の生成

- 問合せ応答時間の短縮

- 実ワード・トークンの生成による問合せ精度の向上

- ストップワードのサポート

JAPANESE_VGRAM_LEXER

日本語テキストからのトークンの抽出に使用するレクサー。

JAPANESE_LEXER

日本語テキストからのトークンの抽出に使用するレクサー。このレクサーは、JAPANESE_VGRAMレクサーと比較して次の利点があります。

- 小型の索引の生成

- 問合せ応答時間の短縮

- 実ワード・トークンの生成による精度の向上

KOREAN_MORPH_LEXER

韓国語テキストからのトークンの抽出に使用するレクサー。

USER_LEXER

特定言語を索引付けするために作成するレクサー。

WORLD_LEXER

異なる複数言語のドキュメントを含む表の索引付けに使用する、ドキュメントの言語を自動検出するレクサー。

2.5.1 AUTO_LEXER

AUTO_LEXER型は、異なる複数の言語のドキュメントを含む列の索引付けに使用します。言語の識別、単語のセグメント化、ドキュメントの分析、ステミングを実行します。AUTO_LEXERでは、これらのコンポーネントのカスタマイズも可能です。AUTO_LEXERによって生成される品詞情報は公開されないのでユーザーが使用することはできませんが、AUTO_LEXERによって状況依存またはタグ付きのステミングに使用されます。

この項では、次の項目について説明します。

- AUTO_LEXER言語サポート

- BASIC_LEXERから継承したAUTO_LEXER属性

- 言語に依存しないAUTO_LEXER属性

- 言語に依存するAUTO_LEXER属性

- AUTO_LEXERディクショナリ属性

2.5.1.1 AUTO_LEXER言語サポート

索引付け時に、AUTO_LEXERはドキュメントの言語を自動的に識別し、ドキュメントを適切にトークン化およびステミングします。AUTO_LEXERディクショナリを指定するには、ディクショナリのファイル名ではなく、作成したディクショナリの名前を使用します。

問合せ時には、問合せの言語が問合せテンプレートから継承されます。問合せテンプレートを使用しない場合、または問合せテンプレートで言語が指定されていない場合、問合せの言語はセッション言語から継承されます。表2-14に、サポートされている言語を示します。

注意:

ディクショナリ・データは、索引/ポリシーの作成時またはALTER INDEX時以降に処理されることに注意してください。ディクショナリ・データ形式のエラーは、索引/ポリシーの作成時またはALTER INDEX時に検出され、「DRG-13710: ディクショナリの構文エラー」のエラーとしてレポートされます。

表2-14 AUTO_LEXERでサポートされている言語

言語

言語

アラビア語

ノルウェー語(ニーノシュク)

ノルウェー語(ブークモール)

ペルシア語

クロアチア語

セルビア語

デンマーク語

スロバキア語

フィンランド語

スロベニア語

ヘブライ語

タイ語

カタロニア語

韓国語

チェコ語

ポーランド語

オランダ語

ポルトガル語

英語

ルーマニア語

フランス語

ロシア語

ドイツ語

中国語(簡体字) (注意を参照)

ギリシャ語

スペイン語

ハンガリー語

スウェーデン語

イタリア語

中国語(繁体字) (注意を参照)

日本語

トルコ語

注意:

文字列が30文字に制限されているため、中国語(繁体字)はtrad_chineseと指定する必要があります。中国語(簡体字)はsimp_chineseと指定します。

2.5.1.2 BASIC_LEXERから継承したAUTO_LEXER属性

AUTO_LEXERでは、次の属性はBASIC_LEXERの対応する属性と同じ方法で使用し、同じ効果があります。

- printjoin

- skipjoin

- base_letter

- base_letter_type

- override_base_letter

- mixed_case

- alternate_spelling

関連項目:

「BASIC_LEXER」と表2-19

2.5.1.3 言語に依存しないAUTO_LEXER属性

表2-15に、AUTO_LEXERで使用可能な、言語に依存しない属性を示します。

表2-15 言語に依存しないAUTO_LEXER属性

属性

属性値

説明

language

<characters>(空白で区切られた文字列)

入力ドキュメントの可能な言語を指定します。

言語を指定しないと、AUTO_LEXERは自動識別を実行しません。

1つの言語を指定した場合は、その言語が手動で設定され、AUTO_LEXERは自動識別を実行しません。

複数の言語を指定した場合、AUTO_LEXERは自動識別を実行しますが、識別する言語は指定した言語に限定されます。

注意: 言語の自動識別は統計に基づくため、本質的に不完全です。

deriv_stems

NO(使用禁止)

派生語のステミングを使用するかどうかを指定します。現在、派生語のステミングは英語でのみ使用可能です。したがって、それ以外の言語ではDERIV_STEMSは影響を与えません。

また、派生語のステミングが実行されると、タグ付けおよびタグ・ステミングは使用されません。その結果、タグ付けおよびタグ付きステミングのクライアント・ディクショナリは、ステミング結果に影響を与えません。

deriv_stems

YES(デフォルト)

派生語のステミングを使用するかどうかを指定します。現在、派生語のステミングは英語でのみ使用可能です。したがって、それ以外の言語ではDERIV_STEMSは影響を与えません。

また、派生語のステミングが実行されると、タグ付けおよびタグ・ステミングは使用されません。その結果、タグ付けおよびタグ付きステミングのクライアント・ディクショナリは、ステミング結果に影響を与えません。

german_decompound

NO(使用禁止)

ステマーでドイツ語の非コンパウンド化を実行するかどうかを指定します。

german_decompound

YES(デフォルト、ドイツ語のみで使用可能)

ステマーでドイツ語の非コンパウンド化を実行するかどうかを指定します。

index_stems

NO(使用禁止)

索引ステマーを使用するかどうかを指定します。

YESに指定すると、ドキュメント言語に対応するステマーが使用され、ドキュメントの再コールを最大化するようにステマーが常に構成されます。つまり、指定の問合せ語句の語幹を判断する問合せの際には、BASIC_WORDLISTのstemmer属性が無視され、AUTO_LEXERが使用するステマーが使用されるということです。

NOに指定すると、STEM演算子を使用する問合せでは、ワード・リスト・ステミングを使用してトークンのステミングを行います。ワード・リスト・ステミングが使用できない場合、STEM演算子は無視されます。

スウェーデン語およびオランダ語のドキュメントの場合、index_stemsをYESに設定すると、コンパウンド・ワード・ステミングが自動的に実行され、コンパウンドは常にコンポーネント語幹に分割されます。

index_stems

YES(デフォルト)

索引ステマーを使用するかどうかを指定します。

YESに指定すると、ドキュメント言語に対応するステマーが使用され、ドキュメントの再コールを最大化するようにステマーが常に構成されます。つまり、指定の問合せ語句の語幹を判断する問合せの際には、BASIC_WORDLISTのstemmer属性が無視され、AUTO_LEXERが使用するステマーが使用されるということです。

NOに指定すると、STEM演算子を使用する問合せでは、ワード・リスト・ステミングを使用してトークンのステミングを行います。ワード・リスト・ステミングが使用できない場合、STEM演算子は無視されます。

スウェーデン語およびオランダ語のドキュメントの場合、index_stemsをYESに設定すると、コンパウンド・ワード・ステミングが自動的に実行され、コンパウンドは常にコンポーネント語幹に分割されます。

base_letter

NO(使用禁止)

発音区別記号(ウムラウト、セディーユ、揚音アクセントなど)を持つ文字を、テキスト索引に格納する前に、基本形に変換するかどうかを指定します。

base_letter

YES(使用可能)

発音区別記号(ウムラウト、セディーユ、揚音アクセントなど)を持つ文字を、テキスト索引に格納する前に、基本形に変換するかどうかを指定します。

base_letter_type

GENERIC(デフォルト)

GENERIC値はデフォルトで、基本文字変換の際、全言語に適用する変換表を1つ使用します。

base_letter_type

SPECIFIC

GENERIC値はデフォルトで、基本文字変換の際、全言語に適用する変換表を1つ使用します。

override_base_letter

TRUE

FALSE(デフォルト)

base_letterとalternate_spellingを同時に有効にすると、シリアル変換によって予期しない結果が生じないように、base_letterのオーバーライドが必要になることがあります。

mixed_case

NO(使用禁止)

レクサーがトークンをテキストに表示されたままにするか、またはすべて大文字に変換するかを指定します。デフォルトではNO(トークンはすべて大文字に変換される)です。

mixed_case

YES(使用可能)

レクサーがトークンをテキストに表示されたままにするか、またはすべて大文字に変換するかを指定します。

alternate_spelling

GERMAN(ドイツ語の代替スペル)

ドイツ語の代替スペルを使用するかどうかを指定します。

alternate_spelling

SWEDISH(スウェーデン語の代替スペル)

スウェーデン語の代替スペルを使用するかどうかを指定します。

alternate_spelling

NONE(代替スペルなし、デフォルト)

デフォルトはNONEです。代替スペルが指定されていません。

printjoin

文字

英数字以外の文字を指定します。この文字は、ワード内(先頭、中程または末尾)にあれば英数字として処理され、テキスト索引にトークンとともに組み込まれます。連続しているprintjoinsも同様に処理されます。基本レクサー「printjoin」を参照してください。

skipjoin

文字

英数字以外の文字を指定します。この文字がワード内で使用されている場合は、そのワードを単一のトークンとして識別します。ただし、その文字はテキスト索引内にトークンとともに格納されません。基本レクサー「skipjoin」を参照してください。

2.5.1.4 言語に依存するAUTO_LEXER属性

AUTO_LEXERは、表2-14で指定された言語に、言語に依存する属性を提供します。

表2-16に、AUTO_LEXERで使用可能な、言語に依存する属性を示します。属性名の<language>変数には、表2-14に示すサポート対象の言語の名前を指定します。

注意:

属性名は30文字以下にする必要があります。したがって、<language>変数を指定するとき、場合によっては言語名を短縮しなければならないことがあります。たとえば、traditional_chineseはtrad_chineseに、simplified_chineseはsimp_chineseに短縮する必要があります。

表2-16 言語に依存するAUTO_LEXER属性

属性

属性値

説明

<language>_prefix_morphemes

characters(空白で区切られた文字列)

語形変化のプリフィックスを指定します。カッコで囲んだプリフィックスが基本形とともに保持されます。たとえば、(re) analyze。

<language>_suffix_morphemes

characters(空白で区切られた文字列)

語形変化のサフィックスを指定します。カッコで囲んだサフィックスが基本形とともに保持されます。たとえば、file(s)。

<language>_punctuations

characters(空白で区切られた文字列)

文を区切る句読点を指定します。

<language>_non_sent_end_abbr

characters(空白で区切られた文字列)

文を終了しない略称を指定します。

表2-17 言語に依存するAUTO_LEXER属性のデフォルト値

属性

言語

デフォルト値

<language>_prefix_morphemes

すべての言語

なし

<language>_suffix_morphemes

英語

s es er

<language>_suffix_morphemes

スペイン語

ba n s es

<language>_suffix_morphemes

ポルトガル語

s es

<language>_suffix_morphemes

ドイツ語

in innen

<language>_suffix_morphemes

フランス語

ne e

<language>_suffix_morphemes

その他のすべての言語

なし

<language>_punctuations

英語

. ? !

<language>_punctuations

カタロニア語、チェコ語、オランダ語、ギリシャ語、ハンガリー語、ポーランド語、ルーマニア語、ロシア語、トルコ語

. ? ! - --

<language>_punctuations

フランス語、ドイツ語、イタリア語、韓国語、ポルトガル語、スペイン語、スウェーデン語

, ? !

<language>_punctuations

日本語

<language>_punctuations

中国語(簡体字)

短縮形: simp_chinese

<language>_punctuations

中国語(繁体字)

短縮形: trad_chinese

<language>_non_sent_end_abbr

ポーランド語、ルーマニア語、ロシア語、トルコ語

e.g. i.e. viz. a.k.a.

<language>_non_sent_end_abbr

カタロニア語

R.D. pp.

<language>_non_sent_end_abbr

チェコ語、ギリシャ語、ハンガリー語

e.g. i.e. viz. a.k.a.

<language>_non_sent_end_abbr

オランダ語

f.eks. f. eks. inkl. sr. skuesp. sekr. prof. mus. lrs. logr. kgl. insp. hr. hrs. gdr. frk. fr. forst. forf. fm. fmd. esq. d.æ d.æ. d.y. dr. dir. dept.chef civiling. bibl. ass. admn. adj.Skt.H.K.H.

<language>_non_sent_end_abbr

trad_chinese

e.g. i.e. viz. a.k.a. Adm.Br.Capt.Cdr.Cmdr.Col.Comdr.Comdt.Dr. Drs.Fr.Gen.Gov.Hon.Ins.Lieut.Lt.Maj.Messrs. Mdm.Mlle.Mlles.Mme. Mmes.Mr. Mrs. Ms. Pres.Prof. Profs.Pvt.Rep.Rev. Revd.Secy.Sen.Sgt.Sra.Srta.St. Ste.

<language>_non_sent_end_abbr

フランス語

c.-à-d. cf. e.g. ex. i.e. Pr.Prof. M. Mr. Mrs. Mme Mmes Mlle Mlles Mgr.MM.Lieut.Gén.Dr. Col.

<language>_non_sent_end_abbr

ドイツ語

ca. bzw. e.g. i.e. inkl.Fr.Frl.Mme. Mile.Mag.Stud.Tel.Hr.Hrn. apl.Prof.Prof.

<language>_non_sent_end_abbr

イタリア語

e.g. i.e. pag. pagg. tel.T.V. N.H. N.D. comm. col. cav. cap. geom. gen. ing. jr. mr. mons. mar. magg. prof. prof.ssa prof.sse proff. pres. perito ind. p. p.i. sr. s.ten. sottoten. sig. serg. sen. segr. sac. ten. uff. vicepres. vesc.S.S. S.E. avv. app. amm. arch. on. dir. dott. dott.ssa dr. rag.

<language>_non_sent_end_abbr

韓国語

e.g. i.e. a.k.a.Dr. Mr. Mrs. Ms. Prof.

<language>_non_sent_end_abbr

ポルトガル語

cf.Cf. e.g. E.g. i.é. I.é. p.ex.P.ex. pág. pag.Pág.Pag. tel. telef.Tel.Telef. sr. srs. sra. mr. eng. dr. dra.Dr. Dra.V.Ex.V.Exa. S. N. S. Mrs. Eng.Ex.Exa.

<language>_non_sent_end_abbr

スペイン語

e.g. i.e. ej. p.ej. pág. págs. tel. tfno.Fr.Ldo.Lda.Lic.Pbro. D. Dña.Dr. Dres.Dra.Dras.Dn.Mons.Rvdo.Sto.Sta.Sr. Srs.Srta.Srtas.Sres.Sra.Sras.Excmo.Excma.Ilmo.Ilma.Sto.Sta.

<language>_non_sent_end_abbr

スウェーデン語

inkl. prof. hrr. hr.Hrr.Hr. dr.Dr.

言語に依存するAUTO_LEXER属性の例

例2-1 ディクショナリと索引を関連付けるctx_ddl.create_preference

exec CTX_DDL.CREATE_PREFERENCE('A_LEX', 'AUTO_LEXER');
exec CTX_ANL. ADD_DICTIONARY('MY_ENGLISH', 'ENGLISH', lobloc);
select * from CTX_USR_ANL_DICTS;
exec CTX_DDL.SET_ATTRIBUTE('A_LEX', 'english_dictionary', 'MY_ENGLISH'
);

例2-2 <language>_prefix_morphemes

ctx_ddl.set_attribute(
'a_lex', 'english_prefix_morphemes', 're'
);

例2-3 <language>_suffix_morphemes

ctx_ddl.set_attribute(
'a_lex', 'english_suffix_morphemes', 's es'
);

例2-4 <language>_punctuations

ctx_ddl.set_attribute(
'a_lex', 'english_punctuations', '. ? !'
);

例2-5 <language>_non_sentence_ending_abbrev

ctx_ddl.set_attribute(
'a_lex', 'english_non_sentence_ending_abbrev', 'e.g. a.k.a. Dr.'
);

2.5.1.5 AUTO_LEXERディクショナリ属性

ディクショナリ属性は言語固有であり、言語ディクショナリの名前の設定に使用されます。<language>_dictionary属性には、表2-18のリストに従って、サポートされる言語の言語ディクショナリを指定します。

<language>_dictionary属性には、次の機能があります。

- 属性の<language>値には、場所ではなくディクショナリ名のみを指定します。たとえばdutch_dictionaryは、オランダ語のディクショナリが使用されることを示します。

- set_attributeメソッドはディクショナリをロードするわけではなく、ディクショナリ名を記録するだけです。したがって、ディクショナリが必要なときには、指定した場所にディクショナリがある必要があります。そうでない場合は、エラーが発生します。

表2-18 AUTO_LEXERディクショナリ属性でサポートされている言語

言語属性

言語属性

カタロニア語

韓国語

チェコ語

ポーランド語

オランダ語

ポルトガル語

英語

ルーマニア語

フランス語

ロシア語

ドイツ語

中国語(簡体字)

ギリシャ語

スペイン語

ハンガリー語

スウェーデン語

イタリア語

中国語(繁体字)

日本語

トルコ語

2.5.2 BASIC_LEXER

BASIC_LEXER型を使用して、英語およびサポートされているその他すべての空白のデリミタ付き言語のテキスト索引を作成するために、トークンを識別します。

また、BASIC_LEXERを使用して、拡張キャラクタ・セットを持つ空白のデリミタ付き言語に対する基本文字変換、コンポジット・ワードの索引付け、大/小文字を区別した索引付けおよび代替スペルを使用可能にします。

英語およびフランス語では、BASIC_LEXERを使用してテーマの索引付けを使用可能にできます。

注意:

索引付けの前にレクサーがトークンに対して実行した処理(文字の削除や基本文字変換など)は、問合せ時に問合せ語句に対しても実行されます。これによって、問合せ語句は、テキスト索引内のトークンのフォームと確実に一致します。

BASIC_LEXERは、任意のデータベース・キャラクタ・セットをサポートしています。

この項では、次の項目について説明します。

- BASIC_LEXER属性

- ステミング・ユーザー・ディクショナリ

- BASIC_LEXERの例

2.5.2.1 BASIC_LEXER属性

BASIC_LEXERには、表2-19に示す属性があります。

表2-19 BASIC_LEXER属性

属性

属性値

continuation

文字

numgroup

文字

numjoin

文字

printjoin

文字

punctuation

文字

skipjoin

文字

startjoin

トークンの先頭にある英数字以外の文字(文字列)

endjoin

トークンの末尾にある英数字以外の文字(文字列)

whitespace

文字(文字列)

newline

NEWLINE(\n)

CARRIAGE_RETURN(\r)

base_letter

NO(使用禁止)

base_letter

YES(使用可能)

base_letter_type

GENERIC(デフォルト)

base_letter_type

SPECIFIC

override_base_letter

TRUE

FALSE(デフォルト)

mixed_case

NO(使用禁止)

mixed_case

YES(使用可能)

composite

DEFAULT(コンポジット・ワードの索引付けなし、デフォルト)

composite

GERMAN(ドイツ語のコンポジット・ワード索引付け)

composite

DUTCH(オランダ語のコンポジット・ワードの索引付け)

index_stems

文字列または文字列値で、数値を使用します。

NONE

英語

DERIVATIONAL

オランダ語

フランス語

ドイツ語

イタリア語

スペイン語

カタロニア語

チェコ語

ギリシャ語

ハンガリー語

ポーランド語

ポルトガル語

ルーマニア語

ロシア語

SWEDISH (「注意」を参照)

DERIVATIONAL_NEW (「注意」を参照)

DUTCH_NEW (「注意」を参照)

ENGLISH_NEW (「注意」を参照)

FRENCH_NEW (「注意」を参照)

GERMAN_NEW (「注意」を参照)

ITALIAN_NEW (「注意」を参照)

SPANISH_NEW (「注意」を参照)

トルコ語

注意: index_stemsがSWEDISHまたはDUTCH_NEW値に設定されている場合は、非コンパウンド・ワード・ステミングが自動的に実行されます。

注意: このリリースで新規追加された7つのindex_stem属性(サフィックスが_NEWの属性)を使用すると、新しいステマー属性を利用できる一方、以前のリリースのOracle Textとの下位互換性が維持されます。

index_themes

YES(使用可能)

index_themes

NO(使用禁止、デフォルト)

index_text

YES(使用可能、デフォルト)

index_text

NO(使用禁止)

prove_themes

YES(使用可能、デフォルト)

prove_themes

NO(使用禁止)

theme_language

AUTO(デフォルト)

theme_language

(任意のグローバリゼーション・サポート対象言語)

alternate_spelling

GERMAN(ドイツ語の代替スペル)

alternate_spelling

DANISH(デンマーク語の代替スペル)

alternate_spelling

SWEDISH(スウェーデン語の代替スペル)

alternate_spelling

NONE(代替スペルなし、デフォルト)

new_german_spelling

YES

NO(デフォルト)

continuation

ワードが次の行に続き、そのワードを1つのトークンとして索引付けする必要があることを示す文字を指定します。最も一般的な連結文字はハイフン'-'および円記号'\'です。

numgroup

数字列の中で使用する場合に、1つの大きな数字の集まりをいくつかの桁にグループ分けすることを示す文字を指定します。

たとえば、カンマ','は、数字列の中で使用されている場合、千の位のグループ分けを示すことがあるため、numgroup文字として定義されることがあります。

numjoin

数字列の中で使用する場合に、Oracle Textでは数字の文字列を1つの単位またはワードとみなして索引付けするように文字を指定します。

たとえば、ピリオド'.'は、数字列の中で使用される場合、小数点を示すことがあるため、numjoin文字として定義されることがあります。

注意:

numjoinおよびnumgroupのデフォルト値は、データベースに指定されたグローバリゼーション・サポート初期化パラメータによって決定されます。

通常、BASIC_LEXERのレクサー・プリファレンスを作成する場合、numjoinまたはnumgroupのいずれにも値を指定する必要はありません。

printjoins

英数字以外の文字を指定します。この文字は、ワード内(先頭、中程または末尾)にあれば英数字として処理され、テキスト索引にトークンとともに組み込まれます。連続しているprintjoinsも同様に処理されます。

たとえば、ハイフン'-'およびアンダースコア'_'文字がprintjoinとして定義されている場合、pseudo-intellectualや_file_などの語句は、pseudo-intellectualおよび_file_としてテキスト索引に格納されます。

注意:

printjoin文字が同時にpunctuation文字としても定義されている場合は、その文字の直後の文字が標準の英数字であるか、printjoin文字またはskipjoin文字として定義されていると、その文字は英数字としてのみ処理されます。

punctuations

ワードの末尾に使用される場合に、文の終わりを示す英数字以外の文字のリストを指定します。デフォルトは、ピリオド'.'、疑問符'?'および感嘆符'!'です。

punctuationとして定義されている文字は、テキストの索引付け前にトークンから削除されます。ただし、punctuation文字がprintjoin文字としても定義されている場合は、その文字がトークンの最後の文字である場合にのみ削除されます。

たとえば、ピリオド(.)がprintjoin文字とpunctuation文字の両方に定義されている場合は、索引付けおよび問合せのときに次のように変換されます。

トークン

索引付けされたトークン

.doc

.doc

dog.doc

dog.doc

dog..doc

dog..doc

dog.

dog

dog...

dog..

また、BASIC_LEXERは、punctuation文字をnewline文字およびwhitespace文字と組み合せて使用し、文/段落検索用の文デリミタおよび段落デリミタを決定します。

skipjoins

英数字以外の文字を指定します。この文字がワード内で使用されている場合は、そのワードを単一のトークンとして識別します。ただし、その文字はテキスト索引内にトークンとともに格納されません。

たとえば、ハイフン文字'-'がskipjoinとして定義されている場合、ワードpseudo-intellectualは、テキスト索引にpseudointellectualとして格納されます。

注意:

printjoinおよびskipjoinは相互に排他的です。同じ文字を両方の属性に指定できません。

startjoins/endjoins

startjoinは、トークンの最初の文字として検出された場合、明示的にトークンの始まりを識別する文字を指定します。その文字は、そのすぐ後に続く他のstartjoin文字と同様に、トークンに対するテキスト索引内のエントリに含まれます。また、startjoin文字列の最初のstartjoin文字は、前のトークンを暗黙的に終了させます。

endjoinは、トークンの最後の文字として検出された場合、明示的にトークンの終わりを識別する文字を指定します。その文字は、そのすぐ後に続く他のstartjoin文字と同様に、トークンに対するテキスト索引内のエントリに含まれます。

次の規則は、startjoinsとendjoinsの両方に適用されます。

- startjoin/endjoinに指定された文字は、BASIC_LEXERのその他の属性には指定できません。

- startjoin/endjoin文字は、トークンの最初または最後にのみ使用できます。

printjoinは、endjoinおよびstartjoinと異なり、使用場所の制限はありません。たとえば、$がstartjoinまたはprintjoinの場合、$35は1つのトークンとして索引付けられますが、endjoinとして定義されている場合は2つのトークンとして索引付けられます。

whitespace

トークン間で空白として扱われる文字を指定します。BASIC_LEXERは、文および段落検索用の文デリミタとして機能する文字列を識別するため、whitespace文字をpunctuation文字およびnewline文字と組み合せて使用します。

whitespaceの事前定義のデフォルト値は、spaceとtabです。これらの値は変更できません。whitespaceとして文字を指定すると、これらのデフォルト値に追加されます。

newline

テキストの行の終わりを示す文字を指定します。BASIC_LEXERは、文および段落検索用の段落デリミタとして機能する文字列を識別するため、newline文字をpunctuation文字およびwhitespace文字と組み合せて使用します。

newlineに対する有効値は、NEWLINEおよびCARRIAGE_RETURN(改行)のみです。デフォルトはNEWLINEです。

base_letter

発音区別記号(ウムラウト、セディーユ、揚音アクセントなど)を持つ文字を、テキスト索引に格納する前に、基本形に変換するかどうかを指定します。デフォルトはNO(基本文字変換は使用禁止)です。基本文字変換およびbase_letter_typeの詳細は、「基本文字変換」を参照してください。

base_letter_type

GENERICまたはSPECIFICを指定します。

GENERIC値はデフォルトで、基本文字変換の際、全言語に適用する変換表を1つ使用します。基本文字変換およびbase_letter_typeの詳細は、「基本文字変換」を参照してください。

override_base_letter

base_letterとalternate_spellingを同時に有効にすると、シリアル変換によって予期しない結果が生じないように、base_letterのオーバーライドが必要になることがあります。「代替スペル機能のオーバーライド」を参照してください。デフォルトはFALSEです。

mixed_case

レクサーがトークンをテキストに表示されたままにするか、またはすべて大文字に変換するかを指定します。デフォルトではNO(トークンはすべて大文字に変換される)です。

注意:

Oracle Textでは、ワード問合せを、問合せされる索引の大/小文字の区別に確実に一致させます。そのため、テキスト索引に対して大/小文字の区別を有効にすると、その索引に対する問合せでは常に大文字と小文字が区別されます。

composite

GERMANまたはDUTCHテキストに対して、コンポジット・ワードの索引付けを使用可能または使用禁止にするかどうかを指定します。デフォルトはDEFAULT(コンポジット・ワードの索引付けは使用禁止)です。

ドイツ語ディクショナリで通常1エントリであるワードは、複合語幹に分割されませんが、ディクショナリのエントリでないワードは、複合語幹に分割されます。

索引付けされた複合語幹を取得するには、ステミング問合せ(例: $bahnhof)を入力する必要があります。ワードリスト・ステマーの言語は、複合語幹の言語と一致している必要があります。

2.5.2.2 ステミング・ユーザー・ディクショナリ

独自の言語のユーザー・ディクショナリを作成し、ワードの分解方法をカスタマイズできます。表2-20にこのユーザー・ディクショナリを示します。

表2-20 ステミング・ユーザー・ディクショナリ

ディクショナリ

stemmer

$ORACLE_HOME/ctx/data/frlx/drfr.dct

フランス語

$ORACLE_HOME/ctx/data/delx/drde.dct

ドイツ語

$ORACLE_HOME/ctx/data/nllx/drnl.dct

オランダ語

$ORACLE_HOME/ctx/data/itlx/drit.dct

イタリア語

$ORACLE_HOME/ctx/data/eslx/dres.dct

スペイン語

$ORACLE_HOME/ctx/data/enlx/dren.dct

英語と派生語

ステミング・ユーザー・ディクショナリは、表2-20の言語以外の言語に対してはサポートされていません。

このユーザー・ディクショナリの書式は、次のとおりです。

output term <tab> input term

分解されたワードの個々の部分は、#文字で区切る必要があります。ドイツ語のワードHauptbahnhofに対するエントリの例を次に示します。

Hauptbahnhof<tab>Haupt#Bahnhof
Hauptbahnhofes<tab>Haupt#Bahnhof
Hauptbahnhof<tab>Haupt#Bahnhof
Hauptbahnhoefe<tab>Haupt#Bahnhof

index_themes

英語またはフランス語のテーマ情報の索引付けには、YESを指定します。これによってABOUT問合せがより正確になります。index_themes属性およびindex_text属性の両方にNOを指定することはできません。デフォルトはNOです。

このパラメータは、CTXCATも含めたすべての索引タイプに対してTRUEに設定できます。CATSEARCHでABOUT問合せを入力する場合は、CONTEXT文法による問合せテンプレートを使用してください。

prove_themes

テーマを検証するには、YESを指定します。テーマの検証では、ドキュメント内の関連テーマが検索されます。関連テーマが検索されない場合、親テーマはそのドキュメントから排除されます。

テーマの検証は大規模なドキュメントに対して使用可能です。ワード数の少ない短い記述のテキストで親テーマが検証されることはほとんどなく、結果的にABOUT問合せによる再コールでのパフォーマンスが低下します。

テーマの検証によって、ABOUT問合せの精度が向上し、再コール数が減少(戻される行が減少)します。ABOUT問合せでの再コールが増加し、検索精度が低下する可能性がある場合は、テーマの検証を使用禁止にできます。デフォルトはYESです。

prove_themes属性は、CONTEXT索引およびCTXRULE索引に対してサポートされています。

theme_language

index_themesがYESに設定されている場合は、テーマ生成にどのナレッジ・ベースを使用するかを指定します。index_themesがNOに設定されている場合は、このパラメータを設定しても何も影響はありません。

任意のグローバリゼーション・サポート対象言語またはAUTOを指定します。指定する言語のナレッジ・ベースが必要です。このリリースで提供されているのは、英語とフランス語のナレッジ・ベースのみです。それ以外の言語では、独自のナレッジ・ベースを作成できます。

関連項目:

「Oracle Textのユーティリティ」の「言語固有のナレッジ・ベースの追加」

デフォルトはAUTOであり、システムがこのパラメータを環境の言語に対応するように設定します。

index_stems

語幹索引付けに使用するステマーを指定します。次のステマーのいずれかを選択できます: なし、アラビア語、カタロニア語、クロアチア語、チェコ語、デンマーク語、派生語、オランダ語、英語、フィンランド語、フランス語、ドイツ語、ヘブライ語、ハンガリー語、イタリア語、ノルウェー語、ポーランド語、ポルトガル語、ルーマニア語、スロバキア語、スロベニア語、スペイン語、スウェーデン語。

索引付け時に、トークンが通常の形式に加えて、単一の基本形にステミングされます。語幹索引付けによって、ステミング($)問合せ(例: $computed)の問合せパフォーマンスが向上します。

注意:

index_stems属性を、表2-19「BASIC_LEXER属性」に示すIDが8から33のいずれかの言語に設定すると、BASIC_WORDLISTのstemmer属性は無視され、問合せ時にはBASIC_LEXERで使用するステマーが使用されて、指定の問合せ語句の語幹が判断されます。

index_text

ワード情報の索引付けには、YESを指定します。index_themes属性およびindex_text属性の両方にNOを指定することはできません。

デフォルトはYESです。

alternate_spelling

GERMAN、DANISH、SWEDISHのいずれかを指定して、これらの言語のうちの1つの代替スペルを使用可能にします。代替スペルを使用可能にすると、任意の代替形式でワードを問合せできます。

デフォルトでは、代替スペルはオフになっていますが、Oracleがadmin/defaultsで提供している言語固有のスクリプト(ドイツ語: drdefd.sql、オランダ語: drdefdk.sql、スウェーデン語: drdefs.sql)では、代替スペルがオンになっています。インストールでこれらのスクリプトを使用している場合、代替スペルがオンになります。ただし、代替スペルがない場合は、NONEを指定します。Oracle Textが使用する代替スペルの規則については、「代替スペル」を参照してください。

new_german_spelling

BASIC_LEXERを使用する問合せが、ドイツ語のワードの従来のスペルと改良された(新規の)スペルを戻すかどうかを指定します。new_german_spellingがYESに設定されている場合、従来の形式と新規の形式のワードが索引付けされます。NOに設定されている場合、ワードは問合せに指定されたとおりに索引付けされます。デフォルトはNOです。

関連項目:

" ドイツ語の新スペル"

2.5.2.3 BASIC_LEXERの例

次の例では、printjoin文字を設定し、BASIC_LEXERを使用してテーマの索引付けを使用禁止にします。

begin
ctx_ddl.create_preference('mylex', 'BASIC_LEXER');
ctx_ddl.set_attribute('mylex', 'printjoins', '_-');
ctx_ddl.set_attribute ( 'mylex', 'index_themes', 'NO');
ctx_ddl.set_attribute ( 'mylex', 'index_text', 'YES');
end;

テーマを索引付けせず、前述のprintjoinキャラクタ・セットを使用して索引を作成するには、次の文を入力します。

create index myindex on mytable ( docs )
indextype is ctxsys.context
parameters ( 'LEXER mylex' );

2.5.3 MULTI_LEXER

MULTI_LEXERは、異なる複数の言語のドキュメントを含むテキスト列の索引付けに使用します。たとえば、このレクサーを使用して、英語、ドイツ語および日本語のドキュメントを格納するテキスト列を索引付けします。

このレクサーには属性がありません。

元表に言語列が存在する必要があります。マルチ言語表に索引付けするには、索引の作成時に言語列を指定します。

CTX_DDL.CREATE_PREFERENCEを使用して、マルチレクサー・プリファレンスを作成します。CTX_DDL.ADD_SUB_LEXERプロシージャを使用して、そのマルチレクサー・プリファレンスに言語固有のレクサーを追加します。

索引付け時に、MULTI_LEXERは、各行の言語列の値を調べ、言語固有のレクサーに切り替えた後、ドキュメントを処理します。

WORLD_LEXERレクサーは、マルチ言語の索引付けも実行しますが、個別の言語列に対して実行する必要はありません(つまり、自動言語検出が実行されます)。WORLD_LEXERの詳細は、「WORLD_LEXER」を参照してください。

この項では、次の項目について説明します。

- MULTI_LEXERの制限事項

- MULTI_LEXERマルチ言語のストップリスト

- MULTI_LEXERの例

- MULTI_LEXERとマルチ言語表の問合せ

2.5.3.1 MULTI_LEXERの制限事項

MULTI_LEXERには、異なる言語に対して指定するサブレクサーが必要です。すでに言語がわかっている場合は、BASIC_LEXERをサブレクサーとして使用できます。言語が不明な場合は、MULTI_LEXERではなくAUTO_LEXERを使用します。このため、MULTI_LEXERのサブレクサーとしてAUTO_LEXERを使用しても、それが無効な場合には効果がありません。

したがって、次の文は機能せず、DRG-13003のエラーがスローされます。

exec ctx_ddl.create_preference ('multilexer', 'MULTI_LEXER');
exec ctx_ddl..create_preference('autolexer', AUTO_LEXER);
exec ctx_ddl.add_sub_lexer('multilexer', 'GERMAN', 'autolexer');

2.5.3.2 MULTI_LEXERマルチ言語のストップリスト

MULTI_LEXERを使用する場合は、索引付け用のマルチ言語のストップリストも使用できます。

関連項目:

"マルチ言語のストップリスト"

2.5.3.3 MULTI_LEXERの例

次のように、主キー、テキスト列および言語列を持つマルチ言語表を作成します。

create table globaldoc (
doc_id number primary key,
lang varchar2(3),
text clob
);

保持するドキュメントのほとんどが英語で、ドイツ語または日本語のドキュメントが少しある表を考えてみます。3つの言語を処理するには、英語、ドイツ語および日本語に対して1つずつの、3つのサブレクサーを作成する必要があります。

ctx_ddl.create_preference('english_lexer','basic_lexer');
ctx_ddl.set_attribute('english_lexer','index_themes','yes');
ctx_ddl.set_attribute('english_lexer','theme_language','english');

ctx_ddl.create_preference('german_lexer','basic_lexer');
ctx_ddl.set_attribute('german_lexer','composite','german');
ctx_ddl.set_attribute('german_lexer','mixed_case','yes');
ctx_ddl.set_attribute('german_lexer','alternate_spelling','german');

ctx_ddl.create_preference('japanese_lexer','japanese_vgram_lexer');

マルチレクサー・プリファレンスを作成します。

ctx_ddl.create_preference('global_lexer', 'multi_lexer');

格納されているドキュメントのほとんどが英語であるため、CTX_DDL.ADD_SUB_LEXER を使用して、英語のレクサーをデフォルトにします。

ctx_ddl.add_sub_lexer('global_lexer','default','english_lexer');

ここで、CTX_DDL.ADD_SUB_LEXER プロシージャを使用して、ドイツ語および日本語のレクサーをそれぞれの言語に追加します。また、言語列がISO標準言語コード639-2で表現されている場合には、これらを代替値として追加します。

ctx_ddl.add_sub_lexer('global_lexer','german','german_lexer','ger');
ctx_ddl.add_sub_lexer('global_lexer','japanese','japanese_lexer','jpn');

次のように、PARAMETERS句にマルチレクサー・プリファレンスおよび言語列を指定して、索引globalxを作成します。

create index globalx on globaldoc(text) indextype is ctxsys.context
parameters ('lexer global_lexer language column lang');

2.5.3.4 MULTI_LEXERとマルチ言語表の問合せ

問合せ時に、マルチレクサー・プリファレンスはセッションの言語設定を調べ、その言語に対してサブレクサー・プリファレンスを使用して問合せを解析します。

言語が設定されていない場合は、デフォルト・レクサーが使用されます。言語が設定されている場合は、問合せが解析され、通常に実行されます。索引には複数言語からのトークンが含まれているため、このような問合せはドキュメントを複数の言語で戻すことができます。問合せを特定の言語に制限する場合は、言語列に構造化句を使用します。

言語列がAUTOに設定されている場合、マルチレクサーは、表2-21に示すサポート対象言語についてドキュメントの言語を識別します。

表2-21 MULTI_LEXERの自動識別でサポートされている言語

言語

言語

アラビア語

日本語

カタロニア語

韓国語

中国語(繁体字)

ノルウェー語

クロアチア語

ポーランド語

チェコ語

ポルトガル語

デンマーク語

ルーマニア語

オランダ語

ロシア語

英語

セルビア語(ラテン)

ドイツ語

スロバキア語

ギリシャ語

スウェーデン語

ヘブライ語

タイ語

ハンガリー語

トルコ語

イタリア語

2.5.4 CHINESE_VGRAM_LEXER

CHINESE_VGRAM_LEXER型は、テキスト索引作成用の中国語テキストのトークンを識別します。

CHINESE_VGRAM_LEXERには次の属性があります。

表2-22 CHINESE_VGRAM_LEXER属性

属性

属性値

mixed_case_ASCII7

ASCII7テキストの大/小文字混在の検索を有効にします(例: catおよびCat)。使用可能な値はYESまたはNO(デフォルト)です。

データベースで次のいずれかのキャラクタ・セットを使用する場合は、このレクサーを使用できます。

- AL32UTF8

- ZHS16CGB231280

- ZHS16GBK

- ZHS32GB18030

- ZHT32EUC

- ZHT16BIG5

- ZHT32TRIS

- ZHT16HKSCS

- ZHT16MSWIN950

- UTF8

2.5.5 CHINESE_LEXER

CHINESE_LEXER型は、テキスト索引作成用の中国語(繁体字および簡体字)テキストのトークンを識別します。

このレクサーは、CHINESE_VGRAM_LEXERと比較して次の利点があります。

- 小型の索引の生成

- 問合せ応答時間の短縮

- 実ワード・トークンの生成による問合せ精度の向上

- ストップワードのサポート

CHINESE_LEXERは異なるアルゴリズムを使用してトークンを生成するため、索引付けに要する時間は、CHINESE_VGRAM_LEXERを使用した場合より長くなります。

データベース・キャラクタ・セットが、Oracleでサポートしている中国語キャラクタ・セットまたはUnicodeキャラクタ・セットである場合は、このレクサーを使用できます。

CHINESE_LEXERには次の属性があります。

表2-23 CHINESE_LEXER属性

属性

属性値

mixed_case_ASCII7

ASCII7テキストの大/小文字混在の検索を有効にします(例: catおよびCat)。使用可能な値はYESまたはNO(デフォルト)です。

中国語レクサーで使用される既存のレキシコン(辞書)を変更するか、ctxlcコマンドを使用して独自の中国語レキシコンを作成できます。

関連項目:

「Oracle Textのユーティリティ」の「字句コンパイラ(ctxlc)」

2.5.6 JAPANESE_VGRAM_LEXER

JAPANESE_VGRAM_LEXER型は、テキスト索引作成用の日本語テキストのトークンを識別します。このレクサーは、STEM($)演算子をサポートしています。

このレクサーの属性は、次のとおりです。

表2-24 JAPANESE_VGRAM_LEXER属性

属性

属性値

delimiter

全角のスラッシュや全角の中黒など、日本語の特定の空白文字を考慮するかどうかを指定します。ALLはこれらの文字を考慮します。NONEはこれらの文字を無視します。デフォルトはNONEです。

mixed_case_ASCII7

ASCII7テキストの大/小文字混在の検索を有効にします(例: catおよびCat)。使用可能な値はYESまたはNO(デフォルト)です。

bigram

日本語のVGRAMレクサーでbigramを有効にするには、TRUEを指定します。bigramモードでは、2-グラム・トークンのみが生成されて内部のワイルドカード検索は実行されないため、日本語の問合せの実行が高速になります。しかし、bigramモードでは、大量のトークンに対応するために索引サイズを大きくする必要があります。ディスク領域より問合せのパフォーマンスが重視される場合に、bigramモードを有効にしてください。デフォルトはFALSEです。

データベースで次のいずれかのキャラクタ・セットを使用する場合は、このレクサーを使用できます。

- JA16SJIS

- JA16EUC

- UTF8

- AL32UTF8

- JA16EUCTILDE

- JA16EUCYEN

- JA16SJISTILDE

- JA16SJISYEN

2.5.7 JAPANESE_LEXER

JAPANESE_LEXER型は、テキスト索引作成用の日本語テキストのトークンを識別します。このレクサーは、STEM($)演算子をサポートしています。

このレクサーは、JAPANESE_VGRAM_LEXERと比較して次の利点があります。

- 小型の索引の生成

- 問合せ応答時間の短縮

- 実ワード・トークンの生成による問合せ精度の向上

JAPANESE_LEXERは異なるアルゴリズムを使用してトークンを生成するため、索引付けに要する時間は、JAPANESE_VGRAM_LEXERを使用した場合より長くなります。

日本語レクサーで使用される既存のレキシコン(辞書)を変更するか、ctxlcコマンドを使用して独自の日本語レキシコンを作成できます。

関連項目:

「Oracle Textのユーティリティ」の「字句コンパイラ(ctxlc)」

このレクサーの属性は、次のとおりです。

表2-25 JAPANESE_LEXER属性

属性

属性値

delimiter

全角のスラッシュや全角の中黒など、日本語の特定の空白文字を無視するには、NONEまたはALLを指定します。デフォルトはNONEです。

mixed_case_ASCII7

ASCII7テキストの大/小文字混在の検索を有効にします(例: catおよびCat)。使用可能な値はYESまたはNO(デフォルト)です。

JAPANESE_LEXERは、次のキャラクタ・セットをサポートしています。

- JA16SJIS

- JA16EUC

- UTF8

- AL32UTF8

- JA16EUCTILDE

- JA16EUCYEN

- JA16SJISTILDE

- JA16SJISYEN

テキスト索引の作成用にJAPANESE_LEXERを指定すると、JAPANESE_LEXERによって、文はワードに変換されます。

たとえば、次の複合語(「自然言語処理」)があるとします。

このワードは、次の3つのトークンとして索引付けされます。

文をワードに変換するために、内部ディクショナリが参照されます。内部ディクショナリでワードが検索できない場合、Oracle Textでは、JAPANESE_VGRAM_LEXERを使用して変換します。

2.5.8 KOREAN_MORPH_LEXER

KOREAN_MORPH_LEXER型は、テキスト索引作成用の韓国語テキストのトークンを識別します。

この項では、次の項目について説明します。

- KOREAN_MORPH_LEXERディクショナリ

- KOREAN_MORPH_ LEXER Unicodeのサポート

- KOREAN_MORPH_LEXER属性

- KOREAN_MORPH_ LEXERの制限事項

- KOREAN_MORPH_LEXERの例: composite属性の設定

2.5.8.1 KOREAN_MORPH_LEXERディクショナリ

KOREAN_MORPH_LEXERは次の4つのディクショナリを使用します。

表2-26 KOREAN_MORPH_LEXERディクショナリ

ディクショナリ

ファイル

システム

$ORACLE_HOME/ctx/data/kolx/drk2sdic.dat

文法

$ORACLE_HOME/ctx/data/kolx/drk2gram.dat

ストップワード

$ORACLE_HOME/ctx/data/kolx/drk2xdic.dat

ユーザー定義

$ORACLE_HOME/ctx/data/kolx/drk2udic.dat

文法、ユーザー定義およびストップワードの各ディクショナリは、KSC 5601またはMSWIN949キャラクタ・セットを使用して作成する必要があります。これらのディクショナリは定義済のルールを使用して変更できます。システム・ディクショナリは変更できません。

未登録のワードは、ユーザー定義ディクショナリ・ファイルに追加できます。新しいワードを指定するルールは、このファイルに含まれています。

データベースで次のいずれかのキャラクタ・セットを使用する場合は、KOREAN_MORPH_LEXERを使用できます。

- KO16KSC5601

- KO16MSWIN949

- UTF8

- AL32UTF8

KOREAN_MORPH_LEXERは、大/小文字混在の検索を有効にします。

2.5.8.2 KOREAN_MORPH_ LEXER Unicodeのサポート

KOREAN_MORPH_LEXERには、次のUnicodeサポートがあります。

- Unicodeで定義されたKSC5601以外の韓国語の文字のワード

- 追加文字

関連項目:

追加文字の詳細は、『Oracle Databaseグローバリゼーション・サポート・ガイド』を参照してください。

韓国語ドキュメントには、KSC5601以外の文字が使用されているものがあります。KOREAN_MORPH_LEXERは、11,172個の有効な韓国語(ハングル)文字をすべて認識できるため、このような文書も、UTF8またはAL32UTF8キャラクタ・セットを使用することで解析できます。

サロゲート文字を抽出するには、データベースにAL32UTF8キャラクタ・セットを使用します。デフォルトでは、KOREAN_MORPH_LEXERは、シリーズごとの1つのトークンとして、すべてのシリーズのサロゲート文字を抽出します。

韓国語Unicodeサポートの制限事項

ハンジャからハングル(韓国語)への変換の場合、KOREAN_MORPH_LEXERは、KSC5601に定義された4,888個のハンジャ文字のみをサポートしています。

2.5.8.3 KOREAN_MORPH_LEXER属性

KOREAN_MORPH_LEXERを使用する場合は、次の属性を指定できます。

表2-27 KOREAN_MORPH_LEXER属性

属性

属性値

verb_adjective

動詞、形容詞および副詞の索引付けに対して、TRUEまたはFALSEを指定します。デフォルトはFALSEです。

one_char_word

1つの音節の索引付けに対して、TRUEまたはFALSEを指定します。デフォルトはFALSEです。

number

数の索引付けに対して、TRUEまたはFALSEを指定します。デフォルトはFALSEです。

user_dic

ユーザー・ディクショナリの索引付けに対して、TRUEまたはFALSEを指定します。デフォルトはTRUEです。

stop_dic

ストップワード・ディクショナリの使用に対して、TRUEまたはFALSEを指定します。デフォルトはTRUEです。ストップワード・ディクショナリは、KOREAN_MORPH_LEXERに属します。

composite

コンポジット名詞の索引付けスタイルを指定します。

コンポジット名詞のみを索引付けするには、COMPOSITE_ONLYを指定します。

コンポジット名詞の名詞コンポーネントをすべて索引付けするには、NGRAMを指定します。

コンポジット名詞自体の他にコンポジット名詞の単一名詞コンポーネントを索引付けするには、COMPONENT_WORDを指定します。デフォルトはCOMPONENT_WORDです。

NGRAMとCOMPONENT_WORDの違いについては、"「KOREAN_MORPH_LEXERの例: composite属性の設定」を参照してください。

morpheme

語形分析に対して、TRUEまたはFALSEを指定します。FALSEを設定すると、ドキュメント内の空白などのデリミタで分割されたワードからトークンが作成されます。デフォルトはTRUEです。

to_upper

英語の大文字への変換に対して、TRUEまたはFALSEを指定します。デフォルトはTRUEです。

hanja

ハンジャ文字を索引付けするには、TRUEを指定します。FALSEに設定すると、ハンジャ文字はハングル文字に変換されます。デフォルトはFALSEです。

long_word

韓国語の16音節を超える長いワードを索引付けするには、TRUEを指定します。デフォルトはFALSEです。

japanese

Unicode(2バイト地域でのみ使用)の日本語の文字を索引付けするには、TRUEを指定します。デフォルトはFALSEです。

english

英数字文字列を索引付けするには、TRUEを指定します。デフォルトはTRUEです。

2.5.8.4 KOREAN_MORPH_ LEXERの制限事項

KOREAN_MORPH_LEXERでは、文セクションおよび段落セクションはサポートされていません。

2.5.8.5 KOREAN_MORPH_LEXERの例: composite属性の設定

composite属性を使用すると、コンポジット名詞の索引付け方法を制御できます。

NGRAMの例

composite属性に対してNGRAMを指定すると、コンポジット名詞は、すべてのコンポーネント・トークンとともに索引付けされます。たとえば、次のようなコンポジット名詞(「情報処理規則」)があるとします。

この名詞は、次の6つのトークンとして索引付けされます。

NGRAMを次のように指定して索引付けします。

begin
ctx_ddl.create_preference('my_lexer','KOREAN_MORPH_LEXER');
ctx_ddl.set_attribute('my_lexer','COMPOSITE','NGRAM');
end

索引を作成するには、次のようにします。

create index koreanx on korean(text) indextype is ctxsys.context
parameters ('lexer my_lexer');

COMPONENT_WORDの例

composite属性に対してCOMPONENT_WORDを指定すると、コンポジット名詞およびそのコンポーネントが索引付けされます。たとえば、次のようなコンポジット名詞(「情報処理規則」)があるとします。

この名詞は、次の4つのトークンとして索引付けされます。

COMPONENT_WORDを次のように指定して索引付けできます。

begin
ctx_ddl.create_preference('my_lexer','KOREAN_MORPH_LEXER');
ctx_ddl.set_attribute('my_lexer','COMPOSITE','COMPONENT_WORD');
end

索引を作成するには、次のようにします。

create index koreanx on korean(text) indextype is ctxsys.context
parameters ('lexer my_lexer');

2.5.9 USER_LEXER

USER_LEXERを使用して、ユーザーの言語に固有のレクサー処理ソリューションをプラグインします。こうするとOracle Textでサポートされていない言語のレクサーを定義できます。また、サポートされている言語のレクサーがユーザーのアプリケーションに不適当な場合は、新しいレクサーを定義できます。

この項では、次の項目について説明します。

- USER_LEXERルーチン

- USER_LEXERの制限事項

- USER_LEXER属性

- INDEX_PROCEDURE

- INPUT_TYPE

- QUERY_PROCEDURE

- トークンのXMLとしてのコード化

- Locationを使用しないユーザー定義索引付けプロシージャのXML Schema

- Locationを使用したユーザー定義索引付けプロシージャのXML Schema

- ユーザー定義レクサーの問合せプロシージャのXML Schema

2.5.9.1 USER_LEXERルーチン

ユーザー定義レクサーをOracle Textに登録するには、次の2つのルーチンの指定が必要です。

表2-28 USER_LEXERのユーザー定義ルーチン

ユーザー定義ルーチン

説明

索引付けプロシージャ

ドキュメントとストップワードのトークン化を行うストアド・プロシージャ(PL/SQL)。出力は、この項に記載されているとおりのXMLドキュメントであることが必要です。

問合せプロシージャ

問合せワードのトークン化を行うストアド・プロシージャ(PL/SQL)。出力は、この項に記載されているとおりのXMLドキュメントであることが必要です。

2.5.9.2 USER_LEXERの制限事項

USER_LEXERでは、次の機能はサポートされていません。

- CTX_DOC.GISTおよびCTX_DOC.THEMES

- CTX_QUERY.HFEEDBACK

- ABOUT問合せ演算子

- CTXRULE索引タイプ

- VGRAM索引付けアルゴリズム

2.5.9.3 USER_LEXER属性

USER_LEXERには次の属性があります。

表2-29 USER_LEXER属性

属性

属性値

INDEX_PROCEDURE

ストアド・プロシージャの名前。デフォルトはありません。

INPUT_TYPE

VARCHAR2またはCLOB。デフォルトはCLOBです。

QUERY_PROCEDURE

ストアド・プロシージャの名前。デフォルトはありません。

2.5.9.4 INDEX_PROCEDURE

このコールバック・ストアド・プロシージャは、ドキュメントまたはストップリスト・オブジェクトにあるストップワードのトークン化が必要になると、Oracle Textによってコールされます。

要件

このプロシージャには、PL/SQLストアド・プロシージャを指定できます。

索引所有者は、このストアド・プロシージャに対するEXECUTE権限が必要です。

このストアド・プロシージャは、索引の作成後に置換したり削除することはできません。索引の削除後に、このストアド・プロシージャを置換または削除することはできます。

パラメータ

ユーザー定義レクサーの索引付けプロシージャでは、次の2つのインタフェースがサポートされています。

- VARCHAR2インタフェース

- CLOBインタフェース

制限事項

このプロシージャは、次のいずれの操作も実行できません。

- ロールバック

- 現行トランザクションの明示的または暗黙的なコミット

- その他のトランザクション制御文の入力

- セッション言語または地域の変更

XMLドキュメントのルート要素トークンの子要素は、トークン化されるドキュメントまたはストップワードでトークンが出現した順序で戻される必要があります。

このストアド・プロシージャの動作は、すべてのパラメータに対して決定的であることが必要です。

2.5.9.5 INPUT_TYPE

ユーザー定義レクサーの索引付けプロシージャでは、2つのインタフェースがサポートされています。1つのインタフェースは、ドキュメントまたはストップワードと、XMLとしてコード化された対応するトークンをVARCHAR2データ型で渡し、もう1つのインタフェースはCLOBデータ型を使用します。この属性は、INDEX_PROCEDURE属性で指定されたストアド・プロシージャが実装するインタフェースを示します。

- VARCHAR2インタフェース

- CLOBインタフェース

2.5.9.5.1 VARCHAR2インタフェース

表2-30では、トークン化するドキュメントまたはストップリスト・オブジェクトのストップワードをVARCHAR2でOracle Textからストアド・プロシージャに渡し、同様に、トークンをVARCHAR2でストアド・プロシージャからOracle Textに渡すインタフェースについて説明します。

ユーザー定義レクサーの索引付けプロシージャでは、索引付けする列の全ドキュメントが32512バイト以下で、そのトークンが32512バイト以下で表される場合は、このインタフェースを使用してください。この場合、表2-31に示したCLOBインタフェースも使用できますが、通常、VARCHAR2インタフェースはCLOBインタフェースよりも高速に実行されます。

このプロシージャは、次のパラメータを使用して定義する必要があります。

表2-30 INDEX_PROCEDURESのVARCHAR2インタフェース

パラメータ順序

パラメータ・モード

パラメータのデータ型

説明

1

IN

VARCHAR2

トークン化するドキュメントまたはストップリスト・オブジェクトのストップワード。

ドキュメントが32512バイトを超える場合は、ドキュメント・レベルの索引付けエラーがレポートされます。

2

IN OUT

VARCHAR2

XMLとしてコード化されたトークン。

ドキュメントにトークンが含まれていない場合は、NULLを戻すか、または戻されるXMLドキュメントのトークン要素に子要素を含めないでください。

データのバイト長は、32512以下にしてください。

パフォーマンスを改善するには、このパラメータの宣言時にNOCOPYヒントを使用してください。NOCOPYヒントによって、データは値ではなく参照によって渡されます。

このプロシージャが戻すXMLドキュメントには不要なwhitespace文字(通常、可読性の向上のために使用する)を含めないでください。これによって、XMLドキュメントのサイズが縮小され、結果として送信時間が短縮されます。

パフォーマンス向上のために、index_procedureの実行時に、対応するXML Schemaに対するXMLドキュメントの妥当性はチェックされません。

このパラメータは、パフォーマンスの目的でIN OUTになっています。ストアド・プロシージャでINの値を指定する必要はありません。

3

IN

BOOLEAN

トークン化するドキュメントでのトークンの文字オフセットと文字長がOracle Textで必要な場合、このパラメータはTRUEに設定されます。

トークン化するドキュメントで検出されたトークンの文字オフセットと文字長がOracle Textで不要な場合、このパラメータはFALSEに設定されます。これは、XML属性のoffとlenを使用できないことを意味します。

2.5.9.5.2 CLOBインタフェース

表2-31では、トークン化するドキュメントまたはストップリスト・オブジェクトのストップワードをCLOBでOracle Textからストアド・プロシージャに渡し、同様に、トークンをCLOBでストアド・プロシージャからOracle Textに渡すCLOBインタフェースについて説明します。

ユーザー定義レクサーの索引付けプロシージャでは、索引付けする列の1つ以上のドキュメントが32512バイトを超える場合、または対応するトークンが32512バイトを超えるバイト数で表される場合は、このインタフェースを使用してください。

表2-31 INDEX_PROCEDUREのCLOBインタフェース

パラメータ順序

パラメータ・モード

パラメータのデータ型

説明

1

IN

CLOB

トークン化するドキュメントまたはストップリスト・オブジェクトのストップワード。

2

IN OUT

CLOB

XMLとしてコード化されたトークン。

ドキュメントにトークンが含まれていない場合は、NULLを戻すか、または戻されるXMLドキュメントのトークン要素に子要素を含めないでください。

パフォーマンスを改善するには、このパラメータの宣言時にNOCOPYヒントを使用してください。NOCOPYヒントによって、データは値ではなく参照によって渡されます。

このプロシージャが戻すXMLドキュメントには不要なwhitespace文字(通常、可読性の向上のために使用する)を含めないでください。これによって、XMLドキュメントのサイズが縮小され、結果として送信時間が短縮されます。

パフォーマンス向上のために、index_procedureの実行時に、対応するXML Schemaに対するXMLドキュメントの妥当性はチェックされません。

このパラメータは、パフォーマンスの目的でIN OUTになっています。ストアド・プロシージャでINの値を指定する必要はありません。INの値は、常に切り捨てられたCLOBとなります。

3

IN

BOOLEAN

トークン化するドキュメントでのトークンの文字オフセットと文字長がOracle Textで必要な場合、このパラメータはTRUEに設定されます。

トークン化するドキュメントで検出されたトークンの文字オフセットと文字長がOracle Textで不要な場合、このパラメータはFALSEに設定されます。これは、XML属性のoffとlenを使用できないことを意味します。

1番目と2番目のパラメータは一時CLOBです。これらのCLOBロケータを他のロケータ変数に割り当てないでください。仮パラメータのCLOBロケータを他のロケータ変数に割り当てると、一時CLOBの新しいコピーが作成され、パフォーマンスに影響を与えます。

2.5.9.6 QUERY_PROCEDURE

このコールバック・ストアド・プロシージャは、問合せ内のワードのトークン化が必要になると、Oracle Textによってコールされます。問合せ内の空白で区切られた文字のグループ(問合せ演算子を除く)は、ワードとして識別されます。

要件

このプロシージャには、PL/SQLストアド・プロシージャを指定できます。

索引所有者は、このストアド・プロシージャに対するEXECUTE権限が必要です。

このストアド・プロシージャは、索引の作成後に置換したり削除することはできません。索引の削除後に、このストアド・プロシージャを置換または削除することはできます。

制限事項

このプロシージャは、次のいずれの操作も実行できません。

- ロールバック

- 現行トランザクションの明示的または暗黙的なコミット

- その他のトランザクション制御文の入力

- セッション言語または地域の変更

XMLドキュメントのルート要素トークンの子要素は、トークン化される問合せワードでトークンが出現した順序で戻される必要があります。

このストアド・プロシージャの動作は、すべてのパラメータに対して決定的であることが必要です。

パラメータ

表2-32では、ユーザー定義レクサーの問合せプロシージャのインタフェースについて説明します。

表2-32 ユーザー定義レクサーの問合せプロシージャXML Schema属性

パラメータ順序

パラメータ・モード

パラメータのデータ型

説明

1

IN

VARCHAR2

トークン化する問合せワード。

2

IN

CTX_ULEXER.WILDCARD_TAB

問合せワード内のワイルド・カード文字(%および_)の文字オフセット。Oracle Textによって渡された問合せワードにワイルド・カード文字が含まれていない場合、この索引付き表は空になります。

問合せワード内のワイルド・カード文字は、ワイルド・カード問合せ機能が正しく実行されるように、戻されるトークンに保持する必要があります。

文字オフセットは0(ゼロ)を基準にしています。オフセット情報はUSC-2コードポイント・セマンティクスに準拠します。

3

IN OUT

VARCHAR2

XMLとしてコード化されたトークン。

問合せワードにトークンが含まれていない場合は、NULLを戻すか、または戻されるXMLドキュメントのトークン要素に子要素を含めないでください。

データの長さは、32512バイト以下であることが必要です。

2.5.9.7 トークンのXMLとしてのコード化

ユーザーのストアド・プロシージャが戻すトークンの順序は、XML 1.0ドキュメントで表す必要があります。このXMLドキュメントは、次の各項で示すXML Schemaに対して妥当であることが必要です。

- Locationを使用しないユーザー定義索引付けプロシージャのXML Schema

- Locationを使用したユーザー定義索引付けプロシージャのXML Schema

- ユーザー定義レクサーの問合せプロシージャのXML Schema

制限事項

この機能のパフォーマンスを向上させるために、Oracle TextのXMLパーサーは妥当性チェックを実行しません。また、XMLの機能に完全に適合する正規のパーサーではありません。つまり、最小限のXML機能がサポートされます。次のXML機能はサポートされません。

- ドキュメント・タイプ宣言(例: <!DOCTYPE [...]>)およびエンティティ宣言。lt、gt、amp、quotおよびaposの組込みエンティティのみ参照できます。

- CDATAセクション

- コメント

- 処理命令

- XML宣言(例: <?xml version="1.0" ?>)

- 名前空間

- 対応するXML Schema以外で定義された要素および属性の使用

- 文字参照(例: &#x099F;)

- xml:space属性

- xml:lang属性

2.5.9.8 Locationを使用しないユーザー定義索引付けプロシージャのXML Schema

この項では、3番目のパラメータがFALSEの場合に、ユーザー定義レクサーの索引付けプロシージャが戻すXMLドキュメントに適用される追加の制約について説明します。戻されるXMLドキュメントは、次のXML Schemaに対して妥当であることが必要です。

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">

<xsd:element name="tokens">
<xsd:complexType>
<xsd:sequence>
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element name="eos" type="EmptyTokenType"/>
<xsd:element name="eop" type="EmptyTokenType"/>
<xsd:element name="num" type="xsd:token"/>
<xsd:group ref="IndexCompositeGroup"/>
</xsd:choice>
</xsd:sequence>
</xsd:complexType>
</xsd:element>

<!--
Enforce constraint that compMem element must be preceeded by word element
or compMem element for indexing
-->
<xsd:group name="IndexCompositeGroup">
<xsd:sequence>
<xsd:element name="word" type="xsd:token"/>
<xsd:element name="compMem" type="xsd:token" minOccurs="0"
maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:group>

<!-- EmptyTokenType defines an empty element without attributes -->
<xsd:complexType name="EmptyTokenType"/>

</xsd:schema>

次に、このXML Schemaによって適用される制約をいくつか説明します。

- ルート要素はトークンです。これは必須です。DIRECT_DATASTOREに属性はありません。

- ルート要素には、子要素を指定しないことも、1つ以上の子要素を指定することも可能です。子要素には、eos、eop、num、wordおよびcompMemのいずれかの要素を指定できます。これらの子要素は、特定のトークン型を表します。

- compMem要素は、word要素またはcompMem要素の後に指定する必要があります。

- eos要素とeop要素に属性はありません。これらは空要素であることが必要です。

- num、wordおよびcompMem 要素に属性はありません。これらの要素の内容は、Oracle Textによって正規化されます。whitespace文字の空白文字への変換、隣接する複数の空白文字の単一空白文字への縮小、先頭および末尾の空白の削除、エンティティ参照の置換、および64バイトへの切捨てが行われます。

表2-33では、前述のXML Schemaに定義されている要素名について説明します。

表2-33 ユーザー定義レクサーの索引付けプロシージャXML Schema要素名

要素

説明

word

単純なワード・トークンを表します。この要素の内容はワード自体です。このトークンがストップワードまたは非ストップワードとして識別され、これに対応した処理が行われます。

num

数値トークンを表します。この要素の内容は数値自体です。ストップリスト・プリファレンスにNUMBERSがストップクラスとして追加されている場合、このトークンはストップワードとして処理されます。それ以外の場合、このトークンはワード・トークンと同様に処理されます。

このトークン型のサポートはオプションです。このトークン型をサポートしない場合、NUMERBSストップクラスの追加による影響はありません。

eos

文の終わりを表すトークンです。この情報は、WITHIN SENTENCE問合せをサポートするために使用されます。

このトークン型のサポートはオプションです。このトークン型をサポートしない場合、SENTENCEセクションに対する問合せは期待どおりに実行されません。

eop

段落の終わりを表すトークンです。この情報は、WITHIN PARAGRAPH問合せをサポートするために使用されます。

このトークン型のサポートはオプションです。このトークン型をサポートしない場合、PARAGRAPHセクションに対する問合せは期待どおりに実行されません。

compMem

暗黙的なワード・オフセットが前のワード・トークンと同じであるという点を除いて、word要素と同じです。

このトークン型のサポートはオプションです。

例

ドキュメント: Vom Nordhauptbahnhof und aus der Innenstadt zum Messegelände.

トークン:

<tokens>
<word> VOM </word>
<word> NORDHAUPTBAHNHOF </word>
<compMem>NORD</compMem>
<compMem>HAUPT </compMem>
<compMem>BAHNHOF </compMem>
<compMem>HAUPTBAHNHOF </compMem>
<word> UND </word>
<word> AUS </word>
<word> DER </word>
<word> INNENSTADT </word>
<word> ZUM </word>
<word> MESSEGELÄNDE </word>
<eos/>
</tokens>

ドキュメント: Oracle Database 11g Release 1

トークン:

<tokens>
<word> ORACLE11G</word>
<word> RELEASE </word>
<num> 1 </num>
</tokens>

ドキュメント: WHERE salary<25000.00 AND job = 'F&B Manager'

トークン:

<tokens>
<word> WHERE </word>
<word> salary&lt;2500.00 </word>
<word> AND </word>
<word> job </word>
<word> F&amp;B </word>
<word> Manager </word>
</tokens>

2.5.9.9 Locationを使用したユーザー定義索引付けプロシージャのXML Schema

この項では、3番目のパラメータがTRUEの場合に、ユーザー定義レクサーの索引付けプロシージャが戻すXMLドキュメントに適用される追加の制約について説明します。戻されるXMLドキュメントは、次のXML Schemaに対して妥当であることが必要です。

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">

<xsd:element name="tokens">
<xsd:complexType>
<xsd:sequence>
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element name="eos" type="EmptyTokenType"/>
<xsd:element name="eop" type="EmptyTokenType"/>
<xsd:element name="num" type="DocServiceTokenType"/>
<xsd:group ref="DocServiceCompositeGroup"/>
</xsd:choice>
</xsd:sequence>
</xsd:complexType>
</xsd:element>

<!--
Enforce constraint that compMem element must be preceeded by word element
or compMem element for document service
-->
<xsd:group name="DocServiceCompositeGroup">
<xsd:sequence>
<xsd:element name="word" type="DocServiceTokenType"/>
<xsd:element name="compMem" type="DocServiceTokenType" minOccurs="0"
maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:group>

<!-- EmptyTokenType defines an empty element without attributes -->
<xsd:complexType name="EmptyTokenType"/>

<!--
DocServiceTokenType defines an element with content and mandatory attributes
-->
<xsd:complexType name="DocServiceTokenType">
<xsd:simpleContent>
<xsd:extension base="xsd:token">
<xsd:attribute name="off" type="OffsetType" use="required"/>
<xsd:attribute name="len" type="xsd:unsignedShort" use="required"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>

<xsd:simpleType name="OffsetType">
<xsd:restriction base="xsd:unsignedInt">
<xsd:maxInclusive value="2147483647"/>
</xsd:restriction>
</xsd:simpleType>

</xsd:schema>

このXML Schemaによって適用される制約は次のとおりです。

- ルート要素はトークンです。これは必須です。DIRECT_DATASTOREに属性はありません。

- ルート要素には、子要素を指定しないことも、1つ以上の子要素を指定することも可能です。子要素には、eos、eop、num、wordおよびcompMemのいずれかの要素を指定できます。これらの子要素は、特定のトークン型を表します。

- compMem要素は、word要素またはcompMem要素の後に指定する必要があります。

- eos要素とeop要素に属性はありません。これらは空要素であることが必要です。

- num、wordおよびcompMem要素には、2つの必須属性offとlenがあります。これらの要素の内容は、Oracle Textによって正規化されます。whitespace文字の空白文字への変換、隣接する複数の空白文字の単一空白文字への縮小、先頭および末尾の空白の削除、エンティティ参照の置換、および64バイトへの切捨てが行われます。

- off属性の値には0(ゼロ)から2147483647の整数を指定する必要があります。

- len属性の値には0(ゼロ)から65535の整数を指定する必要があります。

表2-33では、前述のXML Schemaに定義されている要素型について説明します。

表2-34では、前述のXML Schemaに定義されている属性について説明します。

表2-34 ユーザー定義レクサーの索引付けプロシージャXML Schema属性

属性

説明

off

トークン化するドキュメントに出現するトークンの文字オフセットを表します。

このオフセットは、データストアでフェッチされたドキュメントではなく、ユーザー定義レクサーの索引付けプロシージャに渡された文字ドキュメントに対するものです。データストアでフェッチされたドキュメントは、フィルタ・オブジェクトまたはセクション・グループ・オブジェクト(あるいはその両方)で事前処理されてから、ユーザー定義レクサーの索引付けプロシージャに渡される場合があります。

トークン化するドキュメントの最初の文字のオフセットは0(ゼロ)です。オフセット情報はUSC-2コードポイント・セマンティクスに準拠します。

len

トークン化するドキュメントに出現するトークンの文字長を表します(SQL機能のLENGTHのセマンティクスと同じです)。

この長さは、データストアでフェッチされたドキュメントではなく、ユーザー定義レクサーの索引付けプロシージャに渡された文字ドキュメントに対するものです。データストアでフェッチされたドキュメントは、フィルタ・オブジェクトまたはセクション・グループで事前処理されてから、ユーザー定義レクサーの索引付けプロシージャに渡される場合があります。

長さの情報はUSC-2コードポイント・セマンティクスに準拠します。

off属性の値とlen属性の値の合計は、トークン化するドキュメントの合計文字数以下である必要があります。これによって、ドキュメントのオフセットと参照される文字がドキュメント境界内に保持されます。

例

ドキュメント: User-defined Lexer

トークン:

<tokens>
<word off="0" len="4"> USE </word>
<word off="5" len="7"> DEF </word>
<word off="13" len="5"> LEX </word>
<eos/>
</tokens>

2.5.9.10 ユーザー定義レクサーの問合せプロシージャのXML Schema

この項では、ユーザー定義レクサーの問合せプロシージャが戻すXMLドキュメントに適用される追加の制約について説明します。戻されるXMLドキュメントは、次のXML Schemaに対して妥当であることが必要です。

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">

<xsd:element name="tokens">
<xsd:complexType>
<xsd:sequence>
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element name="num" type="QueryTokenType"/>
<xsd:group ref="QueryCompositeGroup"/>
</xsd:choice>
</xsd:sequence>
</xsd:complexType>
</xsd:element>

<!--
Enforce constraint that compMem element must be preceeded by word element
or compMem element for query
-->
<xsd:group name="QueryCompositeGroup">
<xsd:sequence>
<xsd:element name="word" type="QueryTokenType"/>
<xsd:element name="compMem" type="QueryTokenType" minOccurs="0"
maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:group>

<!--
QueryTokenType defines an element with content and with an optional attribute
-->
<xsd:complexType name="QueryTokenType">
<xsd:simpleContent>
<xsd:extension base="xsd:token">
<xsd:attribute name="wildcard" type="WildcardType" use="optional"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>

<xsd:simpleType name="WildcardType">
<xsd:restriction base="WildcardBaseType">
<xsd:minLength value="1"/>
<xsd:maxLength value="64"/>
</xsd:restriction>
</xsd:simpleType>

<xsd:simpleType name="WildcardBaseType">
<xsd:list>
<xsd:simpleType>
<xsd:restriction base="xsd:unsignedShort">
<xsd:maxInclusive value="378"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:list>
</xsd:simpleType>

</xsd:schema>

次に、このXML Schemaによって適用される制約をいくつか説明します。

- root要素はトークンです。これは必須です。DIRECT_DATASTOREに属性はありません。

- root要素には、子要素を指定しないことも、1つ以上の子要素を指定することも可能です。子要素には、numまたはwordのいずれかの要素を指定できます。これらの子要素は、特定のトークン型を表します。

- compMem要素は、word要素またはcompMem要素の後に指定する必要があります。
compMemの目的は、USER_LEXERの問合せで、1つの問合せに対し複数の形式を戻せるようにすることです。たとえば、ユーザー定義のレクサーにより、銀行という語がBANK(FINANCIAL)およびBANK(RIVER)として索引付けされている場合、問合せプロシージャはword要素として1つ目の語句を戻し、compMem要素として2つ目の語句を戻すことができます。

<tokens>
<word>BANK(RIVER)</word>
<compMem>BANK(FINANCIAL)</compMem>
</tokens>

compMem要素の詳細は、表2-35、表2-35を参照してください。

- numおよびword要素には、1つのオプション属性wildcardがあります。これらの要素の内容は、Oracle Textによって正規化されます。whitespace文字の空白文字への変換、隣接する複数の空白文字の単一空白文字への縮小、先頭および末尾の空白の削除、エンティティ参照の置換、および64バイトへの切捨てが行われます。

- wildcard属性の値は、空白で区切られた整数のリストです。整数の最小数は1で、最大数は64です。0から378の整数値を指定する必要があります。リスト内の整数の順序は任意に指定できます。

表2-33では、前述のXML Schemaに定義されている要素型について説明します。

表2-35では、前述のXML Schemaに定義されている属性について説明します。

表2-35 ユーザー定義レクサーの問合せプロシージャXML Schema属性

属性

説明

compMem

word要素と同じですが、暗黙的なワード・オフセットは前のwordトークンと同じです。Oracle Textでは、このトークンは、前のwordトークン、および問合せ演算子EQUIVを使用して後のcompMemトークンと同一に扱われます。

wildcard

問合せ内の%文字または_文字は、ユーザーがエスケープしないかぎり、他の文字で置換されるワイルド・カード文字とみなされます。問合せ内のワイルド・カード文字は、ワイルド・カード問合せ機能が正しく実行されるように、トークン化時に保持する必要があります。この属性は、要素の内容に含まれるワイルド・カード文字の文字オフセットを表します(SQL機能のLENGTHのセマンティクスと同じです)。これらのオフセットは、要素の内容に対して実行される正規化に応じて調整されます。オフセットは、%文字または_文字のいずれかを指し示す必要があります。

要素の内容に含まれる最初の文字のオフセットは0(ゼロ)です。オフセット情報はUSC-2コードポイント・セマンティクスに準拠します。

トークンにワイルド・カード文字が含まれていない場合、この属性は指定できません。

例

問合せワード: pseudo-%morph%

トークン:

<tokens>
<word> PSEUDO </word>
<word wildcard="1 7"> %MORPH% </word>
</tokens>

Query word: <%>

トークン:

<tokens>
<word wildcard="5"> &lt;%&gt; </word>
</tokens>

2.5.10 WORLD_LEXER

WORLD_LEXERは、異なる複数の言語のドキュメントを含むテキスト列の索引付けに使用します。たとえば、このレクサーを使用して、英語、日本語およびドイツ語のドキュメントを格納するテキスト列を索引付けします。

WORLD_LEXERは、ドキュメントの言語を自動的に識別するという点で、MULTI_LEXERと異なります。MULTI_LEXERと異なり、WORLD_LEXERは、元表に言語列を設定したり、索引の作成時に言語列を指定したりする必要がありません。さらに、MULTI_LEXERと同様に、サブレクサーを使用する必要もありません。( 「MULTI_LEXER」を参照してください。)

WORLD_LEXERは、すべてのデータベース・キャラクタ・セットをサポートしており、キャラクタ・セットがUnicodeベースの言語についてはUnicode 5.0標準をサポートしています。WORLD_LEXERが機能できる言語のリストについては、「Worldレクサー機能」を参照してください。

WORLD_VGRAM_LEXERには次の属性があります。

表2-36 WORLD_LEXER属性

属性

属性値

mixed_case

テキストの大/小文字混在の検索を有効にします(例: catおよびCat)。使用可能な値はYESまたはNO(デフォルト)です。

WORLD_LEXERを使用して索引を作成する例を次に示します。

exec ctx_ddl.create_preference('MYLEXER', 'world_lexer');
create index doc_idx on doc(data)
indextype is CONTEXT
parameters ('lexer MYLEXER
stoplist CTXSYS.EMPTY_STOPLIST');

2.6 ワードリスト型

ワードリスト・プリファレンスによって、使用している言語に対するステミングやファジー・マッチングなどの問合せオプションを使用可能にします。また、ワードリスト・プリファレンスを使用すると、サブストリングやプリフィックス索引付けを使用可能にでき、CONTAINSおよびCATSEARCHによるワイルド・カード問合せのパフォーマンスが改善されます。

ワードリスト・プリファレンスを作成するには、BASIC_WORDLISTを使用する必要があります。使用できるのはこの型のみです。

- BASIC_WORDLIST

- BASIC_WORDLISTの例

2.6.1 BASIC_WORDLIST

BASIC_WORDLIST型を使用して、テキスト索引に対するステミングおよびファジー・マッチングを使用可能にしたり、プリフィックス索引を作成することができます。

関連項目:

Oracle Text CONTAINS問合せ演算子

表2-37に、BASIC_WORDLISTの属性を示します。

表2-37 BASIC_WORDLIST属性

属性

属性値

stemmer

使用する言語ステマーを指定します。次のステマーのいずれかを指定できます。

NULL(ステミングなし)

ENGLISH(英語の語形変化)

DERIVATIONAL(英語の派生語)

DUTCH

FRENCH

GERMAN

ITALIAN

SPANISH

AUTO(データベース・セッション言語から導出される、ステミングに対する自動言語識別。データベース・セッション言語がAMERICANまたはENGLISHの場合は、ENGLISHステマーが使用されます。日本語は自動検出されません。)

JAPANESE

fuzzy_match

使用するファジー・マッチング・クラスタを指定します。次のいずれかの型を指定できます。

AUTO(ステミングに対する自動言語識別)

CHINESE_VGRAM

DUTCH

ENGLISH

FRENCH

GENERIC

GERMAN

ITALIAN

JAPANESE_VGRAM

KOREAN

OCR

SPANISH

fuzzy_score

デフォルトのファジー・スコアの下限を指定します。1から80の数を指定します。この数値未満のスコアを含むテキストは戻されません。デフォルトは60です。

fuzzy_numresults

ファジー拡張の最大数を指定します。0から5,000の数を指定します。デフォルトは100です。

substring_index

Oracle TextにTRUEを指定すると、サブストリング索引が作成されます。サブストリング索引を使用すると、%ing や %benz%のような左側切捨ておよび左右切捨てのワイルド・カード問合せが改善されます。デフォルトはFALSEです。

prefix_index

TRUEを指定すると、プリフィックス索引付けが使用可能になります。プリフィックス索引付けを行うと、TO%のような右側切捨てのワイルド・カード検索のパフォーマンスが改善されます。デフォルトはFALSEです。

prefix_min_length

索引付けされたプリフィックスの最小長を指定します。デフォルトは1です。長さの情報はUSC-2コードポイント・セマンティクスに準拠する必要があります。

prefix_max_length

索引付けされたプリフィックスの最大長を指定します。デフォルトは64です。長さの情報はUSC-2コードポイント・セマンティクスに準拠する必要があります。

wildcard_maxterms

ワイルド・カード拡張での語句の最大数を指定します。最大値は50000で、デフォルト値は20000です。0を指定すると、ワイルド・カード拡張数の制限がなくなります。0を設定するとワイルド・カード拡張数が大きくなるため、メモリーが不足する場合があります。

ndata_base_letter

テキスト索引の格納前またはNDATA演算子による問合せ前に、発音区別記号を持つ文字を基本形に変換するかどうかを指定します。

FALSE(デフォルト)またはTRUE

FALSEに設定すると、基本文字は使用されません。

ndata_alternate_spelling

ドイツ語、デンマーク語、およびスウェーデン語の代替スペルを使用可能にするかどうかを指定します。代替スペルを使用可能にすると、代替形式でNDATAセクション・データの索引付けおよびNDATA演算子を使用した問合せを実行できます。

FALSE(デフォルト)またはTRUE

FALSEに設定すると、代替スペルは使用されません。

ndata_thesaurus

代替名前拡張に使用されるシソーラスの名前。

ndata_join_particles

準拠している名前と結合できるコロンで区切られた名前の不変化詞のリスト。

stemmer

テキスト問合せでワード・ステミングに使用するステマーを指定します。STEMMERに対して値を指定しない場合、デフォルトはENGLISHです。

AUTOを指定すると、データベース・セッションの言語設定に従って、システムが自動的にステミング言語を設定します。データベース言語がAMERICANまたはENGLISHの場合は、ENGLISHステマーが自動的に使用されます。それ以外の場合は、データベース・セッション言語にマップされたステマーが使用されます。

言語に対してステマーが存在しない場合、デフォルトはNULLです。NULLステマーを使用すると、STEM演算子は問合せで無視されます。

独自のステミング・ディクショナリを作成できます。詳細は、「ステミング・ユーザー・ディクショナリ」を参照してください。

注意:

次の場合は、BASIC_WORDLISTプリファレンスのSTEMMER属性が無視されます。

1. BASIC_LEXERプリファレンスのINDEX_STEMSを、BOKMAL、CATALAN、CROATIAN、CZECH、DANISH、FINNISH、GREEK、HEBREW、HUNGARIAN、NYNORSK、POLISH、PORTUGUESE、ROMANIAN、RUSSIAN、SERBIAN、SLOVAK、SLOVENIAN、SWEDISH、ENGLISH_NEW、DERIVATIONAL_NEW、DUTCH_NEW、FRENCH_NEW、GERMAN_NEW、ITALIAN_NEWまたはSPANISH_NEWに設定した場合
または

2. AUTO_LEXERプリファレンスのINDEX_STEMS属性をYESに設定した場合
または

3. 前述の1または2と同じ設定で、データベース・セッション言語に対してMULTI_LEXERがSUB_LEXERを選択した場合

これらの場合は、BASIC_LEXERまたはAUTO_LEXERで使用するステマーが索引付け時に使用されて、問合せ時に問合せ語句の語幹が判断されます。

fuzzy_match

列に使用するファジー・マッチング・ルーチンを指定します。ファジー・マッチングは、現在、英語、日本語および一部のヨーロッパ言語に対してサポートされています。

注意:

中国語および韓国語のfuzzy_match属性値は、英語および日本語のファジー・マッチング・ルーチンが、中国語および韓国語のテキストに使用されないようにするためのダミー属性値です。

fuzzy_matchのデフォルトはGENERICです。

AUTOを指定すると、セッションの言語設定に従って、システムが自動的にファジー・マッチング言語を設定します。

fuzzy_score

デフォルトのファジー・スコアの下限を指定します。0から80の数を指定します。この数値未満のスコアを含むテキストは戻されません。デフォルトは60です。

ファジー・スコアは、拡張されたワードが問合せワードにどれだけ近いかという計測値です。スコアが高いほど適合する度合いが高くなります。このパラメータを使用して、ファジー拡張を最も適合する度合いに制限できます。

fuzzy_numresults

ファジー拡張の最大数を指定します。0から5000の数を指定します。デフォルトは100です。

ファジー拡張を設定することによって、拡張を最も適合するワードの指定値に制限できます。

substring_index

Oracle TextにTRUEを指定すると、サブストリング索引が作成されます。サブストリング索引を使用すると、%ingや%benz%のような左側切捨てまたは左右切捨てのワイルド・カード問合せが改善されます。デフォルトはFALSEです。

サブストリングの索引付けによって、索引付け処理およびディスク・リソースに対して、次のような影響があります。

- 索引作成およびDML処理が、最大4倍遅くなります。

- substring_indexを使用可能にして索引を作成すると、サブストリング索引をオフにして作成するよりも、索引のフラッシュ時により多くのロールバック・セグメントが必要になります。サブストリング索引の作成時に、次のいずれかを実行することをお薦めします。

- 通常の2倍のロールバックを使用可能にします。

- ディスクに対する索引フラッシュのサイズを縮小するために索引メモリーを減らします。

prefix_index

yesを指定すると、プリフィックス索引付けが使用可能になります。プリフィックス索引付けを行うと、TO%のような右側切捨てのワイルド・カード検索のパフォーマンスが改善されます。デフォルトはNOです。

注意:

プリフィックス索引付けを行うと、索引サイズが増加します。

プリフィックス索引付けでは、トークンが複数のプリフィックスに切断され、$I表に格納されます。たとえば、TOKENやTOYは、通常、$I表で次のように索引付けされます。

トークン

データ型

情報

TOKEN

0

DOCID 1 POS 1

TOY

0

DOCID 1 POS 3

プリフィックス索引付けを使用すると、これらのトークンのプリフィックス・サブストリングが、6というトークン型で索引付けされます。

トークン

データ型

情報

TOKEN

0

DOCID 1 POS 1

TOY

0

DOCID 1 POS 3

T

6

DOCID 1 POS 1 POS 3

TO

6

DOCID 1 POS 1 POS 3

TOK

6

DOCID 1 POS 1

TOKE

6

DOCID 1 POS 1

TOKEN

6

DOCID 1 POS 1

TOY

6

DOCID 1 POS 3

TO%のようなワイルド・カード検索が高速化されます。これは、語句の拡張と結果セットのマージが実行されないためです。結果の取得に必要なのは、行(TO、6)の検索のみです。

prefix_min_length

索引付けされたプリフィックスの最小長を指定します。デフォルトは1です。

たとえば、prefix_min_lengthを3に設定し、prefix_max_lengthを5に設定すると、3から5文字までの長さのすべてのプリフィックスが索引付けされます。

注意:

ワイルド・カード検索のパターンが最小長未満または最大長を超える場合は、同等化拡張およびマージという速度の遅い方法で検索が実行されます。

prefix_max_length

索引付けされたプリフィックスの最大長を指定します。デフォルトは64です。

たとえば、prefix_min_lengthを3に設定し、prefix_max_lengthを5に設定すると、3から5文字までの長さのすべてのプリフィックスが索引付けされます。

注意:

ワイルド・カード検索のパターンが最小長未満または最大長を超える場合は、同等化拡張およびマージという速度の遅い方法で検索が実行されます。

wildcard_maxterms

ワイルド・カード(%)拡張での語句の最大数を指定します。このパラメータを使用して、ワイルド・カード問合せパフォーマンスを受入れ可能な制限内に保持します。ワイルド・カード問合せ拡張がこの数を超えると、エラーが戻されます。

ORA-29902: error in executing ODCIIndexStart() routine
ORA-20000: Oracle Text error:
DRG-51030: wildcard query expansion resulted in too many terms

そのような場合、問合せを絞り込んでヒット数が少なくなるようにするか、wildcard_maxtermsの値を増やしてください。wildcard_maxtermsを0に設定して制限を無視することもできます。

注意:

wildcard_maxtermsの値を0に設定した場合も、ワイルドカード検索語に一致する用語が多すぎると、問合せが失敗して再び上のエラーが戻されることがあります。

上記のエラーをキャプチャし、独自の詳細なメッセージを表示することもできます。

注意:

%、%_%、%_などのワイルド・カード文字のみを持つワイルド・カード問合せを使用した検索条件は、ストップワードとして処理されます。

ndata_base_letter

発音区別記号(ウムラウト、セディーユ、揚音アクセントなど)を持つ文字を、テキスト索引に格納する前またはNDATA演算子による問合せ前に、基本形に変換するかどうかを指定します。デフォルトはFALSE(基本文字変換は使用禁止)です。基本文字変換の詳細は、「基本文字変換」を参照してください。

ndata_alternate_spelling

ドイツ語、デンマーク語、およびスウェーデン語の代替スペルを使用可能にするかどうかを指定します。代替スペルを使用可能にすると、代替形式でNDATAセクション・データの索引付けおよびNDATA演算子を使用した問合せを実行できます。

ndata_base_letterとndata_alternate_spellingを同時に有効にすると、NDATAセクション・データが代替スペル、基本文字の順にシリアルに変換されます。Oracle Textが使用する代替スペルの規則については、「代替スペル」を参照してください。

ndata_thesaurus

代替名前拡張に使用されるシソーラスの名前を指定します。索引付けエンジンはシソーラスのシノニム・リングを使用して、ドキュメントの名前を拡張します。ユーザーはシソーラスの同形異義語を明確にする機能を使用して、一般的なニックネームを区別します。

例を次に示します。

Albert
SYN Al
SYN Bert
Alfred
SYN Al
SYN Fred

前述の簡単な定義を使用して、Albert、Alfred、Al、Bert、およびFredを同じシノニム・リングに配置します。このため、Bertの拡張にFredが含まれるといった予期しない結果が発生します。これを防止するため、同形異義語を明確にする機能を次のように使用できます。

Albert
SYN Al (Albert)
SYN Bert (Albert)
Alfred
SYN Al (Alfred)
SYN Fred (Alfred)

Albert-Al-BertとAlfred-Al-Fredの2つのシノニム・リングが作成されます。したがって、Bertの拡張にFredが含まれなくなります。次に、詳細な例を示します。

begin
ctx_ddl.create_preference('NDAT_PREF', 'BASIC_WORDLIST');
ctx_ddl.set_attribute('NDATA_PREF', 'NDATA_ALTERNATE_SPELLING', 'FALSE');
ctx_ddl.set_attribute('NDATA_PREF', 'NDATA_BASE_LETTER', 'TRUE');
ctx_ddl.set_attribute('NDATA_PREF', 'NDATA_THESAURUS', 'NICKNAMES');
end;

注意:

名前のサンプルのシソーラスは、$ORACLE_HOME/ctx/sample/thesディレクトリにあります。このファイルはdr0thsnames.txtです。

ndata_join_particles

準拠している名前と結合できるコロンで区切られた名前の不変化詞のリストを指定します。daなどの名前の不変化詞は、da VinciやdaVinciなどの準拠している名前を分割または結合して書き込みます。索引付けエンジンは、このプリファレンスで指定された名前の不変化詞を検索する場合に名前を分割したバージョンと結合したバージョンの両方の索引データを生成します。高度な再コールの問合せ処理も同様です。

2.6.2 BASIC_WORDLISTの例

次に、BASIC_WORDLIST型を使用した例を示します。

- ファジー・マッチングおよびステミングの使用可能化

- サブストリングとプリフィックス索引付けの使用可能化

- ワイルド・カード拡張に対する制限の設定

2.6.2.1 ファジー・マッチングおよびステミングの使用可能化

次の例では、英語に対するステミングおよびファジー・マッチングを使用可能にします。プリファレンスSTEM_FUZZY_PREFによって、拡張数が許容される最大数に設定されます。また、このプリファレンスによって、左右切捨て検索のパフォーマンスが向上するように、サブストリング索引がシステムで作成されます。

begin
ctx_ddl.create_preference('STEM_FUZZY_PREF', 'BASIC_WORDLIST');
ctx_ddl.set_attribute('STEM_FUZZY_PREF','FUZZY_MATCH','ENGLISH');
ctx_ddl.set_attribute('STEM_FUZZY_PREF','FUZZY_SCORE','0');
ctx_ddl.set_attribute('STEM_FUZZY_PREF','FUZZY_NUMRESULTS','5000');
ctx_ddl.set_attribute('STEM_FUZZY_PREF','SUBSTRING_INDEX','TRUE');
ctx_ddl.set_attribute('STEM_FUZZY_PREF','STEMMER','ENGLISH');
end;

索引をSQLで作成するには、次の文を入力します。

create index fuzzy_stem_subst_idx on mytable ( docs )
indextype is ctxsys.context parameters ('Wordlist STEM_FUZZY_PREF');

2.6.2.2 サブストリングとプリフィックス索引付けの使用可能化

次の例では、プリフィックスとサブストリングの索引付けに対してワードリスト・プリファレンスを設定します。プリフィックス索引付けに対して、3から4文字の長さのトークン・プリフィックスの作成を指定します。

begin

ctx_ddl.create_preference('mywordlist', 'BASIC_WORDLIST');
ctx_ddl.set_attribute('mywordlist','PREFIX_INDEX','TRUE');
ctx_ddl.set_attribute('mywordlist','PREFIX_MIN_LENGTH',3);
ctx_ddl.set_attribute('mywordlist','PREFIX_MAX_LENGTH', 4);
ctx_ddl.set_attribute('mywordlist','SUBSTRING_INDEX', 'YES');

end;

2.6.2.3 ワイルド・カード拡張に対する制限の設定

wildcard_maxterms属性を使用して、ワイルド・カード拡張で使用できる語句の最大数を設定します。

--- create a sample table
drop table quick ;
create table quick
(
quick_id number primary key,
text      varchar(80)
);

--- insert a row with 10 expansions for 'tire%'
insert into quick ( quick_id, text )
values ( 1, 'tire tirea tireb tirec tired tiree tiref tireg tireh tirei tirej');
commit;

--- create an index using wildcard_maxterms=100
begin
Ctx_Ddl.Create_Preference('wildcard_pref', 'BASIC_WORDLIST');
ctx_ddl.set_attribute('wildcard_pref', 'wildcard_maxterms', 100) ;
end;
/
create index wildcard_idx on quick(text)
indextype is ctxsys.context
parameters ('Wordlist wildcard_pref') ;

--- query on 'tire%' - should work fine
select quick_id from quick
where contains ( text, 'tire%' ) > 0;

--- now re-create the index with wildcard_maxterms=5

drop index wildcard_idx ;

begin
Ctx_Ddl.Drop_Preference('wildcard_pref');
Ctx_Ddl.Create_Preference('wildcard_pref', 'BASIC_WORDLIST');
ctx_ddl.set_attribute('wildcard_pref', 'wildcard_maxterms', 5) ;
end;
/

create index wildcard_idx on quick(text)
indextype is ctxsys.context
parameters ('Wordlist wildcard_pref') ;

--- query on 'tire%' gives "wildcard query expansion resulted in too many terms"
select quick_id from quick
where contains ( text, 'tire%' ) > 0;

2.7 記憶域型

記憶域プリファレンスを使用して、テキスト索引に対応付けられた表に対して表領域および作成パラメータを指定します。システムには、BASIC_STORAGEという単一の記憶域型があります。

表2-38 記憶域型

データ型

説明

BASIC_STORAGE

テキスト索引を構成するデータベース表および索引に対して、表領域および作成パラメータを指定するために使用する索引付けの型

2.7.1 BASIC_STORAGE

BASIC_STORAGEの索引付けの型は、テキスト索引を構成するデータベース表および索引に対する表領域および作成パラメータを指定します。

指定した句は、索引作成時に内部のCREATE TABLE(i_index_clauseの場合はCREATE INDEX)文に追加されます。記憶域、LOB記憶域、パーティション化などの句を指定できます。ただし、索引構成表句は指定しないでください。

この項では、次の項目について説明します。

- BASIC_STORAGE属性

- BASIC_STORAGEのデフォルト動作

- BASIC_STORAGEの例

関連項目:

CREATE TABLE文とCREATE INDEX文の指定方法の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

2.7.1.1 BASIC_STORAGE属性

BASIC_STORAGEには、表2-39に示す属性があります。

表2-39 BASIC_STORAGE属性

属性

属性値

big_io

IO操作に広く使用されるCONTEXT索引の問合せパフォーマンスを向上させるパラメータ句。SECUREFILESを使用するため、表領域は自動セグメント領域管理(ASSM)を使用する必要があります。シークがシリアル読取りより負荷が高い場合、この句は主に回転ディスクの問合せパフォーマンスを向上します。BIG_IO索引オプションを使用した索引の作成には、一時的なトリガーが索引付け処理中に作成されるため、CREATE TRIGGER権限が必要です。

データ記憶域がSSDの場合、問合せパフォーマンスはそれほど向上しません。

CONTEXT索引のBIG_IO索引オプションを有効にするには、これをYESに設定します。デフォルトはNOです。

d_table_clause

$D表の記憶域句を指定するパラメータ句。

正引き索引の機能を使用する場合に、この句を指定できます。正引き索引の機能を使用すると、スニペットを計算するときの問合せパフォーマンスが向上します。

d_table_clauseを手動で設定する場合は、$D表のドキュメントBLOB列docに、圧縮率の高いSecureFilesを選択することをお薦めします。d_table_clauseを設定しない場合、索引所有者のデフォルトの表領域がASSMであり、データベース互換性パラメータが11.0以上であれば、ドキュメントBLOBはデフォルトでSecureFilesを使用します。

$D表は、save_copy列を指定するかsave_copy 記憶域属性を指定することによって、ドキュメントのコピーを索引に保存するために作成されます。

e_table_clause

dr$索引名$E表作成用のパラメータ句。内部CREATE TABLECREATE文の終わりに追加するSTORAGE句およびTABLESPACE句を指定します。

forward_index

CTX_DOCパッケージで次のプロシージャのパフォーマンスを向上するパラメータ句。

- ctx_doc.snippet

- ctx_doc.highlight

- ctx_doc.markup

正引き索引の機能を有効にする場合は、これをTRUEに設定します。これによって$O表が作成されます。$O表には、$I表のトークン・オフセットから、索引付けされているドキュメントのキャラクタ・オフセットへのマッピング情報が格納されます。

デフォルトはFALSEです。

g_index_clause

$G表の$H Bツリー索引のパラメータ句。

内部CREATEINDEX文の終わりに追加するstorage句およびtablespace句を指定します。

STAGE_ITAB索引オプションでCONTEXT索引を作成すると、$H Bツリー索引付きで空の$G表が作成されます。DML操作で広く使用されるCONTEXT索引の問合せパフォーマンスを向上させるには、STAGE_ITAB索引オプションと組み合せてg_index_clause句を使用します。

g_table_clause

$G表のパラメータ句。

内部CREATETABLE文の終わりに追加するstorage句およびtablespace句を指定します。

STAGE_ITAB索引オプションでCONTEXT索引を作成すると、$H Bツリー索引付きで空の$G表が作成されます。DML操作で広く使用されるCONTEXT索引の問合せパフォーマンスを向上させるには、STAGE_ITAB索引オプションと組み合せてg_table_clause句を使用します。

i_index_clause

dr$索引名$X索引作成用のパラメータ句。内部CREATE INDEX文の終わりに追加するstorage句およびtablespace句を指定します。デフォルト句は、'COMPRESS 2',で、この索引表を圧縮するようにOracle Textに指示します。

この圧縮によってディスク領域が節約され、問合せパフォーマンスが向上するため、デフォルトをオーバーライドする場合は、パラメータ句にCOMPRESS 2を指定してこの表を圧縮することをお薦めします。

i_rowid_index_clause

$I表のdr$ROWID列に対する$R索引のstorage句を指定するパラメータ句。内部CREATE INDEX文の終わりに追加するstorage句およびtablespace句を指定します。

この句は、CTXCATの索引タイプでのみ使用されます。

i_table_clause

dr$索引名$I表作成用のパラメータ句。内部CREATE TABLE文の終わりに追加するstorage句およびtablespace句を指定します。

I表は索引データ表です。

注意: $I LOBに対して「disable storage in row」を指定しないことをお薦めします。指定すると、問合せパフォーマンスが大幅に低下します。

k_table_clause

dr$索引名$K表作成用のパラメータ句。内部CREATE TABLE文の終わりに追加するstorage句およびtablespace句を指定します。

K表はキーマップ表です。

n_table_clause

dr$索引名$N表作成用のパラメータ句。内部CREATE TABLE文の終わりに追加するstorage句およびtablespace句を指定します。

N表はネガティブリスト表です。

o_table_clause

$O表のstorage句を指定するパラメータ句。

正引き索引の機能を使用する場合に、この句を指定できます。正引き索引の機能を使用すると、スニペットを計算するときの問合せパフォーマンスが向上します。

o_table_clauseを手動で設定する場合は、$O表のドキュメントBLOB列mappingに、圧縮率の高いSecureFilesを選択することをお薦めします。o_table_clauseを設定しない場合、索引所有者のデフォルトの表領域がASSMであり、データベース互換性パラメータが11.0以上であれば、ドキュメントBLOBはデフォルトでSecureFilesを使用します。

forward_index記憶域属性を指定して正引き索引の機能を有効にすると、$O表が作成されます。$O表には、$I表のトークン・オフセットから、索引付けされているドキュメントのキャラクタ・オフセットへのマッピング情報が格納されます。

p_table_clause

BASIC_WORDLISTでSUBSTRING_INDEXを使用可能にした場合の、サブストリング索引用のパラメータ句。

内部CREATE INDEX文の終わりに追加するstorage句およびtablespace句を指定します。P表は索引構成表であるため、指定するstorage句は、このタイプの表に適切である必要があります。

query_filter_cache_size

問合せフィルタ・キャッシュの最大サイズをバイト単位で指定するパラメータ句。問合せフィルタ・キャッシュは、共有プールから割り当てられるため、その最大サイズは共有プールのサイズより小さく設定する必要があります。この記憶域パラメータをパーティション・レベルで設定すると、索引レベルで暗黙的に設定されます。

デフォルトは0です。

r_table_clause

dr$索引名$R表作成用のパラメータ句。内部CREATE TABLE文の終わりに追加するstorage句およびtablespace句を指定します。

R表はROWID表です。

デフォルト句は、'LOB(DATA) STORE AS (CACHE)' です。

この属性を変更する場合は、パフォーマンスを向上させるために、この句を必ず含めてください。

s_table_clause

dr$索引名$S表作成用のパラメータ句*。内部CREATE TABLE文の終わりに追加するstorage句およびtablespace句を指定します。デフォルト句はnocompressです。

* パフォーマンス上の理由から、$S表は、データベース・ブロック・サイズが4KB以上の表領域に、オーバーフロー・セグメントとPCTTHRESHOLD句を指定せずに作成する必要があります。$S表をデータベース・ブロック・サイズが4KB未満の表領域に作成するか、オーバーフロー・セグメントまたはPCTTHRESHOLD句を指定して作成した場合は、CREATE INDEX時にエラーが発生します。

S表は、SDATAセクション値を格納する表です。

SDATAがない索引の記憶域プリファレンスに対してこの句が指定されている場合、この指定による索引の影響はないため、索引は正しく作成されます。

save_copy

ドキュメントを$D索引表に保存することを指定するパラメータ句。

スニペットの計算中に問合せパフォーマンスを向上させる正引き索引の機能を使用するこの句を指定します。

ドキュメントのコピーをプレーン・テキスト形式で$D表に保存する場合は、これをPLAINTEXTに設定します。こうすると、テキストをフェッチするためにデータストアやフィルタが呼び出されないため、スニペット生成のパフォーマンスが向上します。また、ハイライトのパフォーマンスも向上します。

ドキュメントのコピーをフィルタ(HTML)形式で$D表に保存する場合は、これをFILTEREDに設定します。これで、ハイライトとマークアップのパフォーマンスは向上しますが、プレーン・テキスト形式の場合より必要なディスク領域は多くなります。スニペットの作成中にHTMLマークアップを削除する必要があるため、スニペットの生成効率は下がります。

デフォルトはNONEで、ドキュメントのコピーは$Dに保存されません。

save_copy_max_size

basic_storage属性を使用して$D表に保存するドキュメントの最大サイズを指定するパラメータ句。

ドキュメント・サイズが、この属性に指定したサイズより大きい場合は、この属性に指定したサイズまで切り捨てられたバージョンのドキュメントが、$D表に保存されます。

$D表が、ドキュメントBLOBとの比較のためにSecureFilesを使用している場合は、比較の前にsave_copy_max_sizeの制限事項がドキュメント・サイズに適用されます。

デフォルトは0で、サイズにかかわらずドキュメント全体が$D表に保存されます。

注意: save_copy_max_sizeパラメータ句は、save_copy句を指定した場合にのみ有効です。

separate_offsets

IO操作に広く使用され、問合せが主に1つのワードまたはブール値問合せであるCONTEXT索引の問合せパフォーマンスを向上させるパラメータ句です。

CONTEXT索引のSEPARATE_OFFSETS索引オプションを有効にするには、これをTに設定します。デフォルトはFです。

stage_itab

DML操作に広く使用されるCONTEXT索引の問合せパフォーマンスを向上させる際に切り替えます。

STAGE_ITAB索引オプションを無効にすると、新しいドキュメントが索引に追加されるとき、SYNC_INDEXがコールされてドキュメントが検索可能になります。こうすると、$I表に新しい行が作成されるため、$I表で断片化が大きくなります。これによって、問合せパフォーマンスの低下につながります。

STAGE_ITAB索引オプションを有効にすると、新しいドキュメントに関する情報は$I表ではなく$Gステージング表に格納されます。これによって$I表は断片化しなくなるため、問合せパフォーマンスが低下しません。

STAGE_ITAB索引オプションを有効にすると、$H Bツリー索引も$G表に作成されます。$G表と$H Bツリー索引は、$I表と$X Bツリー索引と同等です。

CONTEXT索引のSTAGE_ITAB索引オプションを有効にするには、stage_itabをYESに設定します。デフォルトはNOです。

2.7.1.2 BASIC_STORAGEのデフォルト動作

デフォルトでは、BASIC_STORAGE属性は設定されていません。このような場合は、索引所有者のデフォルト表領域にテキスト索引表が作成されます。ユーザーIUSERによって入力され、BASIC_STORAGE属性が設定されていない次の文について考えてみます。

create index IOWNER.idx on TOWNER.tab(b) indextype is ctxsys.context;

この例では、テキスト索引はIOWNERのデフォルトの表領域に作成されます。

2.7.1.3 BASIC_STORAGEの例

次の例では、索引表が1KBの初期エクステントでfoo表領域に作成されるように指定します。

begin
ctx_ddl.create_preference('mystore', 'BASIC_STORAGE');
ctx_ddl.set_attribute('mystore', 'I_TABLE_CLAUSE',
'tablespace foo storage (initial 1K)');
ctx_ddl.set_attribute('mystore', 'K_TABLE_CLAUSE',
'tablespace foo storage (initial 1K)');
ctx_ddl.set_attribute('mystore', 'R_TABLE_CLAUSE',
'tablespace users storage (initial 1K) lob
(data) store as (disable storage in row cache)');
ctx_ddl.set_attribute('mystore', 'N_TABLE_CLAUSE',
'tablespace foo storage (initial 1K)');
ctx_ddl.set_attribute('mystore', 'I_INDEX_CLAUSE',
'tablespace foo storage (initial 1K) compress 2');
ctx_ddl.set_attribute('mystore', 'P_TABLE_CLAUSE',
'tablespace foo storage (initial 1K)');
ctx_ddl.set_attribute('mystore', 'S_TABLE_CLAUSE',
'tablespace foo storage (initial 1K)');
end;

次の例では、作成される内部表の末尾に追加します。

exec ctx_ddl.create_preference('sto', 'basic_storage');
exec ctx_ddl.set_attribute('sto', 'e_table_clause', 'tablespace foo');

次の例では、パーティション化された索引にquery_filter_cache_size記憶域パラメータを使用します。

exec ctx_ddl.create_preference('fcs', 'basic_storage');
exec ctx_ddl.set_attribute('fcs', 'query_filter_cache_size', '100000000');

create table fc(id number primary key, txt varchar2(64))
partition by range (id)
(
partition p1 values less than (25),
partition p2 values less than (50),
partition p3 values less than (75)
);

create index fci on fc(txt) indextype is ctxsys.context
local (
partition p1,
partition p2,
partition p3) parameters('storage fcs memory 49M sync (on commit)');

問合せフィルタ・キャッシュは、索引レベルの記憶域プリファレンスです。問合せフィルタ・キャッシュの記憶域プリファレンスは、 索引レベルでも設定されている場合のみ、パーティション・レベルで設定できます。

select count(*) from fc partition (p1) where contains(txt,'ctxfiltercache((hello))')>0;

2.8 セクション・グループ型

ドキュメント・セクションに対してWITHIN問合せを入力するには、セクションを定義する前に、セクション・グループを作成する必要があります。セクション・グループは、CREATE INDEXのPARAMETERS句で指定します。

この項では、次の項目について説明します。

- セクション・グループ作成のためのセクション・グループ型

- HTML、XMLおよびJSON対応ドキュメントの場合のセクション・グループ例

2.8.1 セクション・グループ作成のためのセクション・グループ型

セクション・グループを作成する場合は、CTX_DDL.CREATE_SECTION_GROUP プロシージャを使用して次のグループ・タイプのいずれかを指定できます。

表2-40 セクション・グループ型

データ型

説明

NULL_SECTION_GROUP

どのセクションも定義しないか、またはSENTENCEかPARAGRAPHセクションのみを定義する場合は、このグループ・タイプを使用します。これはデフォルトです。

BASIC_SECTION_GROUP

このグループ・タイプを使用して、開始および終了タグが<A>および</A>という形式のセクションを定義します。

注意: このグループ・タイプでは、対になっていないカッコ、コメント・タグおよび属性などの入力はサポートされません。これらを入力するには、HTML_SECTION_GROUPを使用してください。

HTML_SECTION_GROUP

このグループ・タイプを使用して、HTMLドキュメントを索引付けし、HTMLドキュメントのセクションを定義します。

JSON_SECTION_GROUP

このグループを使用してJSON対応コンテキスト索引を作成します。JSON ENABLE属性はXML ENABLEで使用できません。セクション・グループはJSON ENABLEとしてのみマークされます。すでにXML ENABLEとしてマークされている場合、パスのセクション・グループはJSON ENABLEでは使用できず、その逆もできません。

XML_SECTION_GROUP

このグループ・タイプを使用して、XMLドキュメントを索引付けし、XMLドキュメントのセクションを定義します。索引付けされるセクションはすべて、このグループに対して手動で定義する必要があります。

AUTO_SECTION_GROUP

このグループ・タイプを使用して、XMLドキュメントの開始タグ/終了タグに対して自動的にゾーン・セクションを作成します。XMLタグから導出されるセクション名は、XML内と同様に大/小文字が区別されます。

属性セクションは、属性を持つXMLタグに対して自動的に作成されます。属性セクションは、tag@attributeという形式でネーミングされます。

WITHIN SENTENCE検索とWITHIN PARAGRAPH検索では特殊セクションをAUTO_SECTION_GROUPに追加できます。文セクションまたは段落セクションがAUTO_SECTION_GROUPに追加されると、該当するタグ名'sentence'または'paragraph'(大/小文字を区別しない)の付いたセクションは停止セクションとして処理されます。

停止セクション、空のタグ、処理命令およびコメントは、索引付けされません。

自動セクション・グループには次の制限事項が適用されます。

- ゾーン、フィールド、sdata、または特殊セクションは、自動セクション・グループに追加できません。

- 特定の1つの型のみに適用される停止セクションを定義できます。つまり、2つの異なるXML DTDがある場合、両方のXML DTDがFOOと呼ばれるタグを使用するため、(TYPE1)FOOが停止され、(TYPE2)FOOは停止されないように定義できます。

- プリフィックスおよび名前空間を含む、索引付けされたタグの長さは、64バイト以下です。これより長いタグは索引付けされません。

PATH_SECTION_GROUP

このグループ・タイプを使用して、XMLドキュメントを索引付けします。このタイプは、AUTO_SECTION_GROUPと同じように動作します。

相違点は、このセクション・グループを使用すると、INPATHおよびHASPATH演算子でパス検索を実行できることです。タグまたは属性名の問合せでは、大/小文字が同様に区別されます。停止セクションは使用できません。

NEWS_SECTION_GROUP

このグループ・タイプを使用して、RFC 1036に従ったニュース・グループ形式のドキュメントのセクションを定義します。

2.8.2 HTML、XMLおよびJSON対応ドキュメントの場合のセクション・グループ例

この例では、HTMLおよびXMLドキュメントとJSON対応ドキュメントでのセクション・グループの使用について示します。概要は表2-40を参照してください。

この項には次の例が含まれます:

- HTMLドキュメントのセクション・グループの作成

- XMLドキュメントのセクション・グループの作成

- XMLドキュメントの自動セクション化

- JSON検索索引のためのJSONセクション・グループの作成

- JSON_TEXTCONTAINSを使用したJSON検索索引の使用

- JSON_EXISTSを使用したJSON検索索引の使用

2.8.2.1 HTMLドキュメントのセクション・グループの作成

次の文は、HTMLグループ・タイプを使用してhtmgroupというセクション・グループを作成します。

begin
ctx_ddl.create_section_group('htmgroup', 'HTML_SECTION_GROUP');
end;

CTX_DDLパッケージでCTX_DDL.ADD_SPECIAL_SECTIONプロシージャまたはCTX_DDL.ADD_ZONE_SECTIONプロシージャを使用して、このグループにオプションでセクションを追加できます。ドキュメントを索引付けするには、次の文を入力します。

create index myindex on docs(htmlfile) indextype is ctxsys.context
parameters('filter ctxsys.null_filter section group htmgroup');

関連項目:

セクション・グループの詳細は、「CTX_DDLパッケージ」を参照してください。

2.8.2.2 XMLドキュメントのセクション・グループの作成

次の文は、XML_SECTION_GROUP グループ・タイプを使用してxmlgroupというセクション・グループを作成します。

begin
ctx_ddl.create_section_group('xmlgroup', 'XML_SECTION_GROUP');
end;

CTX_DDLパッケージでCTX_DDL.ADD_ATTR_SECTIONプロシージャまたはCTX_DDL.ADD_STOP_SECTIONプロシージャを使用して、このグループにオプションでセクションを追加できます。ドキュメントを索引付けするには、次の文を入力します。

create index myindex on docs(htmlfile) indextype is ctxsys.context
parameters('filter ctxsys.null_filter section group xmlgroup');

関連項目:

セクション・グループの詳細は、「CTX_DDLパッケージ」を参照してください。

2.8.2.3 XMLドキュメントの自動セクション化

次の文は、AUTO_SECTION_GROUPグループ・タイプを使用してautoというセクション・グループを作成します。このセクション・グループによって、XMLドキュメントのタグから自動的にセクションが作成されます。

begin

ctx_ddl.create_section_group('auto', 'AUTO_SECTION_GROUP');

end;

CREATE INDEX myindex on docs(htmlfile) INDEXTYPE IS ctxsys.context
PARAMETERS('filter ctxsys.null_filter section group auto');

2.8.2.4 JSON検索索引のためのJSONセクション・グループの作成

次の例ではJSON対応テキスト索引を作成します。

create index json_ctx_idx on customers (customer
_info)
indextype is ctxsys.context
parameters ('section group CTXSYS.JSON_SECTION_GROUP');

2.8.2.5 JSON_TEXTCONTAINSを使用したJSON検索索引の使用

次の例では、説明にキーワード「gold」を含む顧客を検索します。

select customer_info
from customers
where JSON_TEXTCONTAINS(customer_info, '$.description', 'gold');

2.8.2.6 JSON_EXISTSを使用したJSON検索索引の使用

JSON対応データを検出します。

select customer_info from customers
where JSON_EXISTS(customer_info, '$.dataplan');

2.9 分類型

この項では、CTX_CLS.TRAINおよびCTXRULE索引作成のプリファレンスの作成に使用する分類型について説明します。次の2つの分類型がサポートされています。

- RULE_CLASSIFIER

- SVM_CLASSIFIER

注意:

Oracle Database Express Edition (Oracle Database XE)では、データ・マイニング・オプションが使用できないため、RULE_CLASSIFIERおよびSVM_CLASSIFIERはサポートされていません。これは、KMEAN_CLUSTERINGも同様です。

2.9.1 RULE_CLASSIFIER

RULE_CLASSIFIER型を使用して、問合せルール生成プロシージャCTX_CLS.TRAINおよびCTXRULE作成のプリファレンスを作成します。この型を使用して生成されるルールは基本的に問合せ文字列で、簡単に調べることができます。この分類によって生成された問合せは、AND、NOTまたはABOUT演算子を使用できます。WITHIN演算子は、フィールド・セクションに対する問合せの場合のみサポートされています。

表2-41に、RULE_CLASSIFIER型の属性を示します。

表2-41 RULE_CLASSIFIER属性

属性

データ型

デフォルト

最小値

最大値

説明

THRESHOLD

I

50

1

99

ルール生成のしきい値(パーセント)を指定します。ルールは、その信頼度レベルがしきい値を超えた場合のみ出力されます。

MAX_TERMS

I

100

20

2000

各クラスについて、関連語句のリストがルール生成のために選択されます。各クラスについて選択可能な語句の最大数を指定します。

MEMORY_SIZE

I

500

10

4000

トレーニング用のメモリー使用量(MB)を指定します。大きい値を指定すると、パフォーマンスが向上します。

NT_THRESHOLD

F

0.001

0

0.90

語句選択のしきい値を指定します。関連語句を選択する際の2つのステップを導く2つのしきい値があります。このしきい値は、最初のステップの動作を制御します。このステップでは候補語句が選択されます。この候補語句は、次のステップでさらに検討されます。トレーニング・セット内のドキュメント数に対する語句の出現頻度の割合がこのしきい値を超えた場合に、その語句が選択されます。

TERM_THRESHOLD

I

10

0

100

語句選択のしきい値(パーセント)を指定します。このしきい値は、2番目のステップの語句選択を制御します。各候補語句には、特定クラスとの相関関係を示す計算された数量があります。クラス内の全候補語句の最大値に対するこの数量値の割合がこのしきい値を超えた場合のみ、候補語句がそのクラスに対して選択されます。

PRUNE_LEVEL

I

75

0

100

対象を広げるために、組込みの決定ツリーを削除する範囲を指定します。大きい値を指定すると、積極的に削除が行われ、生成されたルールの範囲が広くなりますが、精度は下がります。

2.9.2 SVM_CLASSIFIER

SVM_CLASSIFIER型を使用して、ルール生成プロシージャCTX_CLS.TRAINおよびCTXRULE作成のプリファレンスを作成します。この分類型は、分類のサポート・ベクター・マシン方法を表しており、バイナリ形式のルールを生成します。高精度の分類が必要な場合は、この分類型を使用します。

この型の属性は、次のとおりです。

表2-42 SVM_CLASSIFIER属性

属性名

データ型

デフォルト

最小値

最大値

説明

MAX_DOCTERMS

I

50

10

8192

1つのドキュメントを表す語句の最大数を指定します。

MAX_FEATURES

I

3,000

1

100,000

個別の機能の最大数を指定します。

THEME_ON

B

FALSE

NULL

NULL

テーマを機能として使用するには、TRUEを指定します。

TOKEN_ON

B

TRUE

NULL

NULL

通常のトークンを機能として使用するには、TRUEを指定します。

STEM_ON

B

FALSE

NULL

NULL

ステミングされたトークンを機能として使用するには、TRUEを指定します。これは、レクサーに対してINDEX_STEMをオンにしている場合のみ機能します。

MEMORY_SIZE

I

500

10

4000

おおよそのメモリー・サイズ(MB)を指定します。

SECTION_WEIGHT

1

2

0

100

フィールド・セクションに通常の語として語句を追加するために、出現頻度の乗数を指定します。たとえば、デフォルトでは、"<A>cat</A>"のcatという語はフィールド・セクション語句で、出現頻度が2である通常の語として扱われるように指定できますが、上限は100まで可能です。SECTION_WEIGHTは、索引ポリシーがフィールド・セクションを指定する場合のみ有効です。

2.10 クラスタ型

この項では、CTX_CLS.CLUSTERINGプロシージャのプリファレンスの作成に使用するクラスタ型について説明します。

- KMEAN_CLUSTERING

注意:

Oracle Database Express Edition (Oracle Database XE)では、データ・マイニング・オプションが使用できないため、KMEAN_CLUSTERINGはサポートされていません。これは、RULE_CLASSIFIERおよびSVM_CLASSIFIERも同様です。

関連項目:

クラスタ化の詳細は、「CTX_CLSパッケージ」の「CLUSTERING」、および『Oracle Textアプリケーション開発者ガイド』を参照してください。

2.10.1 KMEAN_CLUSTERING

KMEAN_CLUSTERINGにクラスタリング型は、表2-43に示す属性があります。

表2-43 KMEAN_CLUSTERING属性

属性名

データ型

デフォルト

最小値

最大値

説明

MAX_DOCTERMS

I

50

10

8192

1つのドキュメントを表す個別の語句の最大数を指定します。

MAX_FEATURES

I

3,000

1

500,000

個別の機能の最大数を指定します。

THEME_ON

B

FALSE

NULL

NULL

テーマを機能として使用するには、TRUEを指定します。

TOKEN_ON

B

TRUE

NULL

NULL

通常のトークンを機能として使用するには、TRUEを指定します。

STEM_ON

B

FALSE

NULL

NULL

ステミングされたトークンを機能として使用するには、TRUEを指定します。これは、レクサーに対してINDEX_STEMをオンにしている場合のみ機能します。

MEMORY_SIZE

I

500

10

4000

おおよそのメモリー・サイズ(MB)を指定します。

SECTION_WEIGHT

1

2

0

100

フィールド・セクションに通常の語として語句を追加するために、出現頻度の乗数を指定します。たとえば、デフォルトでは、"<A>cat</A>"のcatという語はフィールド・セクション語句で、出現頻度が2である通常の語として扱われるように指定できますが、上限は100まで可能です。SECTION_WEIGHTは、索引ポリシーがフィールド・セクションを指定する場合のみ有効です。

CLUSTER_NUM

I

200

2

20000

生成されるリーフ・クラスタの合計数を指定します。

2.11 ストップリスト

ストップリストによって、言語にある索引付けしないワードが識別されます。英語の場合、索引付けしないストップテーマも識別できます。デフォルトでは、データベースの言語に対応してシステムが提供するストップリストを使用して、テキストの索引付けが行われます。

Oracle Textでは、英語、フランス語、ドイツ語、スペイン語、中国語、オランダ語およびデンマーク語を含むほとんどの言語に対して、デフォルトのストップリストが提供されています。これらのデフォルト・ストップリストには、ストップワードのみが含まれます。

- マルチ言語のストップリスト

- ストップリストの作成

- デフォルトのストップリストの変更

関連項目:

提供されるデフォルトのストップリストの詳細は、「Oracle Textで提供されるストップリスト」を参照してください。

2.11.1 マルチ言語のストップリスト

言語固有のストップワードを保持するマルチ言語のストップリストを作成できます。マルチ言語のストップリストは、MULTI_LEXERを使用した英語、ドイツ語などの異なる言語のドキュメントを含む表の索引付けに有効です。

マルチ言語のストップリストを作成するには、CTX_DLL.CREATE_STOPLIST プロシージャを使用して、MULTI_STOPLISTというストップリスト・タイプを指定します。CTX_DDL.ADD_STOPWORD を使用して言語固有のストップワードを追加します。

索引付け時に、各ドキュメントの言語列が調べられ、その言語のストップワードのみが排除されます。問合せ時に、セッション言語の設定によって、アクティブなストップワードが特定されます。これは、マルチレクサーの使用時にアクティブなレクサーが特定されるのと同様です。

2.11.2 ストップリストの作成

CTX_DLL.CREATE_STOPLIST プロシージャを使用して、独自のストップリストを作成します。このプロシージャを使用すると、単一言語ストップリストのBASIC_STOPLISTまたはマルチ言語ストップリストのMULTI_STOPLISTを作成できます。

独自のストップリストを作成して使用する場合は、このリストをCREATE INDEXのPARAMETERS句に指定する必要があります。

中国語または日本語のストップリストを作成するには、それぞれCHINESE_LEXERまたはJAPANESE_LEXERを使用して、該当のレキシコンを@contained_such_stopwordsに更新します。

2.11.3 デフォルトのストップリストの変更

デフォルトのストップリストは、常に.CTXSYS.DEFAULT_STOPLISTという名前です。このストップリストを変更するには、次のプロシージャを使用します。

- CTX_DDL.ADD_STOPWORD

- CTX_DDL.REMOVE_STOPWORD

- CTX_DDL.ADD_STOPTHEME

- CTX_DDL.ADD_STOPCLASS

CTX_DDLパッケージを使用してCTXSYS.DEFAULT_STOPLISTを変更した場合は、変更を有効にするために索引を再作成する必要があります。

ストップワードの動的な追加

ALTER INDEX を使用して、ストップワードをデフォルトまたはカスタムのストップリストに動的に追加できます。ストップワードを動的に追加する場合、ワードはすぐにストップワードになり、索引から削除されるため、再索引付けする必要はありません。

注意:

ストップワードは、索引に動的に追加できますが、動的に削除することはできません。ストップワードを削除するには、CTX_DDL.REMOVE_STOPWORD を使用して索引を削除してから、再度索引付けをする必要があります。

関連項目:

「Oracle TextのSQL文と演算子」の「ALTER INDEX」

2.12 システム定義プリファレンス

Oracle Textをインストールすると、いくつかの索引付けプリファレンスが作成されます。CREATE INDEXのPARAMETERS句にこれらの索引付けプリファレンスを使用することができる他、独自に定義することもできます。

デフォルトの索引パラメータは、この項で説明するシステム定義プリファレンスのいくつかにマップされます。

関連項目:

デフォルトの索引パラメータの詳細は、「デフォルトの索引付けパラメータ」を参照してください"

システム定義のプリファレンスは、次のカテゴリに分類されています。

- データ記憶域プリファレンス

- フィルタ・プリファレンス

- レクサー・プリファレンス

- セクション・グループ・プリファレンス

- ストップリスト・プリファレンス

- 記憶域プリファレンス

- ワードリスト・プリファレンス

2.12.1 データ記憶域プリファレンス

この項では、データ記憶域プリファレンスに関連付けられた型について説明します。

- CTXSYS.DEFAULT_DATASTOREプリファレンスは、DIRECT_DATASTORE型を使用します。このプリファレンスを使用して、テキストが列に直接格納されているテキスト列に対して索引を作成します。

- CTXSYS.FILE_DATASTOREプリファレンスはFILE_DATASTORE型を使用します。

- CTXSYS.URL_DATASTOREプリファレンスはURL_DATASTORE 型を使用します。

2.12.2 フィルタ・プリファレンス

この項では、フィルタ処理プリファレンスに関連付けられた型について説明します。

- CTXSYS.NULL_FILTERプリファレンスはNULL_FILTER 型を使用します。

- CTXSYS.AUTO_FILTERプリファレンスはAUTO_FILTER 型を使用します。

2.12.3 レクサー・プリファレンス

この項では、レクサー・プリファレンスに関連付けられた型について説明します。

- CTXSYS.DEFAULT_LEXER

- CTXSYS.DEFAULT_EXTRACT_LEXER

- CTXSYS.BASIC_LEXER

2.12.3.1 CTXSYS.DEFAULT_LEXER

デフォルトのレクサーCTXSYS.DEFAULT_LEXERは、インストール時に使用した言語によって異なります。次の各項では、各言語のCTXSYS.DEFAULT_LEXERのデフォルト設定について説明します。

- アメリカ英語およびイギリス英語での設定
使用言語が英語の場合、このプリファレンスはindex_themes属性を使用禁止にしてBASIC_LEXERを使用します。

- デンマーク語での設定
使用言語がデンマーク語の場合、このプリファレンスは次のオプションを使用可能にしてBASIC_LEXERを使用します。

- 代替スペル(alternate_spelling属性をDANISHに設定)

- オランダ語での設定
使用言語がオランダ語の場合、このプリファレンスは次のオプションを使用可能にしてBASIC_LEXERを使用します。

- コンポジット索引付け(composite属性をDUTCHに設定)

- ドイツ語およびドイツ工業規格(DIN)での設定
使用言語がドイツ語の場合、このプリファレンスは次のオプションを使用可能にしてBASIC_LEXERを使用します。

- 大/小文字が区別される索引付け(mixed_case属性を使用可能)

- コンポジット索引付け(composite属性をGERMANに設定)

- 代替スペル(alternate_spelling属性をGERMANに設定)

- フィンランド語、ノルウェー語およびスウェーデン語での設定
使用言語がフィンランド語、ノルウェー語またはスウェーデン語の場合、このプリファレンスは次のオプションを使用可能にしてBASIC_LEXERを使用します。

- 代替スペル(alternate_spelling属性をSWEDISHに設定)

- 日本語での設定
使用言語が日本語の場合、このプリファレンスはJAPANESE_VGRAM_LEXERを使用します。

- 韓国語での設定
使用言語が韓国語の場合、このプリファレンスはKOREAN_MORPH_LEXER を使用します。KOREAN_MORPH_LEXER用のすべての属性が使用可能になります。

- 中国語での設定
使用言語が中国語(簡体字または繁体字)の場合、このプリファレンスはCHINESE_VGRAM_LEXERを使用します。

- その他の言語
この項に記載していないその他の言語については、このプリファレンスは、属性を設定せずにBASIC_LEXERを使用します。

関連項目:

これらのオプションの詳細は、「BASIC_LEXER」を参照してください"

2.12.3.2 CTXSYS.DEFAULT_EXTRACT_LEXER

CTXSYS.DEFAULT_EXTRACT_LEXERプリファレンスは、AUTO_LEXERを使用し、Oracleから提供されるすべての機能(ルール、ディクショナリなど)を含んでいます。CTXSYS.DEFAULT_EXTRACT_LEXERは、次のオプションでAUTO_LEXERを使用します。

- alternate_spellingはNONEです

- base_letterはNOです

- mixed_caseはYESです

- <> printjoin is '-*' <>

2.12.3.3 CTXSYS.BASIC_LEXER

CTXSYS.BASIC_LEXERプリファレンスは、BASIC_LEXERを使用します。

2.12.4 セクション・グループ・プリファレンス

この項では、セクション・グループ・プリファレンスに関連付けられた型について説明します。

- CTXSYS.NULL_SECTION_GROUPプリファレンスはNULL_SECTION_GROUP型を使用します。

- CTXSYS.HTML_SECTION_GROUPプリファレンスはHTML_SECTION_GROUP型を使用します。

- CTXSYS.JSON_SECTION_GROUPプリファレンスはJSON_SECTION_GROUP型を使用します。

- CTXSYS.AUTO_SECTION_GROUPプリファレンスはAUTO_SECTION_GROUP型を使用します。

- CTXSYS.PATH_SECTION_GROUPプリファレンスはPATH_SECTION_GROUP型を使用します。

2.12.5 ストップリスト・プリファレンス

この項では、ストップリスト・プリファレンスに関連付けられた型について説明します。

- CTXSYS.DEFAULT_STOPLISTストップリスト・プリファレンスは、使用するデータベース言語のストップリストをデフォルトに設定します。

- CTXSYS.EMPTY_STOPLISTストップリストにはワードがありません。

関連項目:

提供されるストップリストのストップワードの完全なリストは、「Oracle Textで提供されるストップリスト」を参照してください。

2.12.6 記憶域プリファレンス

この項では、記憶域プリファレンスに関連付けられた型について説明します。

CTXSYS.DEFAULT_STORAGE storageプリファレンスはBASIC_STORAGE型を使用します。

2.12.7 ワードリスト・プリファレンス

この項では、ワードリスト・プリファレンスに関連付けられた型について説明します。

CTXSYS.DEFAULT_WORDLISTプリファレンスは、使用するデータベース言語に対して言語ステマーを使用します。使用している言語が表2-37に記載されていない場合、このプリファレンスは、NULLステマーおよびGENERICファジー・マッチング属性にデフォルト設定されます。

2.13 システム・パラメータ

この項では、Oracle Textのシステム・パラメータについて説明します。システム・パラメータは次のカテゴリに分類されます。

- 汎用システム・パラメータ

- デフォルトの索引付けパラメータ

- デフォルトのポリシー・パラメータ

関連項目:

"システム定義プリファレンス"

2.13.1 汎用システム・パラメータ

Oracle Textをインストールすると、システム定義プリファレンスの他に、次のシステム・パラメータが設定されます。

表2-44 汎用システム・パラメータ

システム・パラメータ

説明

MAX_INDEX_MEMORY

CREATE INDEXおよびALTER INDEXのPARAMETERS句に指定できる最大の索引付けメモリー。このパラメータの最大値は2GB -1です。

DEFAULT_INDEX_MEMORY

CREATE INDEXおよびALTER INDEXとともに使用されるデフォルトの索引付けメモリー。

LOG_DIRECTORY

CTX_OUTPUTログ・ファイル用のディレクトリ。

CTX_DOC_KEY_TYPE

CTX_DOCプロシージャに対するデフォルト入力キー・タイプ(ROWIDまたはPRIMARY_KEYのいずれか)。インストール時にROWIDに設定されます。

関連項目: 「CTX_DOC.SET_KEY_TYPE」

システムのデフォルト値は、CTX_PARAMETERSビューを問い合せて表示します。デフォルトは、CTX_ADM.SET_PARAMETERプロシージャを使用して変更します。

2.13.2 デフォルトの索引付けパラメータ

この項では、CONTEXT索引およびCTXCAT索引の作成時に使用できる索引パラメータについて説明します。

この項の内容は次のとおりです。

- CONTEXT索引のパラメータ

- CTXCAT索引のパラメータ

- CTXRULE索引のパラメータ

デフォルト値の表示

システムのデフォルト値は、CTX_PARAMETERSビューを問い合せて表示します。たとえば、すべてのパラメータと値を表示する場合は、次の文を入力します。

SQL> SELECT par_name, par_value from ctx_parameters;

デフォルト値の変更

CTX_ADM.SET_PARAMETERプロシージャを使用して、別のカスタム・プリファレンス名またはシステム定義プリファレンス名をデフォルト値として指定するように変更します。

2.13.2.1 CONTEXT索引のパラメータ

次のデフォルトのパラメータは、CONTEXT索引の作成時にCREATE INDEXのPARAMETERS句にプリファレンスを指定しない場合に使用されます。デフォルトの各パラメータによって、データ記憶域、フィルタ処理、レクサー処理などに使用するためにシステム定義プリファレンスが指定されます。

表2-45 デフォルトのCONTEXT索引のパラメータ

パラメータ

使用される場合

デフォルト値

DEFAULT_DATASTORE

CREATE INDEXのPARAMETERS句にデータストア・プリファレンスが指定されていない場合

CTXSYS.DEFAULT_DATASTORE

DEFAULT_FILTER_FILE

CREATE INDEXのPARAMETERS句にフィルタ・プリファレンスが指定されておらず、次の条件のいずれかに該当する場合

- ファイルが外部ファイル(BFILE)に格納されている。

- FILE_DATASTOREを使用するデータストア・プリファレンスが指定されている。

CTXSYS.AUTO_FILTER

DEFAULT_FILTER_BINARY

CREATE INDEXのPARAMETERS句にフィルタ・プリファレンスが指定されておらず、Oracle Textによりテキスト列のデータ型がRAW、LONG RAWまたはBLOBであることが検出された場合

CTXSYS.AUTO_FILTER

DEFAULT_FILTER_TEXT

CREATE INDEXのPARAMETERS句にフィルタ・プリファレンスが指定されておらず、Oracle Textによりテキスト列のデータ型がLONG、VARCHAR2、VARCHAR、CHARまたはCLOBのいずれかであることが検出された場合

CTXSYS.NULL_FILTER

DEFAULT_SECTION_HTML

CREATE INDEXのPARAMETERS句にセクション・グループが指定されておらず、次の条件のいずれかに該当する場合

- データストア・プリファレンスにURL_DATASTOREを使用している。

- フィルタ・プリファレンスにAUTO_FILTERを使用している。

CTXSYS.HTML_SECTION_GROUP

DEFAULT_SECTION_TEXT

CREATE INDEXのPARAMETERS句にセクション・グループが指定されておらず、URL_DATASTOREおよびAUTO_FILTERのいずれも使用していない場合

CTXSYS.NULL_SECTION_GROUP

DEFAULT_STORAGE

CREATE INDEXのPARAMETERS句に記憶域プリファレンスが指定されていない場合

CTXSYS.DEFAULT_STORAGE

DEFAULT_LEXER

CREATE INDEXのPARAMETERS句にレクサー・プリファレンスが指定されていない場合

CTXSYS.DERAULT_LEXER

DEFAULT_STOPLIST

CREATE INDEXのPARAMETERS句にストップリスト・プリファレンスが指定されていない場合

CTXSYS.DEFAULT_STOPLIST

DEFAULT_WORDLIST

CREATE INDEXのPARAMETERS句にワードリスト・プリファレンスが指定されていない場合

CTXSYS.DEFAULT_WORDLIST

関連項目:

"システム定義プリファレンス"

2.13.2.2 CTXCAT索引のパラメータ

次のデフォルトの各パラメータは、CREATE INDEXを使用したCTXCAT索引の作成時に、そのパラメータ文字列にパラメータを指定しない場合に使用されます。CTXCAT索引は、索引セット、レクサー、記憶域、ストップリストおよびワードリストのパラメータのみをサポートしています。デフォルトの各パラメータによって、システム定義プリファレンスが指定されます。

表2-46 デフォルトのCTXCAT索引のパラメータ

パラメータ

使用される場合

デフォルト値

DEFAULT_CTXCAT_INDEX_SET

CREATE INDEXのPARAMETERS句に索引セットが指定されていない場合

該当なし

DEFAULT_CTXCAT_STORAGE

CREATE INDEXのPARAMETERS句に記憶域プリファレンスが指定されていない場合

CTXSYS.DEFAULT_STORAGE

DEFAULT_CTXCAT_LEXER

CREATE INDEXのPARAMETERS句にレクサー・プリファレンスが指定されていない場合

CTXSYS.DERAULT_LEXER

DEFAULT_CTXCAT_STOPLIST

CREATE INDEXのPARAMETERS句にストップリスト・プリファレンスが指定されていない場合

CTXSYS.DEFAULT_STOPLIST

DEFAULT_CTXCAT_WORDLIST

CREATE INDEXのPARAMETERS句にワードリスト・プリファレンスが指定されていない場合

CTXCAT索引にワードリスト・プリファレンスを指定することはできますが、CATSEARCH問合せ言語ではワイルド・カード、ファジーおよびステミングをサポートしていないため、ほとんどの属性は適用されません。有効な唯一の属性は、日本語データに対するPREFIX_INDEXです。

CTXSYS.DEFAULT_WORDLIST

関連項目:

"システム定義プリファレンス"

2.13.2.3 CTXRULE索引のパラメータ

表2-47に示すデフォルトの各パラメータは、CREATE INDEXを使用したCTXRULE索引の作成時に、そのパラメータ文字列にパラメータを指定しない場合に使用されます。CTXRULE索引は、レクサー、記憶域、ストップリストおよびワードリストのパラメータのみをサポートしています。デフォルトの各パラメータによって、システム定義プリファレンスが指定されます。

表2-47 デフォルトのCTXRULE索引のパラメータ

パラメータ

使用される場合

デフォルト値

DEFAULT_CTXRULE_LEXER

CREATE INDEXのPARAMETERS句にレクサー・プリファレンスが指定されていない場合

CTXSYS.DERAULT_LEXER

DEFAULT_CTXRULE_STORAGE

CREATE INDEXのPARAMETERS句に記憶域プリファレンスが指定されていない場合

CTXSYS.DEFAULT_STORAGE

DEFAULT_CTXRULE_STOPLIST

CREATE INDEXのPARAMETERS句にストップリスト・プリファレンスが指定されていない場合

CTXSYS.DEFAULT_STOPLIST

DEFAULT_CTXRULE_WORDLIST

CREATE INDEXのPARAMETERS句にワードリスト・プリファレンスが指定されていない場合

CTXSYS.DEFAULT_WORDLIST

DEFAULT_CLASSIFIER

PARAMETER句に分類プリファレンスが指定されていない場合

RULE_CLASSIFIER

関連項目:

"システム定義プリファレンス"

CTXRULE索引の制限事項

CTXRULE索引では、次の問合せ演算子をサポートしていません。

- FUZZY

- SOUNDEX

また、次のBASIC_WORDLIST属性もサポートしていません。

- SUBSTRING_INDEX

- PREFIX_INDEX

2.13.3 デフォルトのポリシー・パラメータ

Oracle Textでポリシーを使用すると、索引を作成せずにドキュメント・サービスを利用できます。たとえば、ドキュメント・サービスをフィルタ処理してプレーン・テキストまたはHTMLバージョンのドキュメントを生成したり、テーマ・サマリーまたはテーマ・リストを生成してハイライトすることが可能です。

表2-48に、ポリシーを作成するときや、CTX_DDL.CREATE_POLICYを使用する際にプリファレンスを指定しないときのデフォルト・パラメータを示します。デフォルトの各パラメータによって、フィルタ処理、レクサー処理などに使用するためにシステム定義プリファレンスが指定されます。

表2-48 CTX_DDL.CREATE_POLICYのデフォルトのポリシー・パラメータ

パラメータ

使用される場合

デフォルト値

DEFAULT_FILTER_BINARY

CREATE_POLICYにフィルタ・プリファレンスが指定されず、ドキュメント・サービスのドキュメント・パラメータがVARCHAR2またはCLOBデータ型、BLOBまたはBFILEデータ型。

CTXSYS.AUTO_FILTER

DEFAULT_FILTER_TEXT

CREATE_POLICYにフィルタ・プリファレンスが指定されず、ドキュメント・サービスのドキュメント・パラメータがVARCHAR2またはCLOBデータ型、BLOBまたはBFILEデータ型。

CTXSYS.NULL_FILTER

DEFAULT_SECTION_HTML

CREATE_POLICYにセクション・グループが指定されず、フィルタ・プリファレンスでAUTO_FILTERを使用する。

CTXSYS.HTML_SECTION_GROUP

DEFAULT_SECTION_TEXT

CREATE_POLICYにsection_groupが指定されず、AUTO_FILTERを使用ししない。

CTXSYS.NULL_SECTION_GROUP

DEFAULT_LEXER

CREATE_POLICYにレクサー・プリファレンスが指定されない。

CTXSYS.DERAULT_LEXER

DEFAULT_STOPLIST

CREATE_POLICYにストップリストが指定されない。

CTXSYS.DEFAULT_STOPLIST

DEFAULT_WORDLIST

CREATE_POLICYにワードリスト・プリファレンスが指定されない。

CTXSYS.DEFAULT_WORDLIST

関連項目:

- "システム定義プリファレンス"

- "詳細は、「CREATE_POLICY」を参照してください

3 Oracle Text CONTAINS問合せ演算子

この章では、CONTAINS演算子の優先順位を説明し、各演算子の説明、構文および例を示します。

この章の内容は次のとおりです。

- 演算子の優先順位

- ABOUT

- ACCUMulate ( _ )

- AND(&)

- Broader Term (BT_ BTG_ BTP_ BTI)

- CTXFILTERCACHE

- DEFINEMERGE

- DEFINESCORE

- EQUIValence(=)

- FUZZY

- HASPATH

- INPATH

- MDATA

- MINUS(-)

- MNOT

- Narrower Term (NT_ NTG_ NTP_ NTI)

- NDATA

- NEAR (;)

- NOT(~)

- OR(|)

- PREFERRED TERM(PT)

- RELATED TERM(RT)

- SDATA

- SOUNDEX(!)

- STEM($)

- ストアド・クエリー式(SQE)

- SYNONYM(SYN)

- THRESHOLD(>)

- TRANSLATION TERM(TR)

- TRANSLATION TERM SYNONYM(TRSYN)

- TOP TERM(TT)

- WEIGHT(*)

- ワイルド・カード(% _)

- WITHIN

3.1 演算子の優先順位

演算子の優先順位は、問合せ式のコンポーネントが評価される順序を決定します。テキスト問合せ演算子は、それぞれ独自の評価順を持つ2組の演算子に分けることができます。次に、これら2つのグループをグループ1およびグループ2として説明します。

どのような場合でも、問合せ式は演算子の優先順位に従って、左から右の順に評価されます。優先順位の高い演算子が最初に評価されます。優先順位が等しい演算子は、式の中で現れる順序に従って左から右へ適用されます。

- グループ1の演算子

- グループ2の演算子および文字

- プロシージャ型演算子

- 優先順位の例

- 優先順位の変更

3.1.1 グループ1の演算子

問合せ式内のグループ1の演算子を優先順位の高い順に並べると次のようになります。

1. EQUIValence(=)

2. NEAR (;)

3. WEIGHT(*)、THRESHOLD(>)

4. MINUS(-)

5. NOT(~)

6. MNOT

7. WITHIN

8. AND(&)

9. OR(|)

10. ACCUMulate ( _ )

3.1.2 グループ2の演算子および文字

問合せ式内のグループ2の演算子を評価順位の高い順に並べると次のようになります。

1. ワイルド・カード文字

2. STEM($)

3. FUZZY

4. SOUNDEX(!)

3.1.3 プロシージャ型演算子

グループ1にもグループ2にもリストされていないその他の演算子は、プロシージャ型演算子です。これらの演算子には優先順位がありません。これらには、SQEおよびシソーラス演算子が含まれます。

3.1.4 優先順位の例

表3-1 問合せ式の優先順位の例

問合せ式

評価順

w1 | w2 & w3

(w1) | (w2 & w3)

w1 & w2 | w3

(w1 & w2) | w3

?w1, w2 | w3 & w4

(?w1), (w2 | (w3 & w4))

abc = def ghi & jkl = mno

((abc = def) ghi) & (jkl=mno)

dog and cat WITHIN body

dog and(cat WITHIN body)

1番目の例では、ANDはORよりも優先順位が高いため、問合せはw1を含むすべてのドキュメント、およびw2とw3の両方を含むすべてのドキュメントを戻します。

2番目の例では、問合せはw1とw2の両方を含むすべてのドキュメント、およびw3を含むすべてのドキュメントを戻します。

3番目の例では、最初にFUZZY演算子がw1に適用されます。次にAND演算子が引数w3およびw4に適用され、その後OR演算子がw2およびAND演算子の結果に適用されます。最後に、w1に対するFUZZY演算子のスコアがOR演算子のスコアに加えられます。

4番目の例は、EQUIVALENCE演算子がAND演算子より優先順位が高いことを示しています。

5番目の例は、AND演算子がWITHIN演算子より優先順位が低いことを示しています。

3.1.5 優先順位の変更

優先順位は、グループ化文字によって次のように変わります。

- カッコ内の拡張操作または実行操作は、演算子の優先順位に関係なく、他の拡張操作に優先して解決されます。

- カッコ内の式の評価に関しては、演算子の優先順位が有効です。

- カッコ内では、拡張演算子は自身もカッコ内に存在しないかぎり式に適用されません。

関連項目:

「Oracle Text問合せの特殊文字」の「グループ化文字」

3.2 ABOUT

動作概要

問合せ語句に関連するドキュメントを戻すには、ABOUT演算子を使用します。英語とフランス語では、ABOUTによって概念を問い合せることができます。これは、概念が実際に問合せに含まれていなくても可能です。たとえば、heat (熱)に対するABOUT問合せでは、temperature (温度)という語が問合せに含まれていなくても、温度に関連するドキュメントが戻されます。

その他の言語では、ABOUTを使用すると、多くの場合は戻されるドキュメントの数が多くなり、結果のソート順序が改善される場合があります。Oracle Textはすべての言語において、ABOUT問合せの結果に対し、関連性の最も高いドキュメントが最も高いスコアとなるようにスコア付けします。

英語とフランス語での動作

英語とフランス語では、ABOUT演算子を使用して概念を問い合せます。システムは、索引のテーマ・コンポーネントの概念情報を検索します。索引にテーマ・コンポーネントを作成するには、INDEX_THEMES BASIC_LEXER属性をYESに設定します。

注意:

英語およびフランス語でABOUT問合せを入力する場合、索引にテーマ・コンポーネントは必要ありません。ただし、索引にテーマ・コンポーネントがあると、ABOUT問合せの結果が最も向上します。

Oracle Textでは、問合せワードまたは句に関連する概念を含むドキュメントを取り出します。たとえば、CaliforniaについてのABOUT問合せを入力すると、システムによって、Californiaの都市であるLos AngelesとSan Franciscoという語句を含むドキュメントが戻されます。このABOUT問合せで戻されるドキュメントには、Californiaという語句は必ずしも含まれてはいません。

ABOUT問合せに指定したワードまたは句が、索引に格納されたテーマと完全に一致する必要はありません。Oracle Textは、索引の検索を実行する前に、ワードまたは句を正規化します。

ABOUT演算子は、CONTAINS SQL演算子およびCATSEARCH SQL演算子と併用できます。CATSEARCHの場合は、CONTEXT文法による問合せテンプレートを使用して索引テーマを問い合せる必要があります。「例」の項の「CATSEARCHによるABOUT問合せ」を参照してください。

構文

構文

説明

about(phrase)

すべての言語において、ABOUT問合せがない同じ問合せよりも、戻される関連ドキュメント数が増加します。phraseパラメータは、1つのワード、句またはフリー・テキスト・フォーマットのワード文字列です。

英語およびフランス語では、索引付け時にBASIC_LEXER INDEX_THEMES属性がYESに設定された場合、phraseに関連する概念を含むドキュメントを戻します。

戻されたスコアは関連性スコアです。

Oracle Textでは、phraseに組み込まれた問合せ演算子は無視されます。

索引にテーマ情報のみが含まれている場合、ABOUT演算子およびオペランドをテキスト列の問合せに組み込む必要があります。そうしない場合、Oracle Textからエラーが戻されます。

指定するphraseは、4000文字以内です。

大/小文字の区別

問合せを適切な文字で表すと、ABOUT問合せの結果が最も向上します。これは、問合せの正規化が、大/小文字が区別されるナレッジ・カタログに基づくためです。

ただし、ABOUT問合せの結果を取得するために、大/小文字を正確に区別して問合せを入力する必要はありません。システムが、最適な方法で問合せを解釈します。たとえば、CISCOという文字で問合せを入力し、これがナレッジ・カタログで検出されない場合、システムでは検索用の関連概念としてCiscoを使用する場合があります。

ABOUT結果の改善

ABOUT演算子は、英語とフランス語では、提供されているナレッジ・ベースを使用して入力された句を解析します。したがって、ABOUT問合せは、ナレッジ・ベースにある概念の認識と解析に制限されています。

使用しているアプリケーション固有の用語をナレッジ・ベースに追加すると、ABOUT問合せの結果が改善されます。

関連項目:

「Oracle Textのユーティリティ」の「ナレッジ・ベースの拡張」

制限事項

ABOUT問合せで指定する句は、4000文字以内です。

ABOUT演算子の例

単一のワード

サッカー(soccer)についてのドキュメントを検索するには、次の構文を使用します。

'about(soccer)'

句

句を問合せ語句として入力することで、問合せをさらに詳細化し、国際大会のサッカー・ルール(soccer rules in international competition)についてのドキュメントを含めます。

'about(soccer rules in international competition)'

この英語の例では、soccer、rulesまたはinternational competitionのテーマを持つすべてのドキュメントがOracle Textにより戻されます。

通常、スコア付けの点では、これら3つのテーマをすべて含むドキュメントの方が、これらのテーマのうちの1つまたは2つのみを含むドキュメントより高いスコアを示します。

構成されていない句

次の例のように、構成されていない句で問い合せることもできます。

'about(japanese banking investments in indonesia)'

結合された問合せ

ANDやNOTなど、他の演算子を使用して、ABOUT問合せをワード問合せと結合します。たとえば、結合されたABOUTおよびワード問合せを次のように入力します。

'about(dogs) and cat'

次のように、ABOUT問合せを別のABOUT問合せと結合します。

'about(dogs) not about(labradors)'

注意:

ABOUTは、'ABOUT (xyz) WITHIN abc'のようにWITHIN演算子と結合できません。

CATSEARCHによるABOUT問合せ

ABOUT問合せは、次のように、grammarにCONTEXTを設定した問合せテンプレートを使用して、CATSEARCHとともに入力します。

select pk||' ==> '||text from test
where catsearch(text,
'<query>
<textquery grammar="context">
about(California)
</textquery>
<score datatype="integer"/>
</query>','')>0
order by pk;

3.3 ACCUMulate(,)

問合せ語句のいずれかが1つ以上含まれるドキュメントを検索するには、ACCUM演算子を使用します。この場合、戻されるドキュメントは、検出された問合せ語句の数(および頻度)に基づく累積スコアによってランク付けされます。

構文

構文

説明

term1,term2

term1 ACCUM term2

term1またはterm2を含むドキュメントを戻します。語句の重みによってドキュメントをランク付けし、語句の合計の重みが最も高いドキュメントに最も高いスコアを割り当てます。

ACCUMulateスコア付け

ACCUMulateはまず、複数ある問合せ語句のうち、いくつの語句がドキュメントにあるかということに基づいてドキュメントをスコア付けします。一致する語句の数が多いドキュメントは、一致する語句の数が少ないドキュメントよりも常にスコアが高くなります。これは、後者のドキュメントの方が語句の出現頻度が高い場合でも当てはまります。つまり、dog ACCUM catを検索した場合、

the dog played with the cat

は、次の文よりもスコアが高くなります。

the big dog played with the little dog while a third dog ate the dog food

スコアは複数の範囲に分けられます。2つの語句のACCUMでは、両方の語句に一致するヒットは、常に51から100の範囲のスコアとなりますが、いずれかの語句のみが一致するヒットは、1から50の範囲のスコアとなります。同様に、3つの語句のACCUMでは、1つの語句に一致するヒットは、1から33の範囲のスコアとなり、2つの語句に一致するヒットは34から66の範囲のスコアとなり、また3つのすべての語句に一致するヒットは67から100の範囲のスコアとなります。これらの範囲内では、通常のスコア付けのアルゴリズムが適用されます。

関連項目:

スコアの計算方法の詳細は、「Oracle Textのスコア付けのアルゴリズム」を参照してください。

複数の語句にそれぞれ異なる重みを割り当てることができます。たとえば、次の形式の問合せでは、

soccer, Brazil*3

Brazilという語句には、soccerの3倍の重みが割り当てられます。したがって、次のドキュメント

people play soccer because soccer is challenging and fun

は、次のドキュメントよりも低いスコアになります。

Brazil is the largest nation in South America

ただし、どちらのドキュメントも、次のドキュメントより下にランク付けされます。

soccer is the national sport of Brazil

soccer ACCUM Brazil*3という問合せは、soccer ACCUM Brazil ACCUM Brazil ACCUM Brazilと同等である点に注意してください。問合せ語句Brazilはそれぞれ独立したものとみなされるため、問合せ全体が2つではなく4つの語句を含むもののようにスコア付けされ、したがってスコア付けの範囲も4つになります。前述のBrazilとsoccerのドキュメントの1つ目の例では、1つ目の範囲(1から25)、2つ目の例では3つ目の範囲(51から75)、3つ目の例では4つ目の範囲(76から100)でスコア付けされます。(Brazilが含まれるドキュメントは少なくとも3つの問合せ語句に一致するとみなされるため、2つ目の範囲でスコア付けされるドキュメントはありません。)

ACCUM演算子の例

set serveroutput on;
DROP TABLE accumtbl;
CREATE TABLE accumtbl (id NUMBER, text VARCHAR2(4000) );

INSERT INTO accumtbl VALUES ( 1, 'the little dog played with the big dog
while the other dog ate the dog food');
INSERT INTO accumtbl values (2, 'the cat played with the dog');

CREATE INDEX accumtbl_idx ON accumtbl (text) indextype is ctxsys.context;

PROMPT dog ACCUM cat
SELECT SCORE(10) FROM accumtbl WHERE CONTAINS (text, 'dog ACCUM cat', 10)
> 0;

PROMPT dog*3 ACCUM cat
SELECT SCORE(10) FROM accumtbl WHERE CONTAINS (text, 'dog*3 ACCUM cat', 10)
> 0;

これは、次の出力結果を戻します。dogおよびcatが両方とも含まれるドキュメントが最もスコアが高い点に注意してください。

dog ACCUM cat
ID  SCORE(10)
----- ----------
1          6
2         52

dog*3 ACCUM cat
ID  SCORE(10)
----- ----------
1         53
2         76

関連項目

WEIGHT(*)

3.4 AND (&)

各問合せ語句が1つ以上含まれるドキュメントを検索するには、AND演算子を使用します。AND演算子は、すべての問合せ語句が含まれるドキュメントを戻しますが、OR演算子は、いずれかの問合せ語句が含まれるドキュメントを戻します。

構文

構文

説明

term1&term2

term1 and term2

term1およびterm2が両方含まれているドキュメントを戻します。そのオペランドの最小スコアを戻します。すべての問合せ語句が存在する必要があり、スコアの低い方が選択されます。

AND演算子の例

blue、blackおよびredという語句が含まれているすべてのドキュメントを取得するには、次の問合せを入力します。

'blue & black & red'

AND問合せでは、各問合せ語句のスコアのうち最も低いスコアが戻ります。この例では、ドキュメント内のblue、black および redの3つの語句のスコアがそれぞれ10、20および30の場合、ドキュメントのスコアは10になります。

関連項目

"OR (|)"

3.5 BROADER TERM(BT、BTG、BTP、BTI)

指定された問合せ語句の上位語としてシソーラスで定義されている語句が含まれるように問合せを拡張するには、BROADER TERM演算子(BT、BTG、BTP、BTI)を使用します。上位語の上位語、さらにその上位語、というようにシソーラス階層を上がるように問合せを拡張できます。

構文

構文

説明

BT(term[(qualifier)][,level][,thes])

シソーラスでtermに対する上位語として定義されたすべての語句が含まれるように、問合せを拡張します。

BTG(term[(qualifier)][,level][,thes])

シソーラスでtermに対する上位汎用語として定義されたすべての語句が含まれるように、問合せを拡張します。

BTP(term[(qualifier)][,level][,thes])

シソーラスでtermに対する上位語分語として定義されたすべての語句が含まれるように、問合せを拡張します。

BTI(term[(qualifier)][,level][,thes])

シソーラスでtermに対する上位インスタンス語として定義されたすべての語句が含まれるように、問合せを拡張します。

term

BROADER TERM演算子にオペランドを指定します。termは、thesによって指定されたシソーラスで、語句に対して定義された上位語のエントリが含まれるようにOracle Textによって拡張されます。たとえば、BTG(dog)と指定すると、拡張には、dogに対する上位汎用語として定義されている語句のみが含まれます。拡張演算子はterm引数に指定できません。

この拡張に含まれる上位語の数は、levelの値によって決定されます。

qualifier

termがthesの同じ階層分岐で2つ以上のノードに現れる同形異義語(同じスペルで複数の意味を持つワードまたは句)の場合は、termに修飾子を指定します。

BROADER TERM問合せで同形異義語に修飾子が指定されていない場合は、すべての同形異義語の上位語が含まれるように問合せが拡張されます。

level

指定された語句に対する上位語を戻すために、シソーラス階層内を横断するレベル数を指定します。たとえば、BTのレベル1問合せは、上位語が定義されている場合、指定した問合せ語句の上位語エントリを戻します。レベル2問合せは、指定した問合せ語句の上位語エントリ、さらにそれらの上位語の上位語エントリを戻します。

level引数はオプションで、デフォルト値は(1)です。level引数に0(ゼロ)または負の値を設定すると、元の問合せ語句のみを戻します。

指定された問合せ語句の拡張問合せを戻すために使用するシソーラス名を指定します。thes引数はオプションで、デフォルト値はDEFAULTです。このデフォルト値を使用する場合は、シソーラス表にDEFAULTという名前のシソーラスが存在している必要があります。

注意:

thesを指定する場合は、levelも指定する必要があります。

BROADER TERM演算子の例

次の問合せは、tutorialという問合せ語句、またはDEFAULTシソーラスでtutorialのBT語として定義された語句が含まれているすべてのドキュメントを戻します。

'BT(tutorial)'

シソーラス名を指定する場合は、次のようにlevelも指定する必要があります。

'BT(tutorial, 2, mythes)'

同形異義語のBROADER TERM演算子

machineがcrane(building equipment)の上位語で、birdがcrane(waterfowl)の上位語であり、上位語問合せに修飾子が指定されていない場合、問合せ

BT(crane)

は、次のように拡張されます。

'{crane} or {machine} or {bird}'

上位語問合せでwaterfowlがcraneの修飾子として指定されている場合、問合せ

BT(crane{(waterfowl)})

は、次のように拡張されます。

'{crane} or {bird}'

注意:

BROADER TERMまたはNARROWER TERM問合せで修飾子を指定する場合、修飾子およびその表記法(カッコ付け)はこの例のようにエスケープする必要があります。

関連項目

シソーラスの上位語のブラウズについては、「CTX_THESパッケージ」の「CTX_THES.BT」を参照してください。

3.6 CTXFILTERCACHE

Oracle Textには、問合せ結果のキャッシュに使用できる、問合せフィルタ・キャッシュというキャッシュ・レイヤーがあります。問合せフィルタ・キャッシュは、問合せ間で共有が可能です。そのため、キャッシュされた問合せ結果を複数の問合せで再利用でき、問合せの応答時間が短縮されます。問合せフィルタ・キャッシュでどの問合せ結果、または問合せ結果の一部をキャッシュするかを指定するには、CTXFILTERCACHE演算子を使用します。

CTXFILTERCACHEは、CONTEXT文法問合せのみサポートしています。テンプレート問合せなどのCONTAINER問合せは、サポートされません。テンプレート問合せに対して実行すると、エラーが発生します。

注意:

CTXFILTERCACHEを使用する前に、次のようにPURGE recyclebinを実行する必要があります。

SQL> PURGE recylebin;

ごみ箱のオブジェクトのパージの詳細は、『Oracle Database管理者ガイド』を参照してください。

構文

ctxfiltercache((query_text) [, save_score] [, topN])

query_text

結果をキャッシュに格納する必要がある問合せを指定します。

save_score

すべての問合せ結果を、そのスコアとともにキャッシュに格納する場合は、TRUEを指定します。

デフォルトはFALSEです。この場合、問合せ結果ごとに戻されるスコアは100で、このスコアはキャッシュに格納されません。問合せ結果のみキャッシュに格納されます。

問合せ結果は再利用し、そのスコアは他の問合せで再利用しない場合は、FALSEを指定します。これは、問合せテキストをセキュリティ・フィルタなどのフィルタとして使用する場合に特に便利です。キャッシュされた問合せの一部の関連性が、問合せ全体の関連性に影響しないような場合です。そのため、AND演算子(そのオペランドの低いスコアを戻す)とともに使用する場合、スコア100は問合せ全体のスコアに影響しません。

topN

上位スコアの問合せ結果のみをキャッシュに格納する場合は、TRUEを指定します。上位どのくらいのスコアの問合せ結果がキャッシュに格納されるかは、Oracle Textによって内部的に決定されます。これによって、キャッシュのメモリー消費量が抑えられます。

注意:

topNにTRUEを指定する場合は、save_scoreもTRUEに設定する必要があります。

CTXFILTERCACHEの例

ストアド・クエリー結果およびTopNの例

次の例は、common_predicate問合せの問合せ結果をキャッシュに格納します。

select * from docs where contains(txt, 'ctxfiltercache((common_predicate), FALSE)')>0;

ここで、save_scoreはFALSEです。したがって問合せ結果ごとに戻されるスコアは100であり、このスコアはキャッシュに格納されません。

次の例では、common_predicate問合せの結果がキャッシュされ、new_query問合せによって再利用されます。

select * from docs where contains(txt, 'new_query & ctxfiltercache((common_predicate), FALSE)')>0;

common_predicate問合せの結果をすべて、実際のスコアとともにキャッシュに格納するには、次の例のようにsave_scoreをTRUEに設定します。

select * from docs where contains(txt, 'ctxfiltercache((common_predicate), TRUE)')>0;

common_predicate問合せで上位スコアの結果のみをキャッシュに格納する場合は、次の例で説明しているように、topNをTRUEに設定します。

select id, score(1) from docs where contains(txt, 'ctxfiltercache((common_predicate), TRUE, TRUE)', 1)>0 order by score(1) desc;

スコアが問合せの主要部分にのみ関連する場合、問合せの主要部分についてはtopNをTRUEに設定し、フィルタ部分についてはFALSEに設定します。次の例は、ctxfiltercache句を2つ使用する問合せです。"cat AND dog"という自由テキスト検索を実行し、検索処理にセキュリティ・フィルタを適用します。この問合せで両方の部分の結果は別々にキャッシュされるため、再利用は可能ですが、スコアは問合せの最初の部分にしか該当しません。

select id, score(1) from docs where contains(txt, 'ctxfiltercache((cat AND dog), TRUE, TRUE) AND ctxfiltercache((john WITHIN allowedUsers), FALSE, FALSE)', 1) > 0;

キャッシュされたスコアの例

CTXFILTERCACHEは、一度にscoreの1つの問合せ結果をキャッシュに格納します。したがって、シリアルに実行される2つの類似の問合せは同じ問合せとみなされ、キャッシュに格納される問合せは1つのみです。

次の例の問合せAと問合せBは、2つの類似の問合せを示します。Aのヒット・スコアは100で、Bのヒット・スコアは5です。キャッシュが空で、問合せAを最初に実行するとします。計算されたスコア100は、この問合せのキャッシュに格納されます。問合せBを後ですぐに実行する場合、キャッシュに格納されたスコアの100が含まれるため、問合せBはキャッシュされたスコアの100を戻します。逆に、問合せAの前に問合せBを実行する場合、戻されるキャッシュおよび計算されたスコアは5です。

問合せA:

select  /*+ DOMAIN_INDEX_SORT */ id, score(1) as ORADD from mydocs where contains (txt ,'ctxfiltercache((DEFINEMERGE
(       ((definescore(Oracle,relevance)),(definescore(Java,discrete)))
,OR,ADD
)),T,T)',1)>0 order by score(1) desc;

問合せB:

select /*+ DOMAIN_INDEX_SORT */ id, score(1) as ORAVG from docs where contains (txt ,'ctxfiltercache((DEFINEMERGE
(       ((definescore(Oracle,relevance)),(definescore(Java,discrete)))
,OR,AVG
)),T,T)',1)>0 order by score(1) desc;

注意

問合せフィルタ・キャッシュは、索引レベルの記憶域プリファレンスです。

問合せフィルタ・キャッシュの記憶域プリファレンスは、索引レベルでも設定されている場合のみ、パーティション・レベルで設定できます。フィルタ・キャッシュのプリファレンスを索引レベルで設定せずにフィルタ・キャッシュのプリファレンスをパーティション・レベルで設定すると、次のエラーがスローされます: 索引、プリファレンス、ソースまたはセクション名の構文に誤りがあります。

CTXFILTERCACHEは次の項目とともに使用されないので注意してください。

- INPATH/HASPATH問合せ

- NDATAおよびSDATAのsyncindexの後の最初の問合せ

topNがFALSEの場合、CTXFILTERCACHE演算子は最上位の演算子か、次の演算子の子です。

- AND

- ACCUM

- NOT

- または

- THRESHOLD (左辺の演算子のみ)

- WEIGHT (左辺の演算子のみ)

topNがTRUEの場合は、次のようになります。

- ctxfiltercache演算子は最上位の演算子か、次の演算子の子です。

- AND

- THRESHOLD (左辺の演算子のみ)

- WEIGHT (左辺の演算子のみ)

- TopNは、ctxfiltercache演算子が順序キーORDER BY SCORE(n) DESCおよびグローバル索引用のOracleヒントDOMAIN_INDEX_SORTとともに使用される場合にのみ有効です。さらに、パーティション索引の場合、問合せにパーティション・プルーニングを必ず含めてください。そうしないと、topNをTRUEに設定しても、topNモードではなく通常モードが使用されます。

注意:

ctxfiltercache演算子は、CONTEXT文法問合せのみサポートしています。つまり、テンプレート問合せのようなコンテナ問合せはサポートされません。

問合せテンプレートでctxfiltercacheを使用する場合、次のタイプのエラーが発生します。

ERROR at line 1:
ORA-29902: error in executing ODCIIndexStart() routine
ORA-20000: Oracle Text error:
DRG-50900: text query parser error on line 1, column 8
DRG-50905: invalid score threshold <textquery

このエラーになる問合せの例は、次のとおりです。

select score(1), id, txt from tdrbqfc45 where contains(txt, 'ctxfiltercache((<query><textquery>near2((a,b,c,d))
</textquery><score datatype="FLOAT"/>
</query>),true)', 1)>0 order by id;

ctxfiltercacheを使用するには、基本記憶域属性query_filter_cache_sizeを使用して、問合せフィルタ・キャッシュのサイズを指定する必要があります。デフォルトのサイズは0です。これは、ctxfiltercacheがデフォルトで無効であることを意味します。

ctx_filter_cache_statisticsビューには、問合せフィルタ・キャッシュに関する様々な統計が用意されています。

問合せフィルタ・キャッシュは、スコアの計算方法が異なるだけの問合せを区別しません。スコアは、問合せフィルタ・キャッシュ内ですぐに計算されません。この仕組みの図は、「キャッシュされたスコアの例」を参照してください。

関連項目

ctx_filter_cache_statisticsビューの詳細は、「CTX_FILTER_CACHE_STATISTICS」を参照してください。

query_filter_cache_size基本記憶域属性の詳細は、「BASIC_STORAGE」を参照してください。

3.7 DEFINEMERGE

ANDおよびORの子ノードのスコアをマージする方法を定義するには、DEFINEMERGE演算子を使用します。DEFINEMERGE演算子は、オペランドにANDまたはORを使用できる演算子のオペランドとして使用できます。スコアは3つの方法でマージできます。最小値を選択する方法、最大値を選択する方法、またはすべての子ノードの平均スコアを計算する方法です。

DEFINESCOREは、DEFINEMERGEを使用する前に使用してください。

構文

DEFINEMERGE ( (  (text_query1), (text_query2), … )  , operator, merge_method )

構文

説明

text_query1,2 ...

検索基準を定義します。これらのパラメータには、ANDまたはOR演算子に対して有効な値を設定できます。

operator

2つのtext_queryパラメータ間の関係を定義します。

merge_method

text_queryのスコアのマージ方法を定義します。有効な値: MIN、MAX、AVG、ADD。

DEFINEMERGE演算子の例

'DEFINEMERGE (((dog , cat) , (blue or black)), AND, MIN )'

「dog ACCUM cat」および「blue OR black」という式は、デフォルトのスコア付けスキーマを使用し、次に、2つの最小スコアを、マージしたスコアとして使用して問い合せます。

'DEFINEMERGE( ((DEFINESCORE(dog, DISCRETE)) , (cat)), AND, MAX)'

「dog」の語句にはDISCRETEスコア付けを使用し、「cat」の語句にはデフォルトの関連性スコア付けを使用し、次に、2つの最大スコアを、マージしたスコアとして使用して問い合せます。

例3-1 DEFINEMERGEおよびtext_query

次の例では、CONTAINS問合せのtext_query部分のみを示します。

'DEFINEMERGE ( ((dog), (cat)), OR, AVG)'

「dog」や「cat」の語句は、両方の語句の平均関連性スコアを、マージしたスコアとして使用して問い合せます。

関連項目

「DEFINESCORE」

3.8 DEFINESCORE

語句、句または一連のEQUIVALENCE語句のスコア付け方法を定義するには、DEFINESCORE演算子を使用します。スコアリング式の定義は、事前定義済のスコアリング・コンポーネントと数値リテラルの算術式で構成できます。

DEFINEMERGEは、DEFINESCOREの後に使用できます。

構文

DEFINESCORE (query_term, scoring_expression)

query_term

問合せ語句または句。次の演算子を含む式も使用できます。

演算子

演算子

-

-

ABOUT

EQUIV(=)

Fuzzy

Soundex (!)

Stem ($)

Wildcards (% _)

SDATA

MDATA

scoring_expression

query_termのスコア付け方法を示す算術式。このオペランドは、次のコンポーネントを含む文字列です。

- 算術演算子: + - * /。優先順位は、乗算および除算(*、/)が加算および減算(+、-)よりも高くなります。

- グループ化演算子: ()。カッコを使用すると、算術演算子の優先順位を変更できます。

- 絶対値関数: ABS(n)はnの絶対値を戻します。nは数値を戻す式です。

- 対数関数: LOG(n)は、nの基数10の対数値を戻します。nは数値を戻す式です。

- 事前定義済のスコアリング・コンポーネント: 次の各スコアリング・コンポーネントは、様々な基準に応じて0から100の値を戻します。

名前

説明

DISCRETE

ドキュメントに語句が存在する場合はscore = 100を戻します。存在しない場合はscore = 0を戻します。

OCCURRENCE

出現回数に基づいてスコア付けします。

RELEVANCE

ドキュメントの関連性に基づいてスコア付けします。

COMPLETION

対象範囲に基づいてスコア付けします。セクションで一致語句数とすべての語句数(ストップワード数を含む)間の比率が高いほど、ドキュメントのスコアは高くなります。COMPLETIONスコア付けが適用されるのは、WITHIN演算子を使用してゾーン・セクションを検索する場合のみです。

IGNORE

語句に対するスコア付けを無視します。このコンポーネントは単独で使用する必要があります。単独で使用しない場合は、問合せで構文エラーが戻されます。問合せで唯一の語句のスコア付けがIGNOREに設定されている場合は、すべての一致ドキュメントが100の同一スコアで戻されます。

注意:

数値リテラルの場合は、SQLの数値リテラルのパターンに準拠し、倍精度浮動小数点(-3.4e38から3.4e38)の範囲内にある数値リテラルを使用できます。

scoring_expression構文

<Exp>   :=         <Exp> + <Term> | <Exp> - <Term> |  <Term>

<Term>   :=         <Term> * <Factor> | <Term> / <Factor> | <Factor>

<Factor> :=         <<NumericLiterals >>| DISCRETE | OCCURRENCE | RELEVANCE |
COMPLETION | IGNORE |  ( <Exp> ) | -<Factor> | Abs(<Exp>) | Log(<Exp>)

DEFINESCORE演算子の例

'DEFINESCORE (dog, OCCURRENCE)'

dogというワードを問い合せ、出現スコアを使用して各ドキュメントをスコア付けします。スコアは整数で戻ります。

'DEFINESCORE (Labradors are big dog, RELEVANCE)'

Labradors are big dogsという句を問い合せ、関連性スコアを使用して各ドキュメントをスコア付けします。

'cat and DEFINESCORE (dog, IGNORE)'

dogおよびcatというワードを問い合せます。catのデフォルトの関連性スコアのみをドキュメント全体のスコアとして使用します。スコアは整数で戻ります。

'DEFINESCORE (dog, IGNORE)'

dogというワードを問い合せ、dogというワードが含まれたすべてのドキュメントを戻します。この結果は、すべてのドキュメントのスコアが100になるのと同じです。スコアは整数で戻ります。

'DEFINESCORE (dog, ABS (100-RELEVANCE))'

dogというワードを問い合せ、100から関連性スコアを差し引いた絶対値を使用して各ドキュメントをスコア付けします。スコアは整数で戻ります。

'cat and DEFINESCORE (dog, RELEVANCE*5 - OCCURRENCE)'

構文エラー: 「事前定義済のコンポーネントが2つ使用されています。」が戻されます。

問合せテンプレートでDEFINESCOREが使用されている場合は、scoring_expressionがテンプレートで指定した値よりも優先されます。次の例では、「dog」と「cat」を問い合せ、「cat」はOCCURRENCE(COUNT)を使用してスコア付けし、「dog」はRELEVANCEに基づいてスコア付けします。

<query>
<textquery grammar="CONTEXT" lang="english">
DEFINESCORE(dog, RELEVANCE) and  cat
</textquery>
<score datatype="INTEGER" algorithm="COUNT"/>
</query>

制限事項

- ABOUT演算子がquery_termで使用されている場合、OCCURRENCEとCOMPLETIONのスコア付けは適用できません。使用されている場合は、問合せで構文エラーが戻されます。

- IGNOREスコアは、MINUS演算子の右側で使用できません。使用した場合は、構文エラーが発生します。

- COMPLETIONスコアを適用できるのは、DEFINESCOREをWITHIN演算子とともに使用してゾーン・セクションを検索する場合のみです。次に例を示します。

'DEFINESCORE (dog, COMPLETION) within zonesection'

それ以外の場合は、問合せで構文エラーが戻されます。

- WITHINの左側のオペランドの制限事項は、次のとおりです。

- すべてのノードで、同じ事前定義済のスコアリング・コンポーネントを使用する必要があります。(指定しない場合、事前定義済のスコア付けはRELEVANCEになります。)

- ノードでDISCRETEまたはCOMPLETIONを使用する場合、WITHINの左側の子として使用できる演算子はANDおよびOR演算子のみです。

- ノードでDISCRETEまたはCOMPLETIONを使用する場合、WITHINでは、すべてのセクション・インスタンスの最大スコアをスコアとして使用します。

- ノードでRELEVANCEまたはOCCURRENCEを使用する場合、WITHINでは、すべてのセクション・インスタンスのスコアの合計をスコアとして使用します。

- 一度にscoring_expressionで使用できる事前定義済のスコアリング・コンポーネントは1つのみです。複数の事前定義済のスコアリング・コンポーネントを使用した場合は、構文エラーが発生します。

関連項目:

『Oracle Database SQL言語リファレンス』

注意

- DEFINESCORE演算子、絶対値関数、対数関数および事前定義済のスコアリング・コンポーネントでは、大/小文字は区別されません。

- query_termおよびscoring_expressionパラメータは必須です。

- DEFINESCORE演算子の最終スコアは、0から100の範囲に切り捨てられます。データ型がINTEGERの場合、スコアは切り上げられます。

- 中間データ型のスコア付けの値は倍精度浮動小数点です。したがって、その値は-3.4e38から3.4e38の範囲に制限されます。ドキュメントの中間スコア付けがこの値を超えた場合、そのスコアは切り捨てられます。整数のスコア付けが必要な場合、計算された後のそのスコアは常に切り上げられます。

- DEFINESCORE演算子は、次の演算子のオペランドとして使用できます。

- AND

- NOT

- INPATH

- THRESHOLD

- WITHIN

- SQE

- OR

- DEFINEMERGE

- MINUS

- WEIGHT

- ACCUM

たとえば、次の文は有効です。

DEFINESCORE('dog', OCCURRENCE) AND DEFINESCORE('cat', RELEVANCE)

「dog」の語句は出現スコア付けを使用して問い合せ、「cat」の語句は関連性スコア付けを使用して問い合せます。

- DEFINESCOREが他の演算子のパラメータとして使用されている場合は、エラーが戻されます。たとえば、次の例ではエラーが戻されます。

SYN(DEFINESCORE('cat', OCCURRENCE))

- 問合せテンプレートで使用されている場合は、scoring_expressionがテンプレートで指定した値よりも優先されます。たとえば、問合せ

<query>
<textquery grammar="CONTEXT" lang="english">
DEFINESCORE(dog, RELEVANCE) and  cat
</textquery>
<score datatype="INTEGER" algorithm="COUNT"/>
</query>

は、「dog」と「cat」を問い合せ、「cat」はOCCURRENCE(COUNT)を使用してスコア付けし、「dog」はRELEVANCEに基づいてスコア付けします。

関連項目

「DEFINEMERGE」

3.9 EQUIValence (=)

問合せ時に条件を満たすワードの置換を指定するには、EQUIV演算子を使用します。

構文

構文

説明

term1=term2

term1 equiv term2

term2がterm1の条件を満たす置換語であることを指定します。スコアは、両方の語句の出現回数の合計として計算されます。

EQUIV演算子の例

次の例は、句alsatians are big dogsまたはlabradors are big dogsのいずれかを含むすべてのドキュメントを戻します。

'labradors=alsatians are big dogs'

演算子の優先順位

EQUIV演算子は、拡張演算子(FUZZY、SOUNDEX、STEM)を除く他のすべての演算子より高い優先順位を持ちます。

3.10 fuzzy

指定された語句に類似するスペルのワードが含まれるように問合せを拡張するには、fuzzy演算子を使用します。この拡張タイプは、ドキュメント・セットにスペル・ミスが多い場合に、より正確な結果を検索するために有効です。

fuzzy構文を使用すると、結果セットのランク付けができます。このランク付けによって、問合せワードに対する類似度が高いワードを含むドキュメントには、類似度の低いワードを含むドキュメントより高いスコアが割り当てられます。また、拡張する語句の数も制限できます。

STEM拡張とは異なり、fuzzy拡張によって生成されるワード数は、索引内のワードによって異なります。したがって、結果は、索引の内容によって大幅に変わってきます。

サポート対象言語

Oracle Textでは、英語、フランス語、ドイツ語、イタリア語、オランダ語、スペイン語、ポルトガル語、日本語、OCRおよび自動言語識別のfuzzy定義をサポートしています。

ストップワード

fuzzy拡張がストップワードを戻す場合、そのストップワードは問合せの中には含まれず、CTX_DOC.HIGHLIGHTまたはCTX_DOC.MARKUPでハイライト表示もされません。

基本文字変換

テキスト列に基本文字変換を使用でき、問合せ式にfuzzy演算子が指定されている場合は、Oracle Textによって問合せの基本文字書式が処理されます。

構文

fuzzy(term, score, numresults, weight)

パラメータ

説明

term

fuzzy拡張の実行対象ワードを指定します。Oracle Textにより、termが索引内のワードのみを含むように拡張されます。fuzzy演算子で処理するには、ワードは3文字以上である必要があります。

score

類似度スコアを指定します。この数値未満のスコアを割り当てられた拡張内の語句は、排除されます。1から80の数を指定します。デフォルトは60です。

numresults

termの拡張に使用する語句の最大数を指定します。1から5000の数を指定します。デフォルトは100です。

WEIGHT

結果に対して、それぞれの類似度スコアに応じて重みを付ける場合は、WEIGHTまたはWを指定します。

結果に重みを付けない場合は、NOWEIGHTまたはNを指定します。

FUZZY演算子の例

次のCONTAINS問合せについて考えます。

...CONTAINS(TEXT, 'fuzzy(government, 70, 6, weight)', 1) > 0;

この問合せは、類似度スコアが70を超える、索引にあるgovernmentの最初の6つのfuzzyバリエーションに拡張されます。

さらに、結果セットのドキュメントには、governmentに対するそれぞれの類似度に応じて重み付けが行われます。governmentに最も類似しているワードが含まれているドキュメントに、最も高いスコアが割り当てられます。

不要なパラメータは、適切な数のカンマを使用してスキップします。次に例を示します。

'fuzzy(government,,,weight)'

下位互換性のための構文

前のリリースの古いfuzzy構文も引き続きサポートされています。この構文は、次のとおりです。

パラメータ

説明

?term

スペルが似ているすべての語句が、指定した問合せ語句に含まれるように問合せtermを拡張します。fuzzy演算子で処理するには、termは3文字以上である必要があります。

3.11 HASPATH

指定したセクション・パスを含むすべてのXMLドキュメントを検索するには、HASPATH演算子を使用します。また、この演算子を使用すると、セクションの等価性もテストできます。

この演算子を機能させるには、PATH_SECTION_GROUPを使用して索引を作成する必要があります。

構文

構文

説明

HASPATH(path)

XMLドキュメント・セットを検索し、pathが存在するすべてのドキュメントに対してスコア100を戻します。親と子のパスは、/文字で区切ります。たとえば、A/B/Cと指定できます。

例を参照してください。

HASPATH(A="value")

XMLドキュメント・セットを検索し、valueの内容のみ含まれている要素Aがあるすべてのドキュメントに対してスコア100を戻します。

例を参照してください。

HASPATHおよびINPATHでの特殊文字の使用

HASPATHおよびINPATH演算子で特殊文字を使用する場合のルールは次のとおりです。

- 左中カッコ({)と右中カッコ(})文字は、二重引用符で囲まれた等価オペランド内にある場合を除き、HASPATHまたはINPATH式内では使用できません。このため、HASPATH({/A/B})およびHASPATH(/A/{B})では、エラーが戻されます。ただし、HASPATH(/A[B="{author}"])は正常に解析されます。

- 円記号(\)を除き、ドル記号($)、パーセント記号(%)、アンダースコア(_)、左中カッコ({)、右中カッコ(})などの特殊文字は、二重または一重引用符で囲まれた等価オペランド内にある場合、特殊な意味を持ちません。(つまりこれらに対しては、ステミング、ワイルド・カード拡張またはこれに類似する処理は実行されません。)ただし、これらは通常のテキストのレクサー処理の対象であり、printjoinとして宣言された文字を除き、空白に変換されます。円記号は、そのすぐ後に続く文字をエスケープします。
たとえば、ハイフン(-)と二重引用符(")がレクサー・プリファレンスでprintjoinとして定義されている場合は、次のようになります。

- HASPATH(/A[B="B_TEXT")内の文字列B_TEXTは、句B TEXTとしてレクサー処理されます。

- HASPATH(/A[B="B-TEXT")内の文字列B-TEXTは、ワードB-TEXTとしてレクサー処理されます。

- HASPATH(/A[B="B'TEXT")内の文字列B'TEXTは、ワード B"TEXTとしてレクサー処理されます。円記号を使用して、BとTEXTの間の二重引用符をエスケープする必要があります。そうしないと、解析エラーが戻されます。

- HASPATH(/A[B="{B_TEXT}")内の文字列{B_TEXT}は、句B TEXTとしてレクサー処理されます。

HASPATH演算子の例

パスのテスト

次の問合せの例を示します。

HASPATH(A/B/C)

は、次のドキュメントを検索して、スコア100を戻します。

<A><B><C>dog</C></B></A>

この問合せでは、dogは参照されません。

セクションの等価性のテスト

次の問合せの例を示します。

dog INPATH A

この問合せは、次のドキュメントを検索します。

<A>dog</A>

さらに、次のドキュメントも検索します。

<A>dog park</A>

問合せを、語句dogのみに制限し、それ以外の語句を検索しないようにする場合は、HASPATH演算子によるセクションの等価性のテストを使用できます。たとえば、問合せ

HASPATH(A="dog")

は、最初のドキュメントを検索し、スコア100を戻します。2番目のドキュメントは検索しません。

制限事項

XMLのセクション・データの記録方法により、完全に空のXMLセクションの場合は、次のように不適切な一致が発生することがあります。

<A><B><C></C></B><D><E></E></D></A>

HASPATH(A/B/E)またはHASPATH(A/D/C)の問合せでは、このドキュメントと不適切に一致します。この種の不適切な一致は、空のタグの間にテキストを挿入することで回避できます。

ドキュメントに空の要素があり、属性に値がある場合には、次の例のドキュメントのように不適切な一致が発生することがあります。

<Test>
<Client id="1">
<Info infoid="1"/>
</Client>
<Client id="2">
<Info infoid="2"/>
</Client>
</Test>

次の問合せで検索すると、例のように問合せでドキュメントが戻されますが、これは不適切な一致です。

次の問合せを使用すると、例のドキュメントが戻されますが、これは不適切な一致です。

SELECT main_detail_logging_id, t.xml_data.getstringval() xml_data FROM
TEST_XMLTYPE t
WHERE CONTAINS(t.xml_data,
'HASPATH(/Test/Client[@id="1"]/Info[@infoid="2"])') > 0;

3.12 INPATH

XMLドキュメントでパス検索を実行するには、INPATH演算子を使用します。この演算子は、WITHIN演算子と似ています。ただし、右側には、単一のセクション名ではなく、カッコで囲んだパスが置かれます。

INPATH演算子を機能させるには、PATH_SECTION_GROUPを使用して索引を作成する必要があります。

構文

INPATH演算子の構文は、次のとおりです。

トップレベルのタグ検索

構文

説明

term INPATH (/A)

term INPATH (A)

<A>および</A>タグ内にtermが含まれているドキュメントを戻します。

任意レベルのタグ検索

構文

説明

term INPATH (//A)

任意レベルの<A>タグにtermが含まれているドキュメントを戻します。この問合せは、'term WITHIN A'と同じです。

直接の親子関係のパス検索

構文

説明

term INPATH (A/B)

トップレベルの要素Aの直接の子である要素Bにtermが含まれているドキュメントを戻します。

たとえば、次のドキュメント

<A><B>term</B></A>

が戻されます。

単一レベルのワイルド・カード検索

構文

説明

term INPATH (A/*/B)

トップレベルの要素Aの孫(2レベル下位)である要素Bにtermが含まれているドキュメントを戻します。

たとえば、次のドキュメント

<A><D><B>term</B></D></A>

が戻されます。

マルチレベルのワイルド・カード検索

構文

説明

term INPATH (A/*/B/*/*/C)

トップレベルの要素Aの2レベル下位(孫)にある要素Bから3レベル下位の要素Cにtermが含まれているドキュメントを戻します。

任意レベルの子検索

構文

説明

term INPATH(A//B)

トップレベルの要素Aの子(任意レベル)である要素Bにtermが含まれているドキュメントを戻します。

属性の検索

構文

説明

term INPATH (//A/@B)

任意レベルの要素Aの属性Bにtermが含まれているドキュメントを戻します。属性は、直接の親にバインドされている必要があります。

子/属性の存在のテスト

構文

説明

term INPATH (A[B])

要素Bを直接の子として持つトップレベルの要素Aにtermが含まれているドキュメントを戻します。

term INPATH (A[.//B])

任意レベルの要素Bを子として持つトップレベルの要素Aにtermが含まれているドキュメントを戻します。

term INPATH (//A[@B])

属性Bを持つ任意レベルの要素Aにtermが含まれているドキュメントを検索します。属性は、直接の親に結合されている必要があります。

属性値のテスト

構文

説明

term INPATH (A[@B = "value"])

値がvalueである属性Bを持つトップレベルの要素Aにtermが含まれているすべてのドキュメントを検索します。

term INPATH (A[@B != "value"])

値がvalue以外の属性Bを持つトップレベルの要素Aにtermが含まれているすべてのドキュメントを検索します。

タグ値のテスト

構文

説明

term INPATH (A[B = "value"]))

値がvalueであるタグBを持つタグAにtermが含まれているドキュメントを戻します。

NOT

構文

説明

term INPATH (A[NOT(B)])

要素Bを直接の子として持たないトップレベルの要素Aにtermが含まれているドキュメントを検索します。

ANDおよびORのテスト

構文

説明

term INPATH (A[B and C])

要素Bと要素Cを直接の子として持つトップレベルの要素Aにtermが含まれているドキュメントを検索します。

term INPATH (A[B and @C="value"]])

要素Bと値がvalueである属性Cを持つトップレベルの要素Aにtermが含まれているドキュメントを検索します。

term INPATH (A [B OR C])

要素Bまたは要素Cを持つトップレベルの要素Aにtermが含まれているドキュメントを検索します。

パスとノードの組合せのテスト

構文

説明

term INPATH (A[@B = "value"]/C/D)

値がvalueである属性Bを持つトップレベルの要素Aの子が要素Cの場合、要素Cの子である要素Dにtermが含まれているドキュメントを戻します。

ネストされたINPATH

次のように、INPATH式全体を別のINPATH式内にネストします。

(dog INPATH (//A/B/C)) INPATH (D)

ネストを実行しても、2つのINPATHのパスは完全に独立しています。外部INPATHのパスは、内部INPATHのパスのコンテキスト・ノードを変更しません。次に例を示します。

(dog INPATH (A)) INPATH (D)

この式は、ドキュメントを検索しません。内部INPATHは、トップレベルのタグA内のdogを検索し、外部INPATHは、トップレベルのタグDを持つドキュメントに検索を制限されているためです。ドキュメントが保持できるトップレベルのタグは1つのみです。このため、この式はドキュメントを検索しません。

大/小文字の区別

パス検索では、タグ名と属性名の大/小文字が区別されます。次に例を示します。

dog INPATH (A)

この式では、<A>dog</A>は検索されますが、<a>dog</a>は検索されません。この場合は、次の式を使用します。

dog INPATH (a)

INPATHでの特殊文字の使用

INPATHでのパーセント記号(%)や円記号(\)などの特殊文字の使用の詳細は、「HASPATHおよびINPATHでの特殊文字の使用」を参照してください。

INPATH演算子の例

トップレベルのタグ検索

トップレベルのタグ<A>に、語句dogが含まれているすべてのドキュメントを検索するには、次の問合せを実行します。

dog INPATH (/A)

または

dog INPATH(A)

任意レベルのタグ検索

任意レベルの<A>タグに語句dogが含まれているすべてのドキュメントを検索するには、次の問合せを実行します。

dog INPATH(//A)

この問合せは、次のドキュメントを検索します。

<A>dog</A>

および

<C><B><A>dog</A></B></C>

直接の親子関係の検索

トップレベルの要素Aの直接の子である要素Bに語句dogが含まれているすべてのドキュメントを検索するには、次の問合せを行います。

dog INPATH(A/B)

この問合せは、次のXMLドキュメントを検索します。

<A><B>My dog is friendly.</B><A>

ただし、次のドキュメントは検索しません。

<C><B>My dog is friendly.</B></C>

タグ値のテスト

タグの値をテストできます。たとえば、次の問合せ

dog INPATH(A[B="dog"])

は、次のドキュメントを検索します。

<A><B>dog</B></A>

ただし、次のドキュメントは検索しません。

<A><B>My dog is friendly.</B></A>

属性の検索

属性の内容を検索できます。たとえば、次の問合せ

dog INPATH(//A/@B)

は、次のドキュメントを検索します。

<C><A  B="snoop dog"> </A> </C>

属性値のテスト

属性の値をテストできます。たとえば、次の問合せ

California INPATH (//A[@B = "home address"])

は、次のドキュメントを検索します。

<A B="home address">San Francisco, California, USA</A>

ただし、次のドキュメントは検索しません。

<A B="work address">San Francisco, California, USA</A>

パスのテスト

HASPATH演算子を使用して、パスの存在をテストできます。たとえば、次の問合せ

HASPATH(A/B/C)

は、次のドキュメントを検索して、スコア100を戻します。

<A><B><C>dog</C></B></A>

この問合せでは、dogは参照されません。

制限事項

等価性のテスト

INPATHによる等価性のテストの例を次に示します。

dog INPATH (A[@B = "foo"])

これらの式には、次の制限事項が適用されます。

- 等価性と非等価性のみがサポートされています。範囲演算子および範囲関数は、サポートされていません。

- 等式の左側には属性を置く必要があります。タグとリテラルは、左側に置くことができません。

- 等式の右側にはリテラルを置く必要があります。タグと属性は、右側に置くことができません。

- 等価性のテストは、使用しているレクサーの設定によって異なります。デフォルト設定の場合の例を示します。

dog INPATH (A[@B= "pot of gold"])

この問合せは、次のセクションと一致します。

<A B="POT OF GOLD">dog</A>

および

<A B="pot of gold">dog</A>

これは、デフォルト設定のレクサーでは、大/小文字が区別されないためです。

<A B="POT IS GOLD">dog</A>

これは、英語ではofおよびisはデフォルトのストップワードであり、ストップワードは任意のストップワードのワードと一致するためです。

<A B="POT_OF_GOLD">dog</A>

これは、デフォルトでは、アンダースコアが結合文字ではないためです。

3.13 MDATA

MDATAセクションが含まれるドキュメントを問い合せるには、MDATA演算子を使用します。MDATAセクションは、複合問合せを高速化するためにドキュメントに追加されたメタデータです。

MDATAはリテラルとして処理されます。たとえば、次の問合せ

MDATA(price, $1.24)

では、$はSTEM演算子として解釈されません。また、. (ピリオド)も空白に変換されません。MDATA演算子の範囲は右(閉じ)カッコまでであるため、右カッコを持つMDATA値は検索されません。

構文

MDATA(sectionname, value)

sectionname

検索するMDATAセクションの名前。sectionnameパラメータがDATEのFILTER BY列または一部の数値型にマップされている場合、MDATAはDATEまたは数値等価も検索します。

value

MDATAセクションの値。たとえば、Booktypeという名前のMDATAセクションが作成されている場合、値の例としてpaperbackがあります。

DATE FILTER BY列にマップされているMDATAセクションに対するMDATA演算子の場合、MDATAの値は日付書式のYYYY-MM-DD HH24:MI:SSに準拠している必要があります。準拠していない場合は、必要な行が戻されません。時間のコンポーネントを省略した場合は、SQLセマンティクスに従って00:00:00にデフォルト設定されます。

MDATA演算子の例

たとえば、作家Nigella Lawsonの著書を問い合せるとします。問い合せる著書にはsummerというワードが含まれています。AUTHORという名前のMDATAセクションが宣言されているとの想定で、次のような問合せを実行できます。

SELECT id FROM idx_docs
WHERE CONTAINS(text, 'summer AND MDATA(author, Nigella Lawson)')>0

この問合せは、(簡易トークン化後の)AUTHORタグの値がNigella Lawsonである場合にのみ有効です。NigellaまたはMs. Nigella Lawsonの場合は無効です。

注意

MDATA問合せ値では、ストップワードは無視されます。

MDATA演算子は、ドキュメントが一致するかどうかに応じて、無制限な結果の数または0を戻します。最大値を設定できます。

CTXCATおよびCTXRULE索引に対して、MDATA演算子はサポートされていません。

表3-2に、MDATAと一部の他の問合せ演算子との関係を示します。

表3-2 MDATAおよび他の問合せ演算子

演算子

例

yes/no

AND

dog & MDATA(a, b)

yes

OR

dog | MDATA(a, b)

yes

NOT

dog ~ MDATA(a, b)

yes

MINUS

dog - MDATA(a, b)

yes

ACCUM

dog , MDATA(a, b)

yes

PHRASE

MDATA(a, b) dog

no

NEAR

MDATA(a, b) ; dog

no

WITHIN、HASPATH、INPATH

MDATA(a, b) WITHIN c

no

シソーラス

MDATA(a, SYN(b))

no

拡張

MDATA(a, $b)

MDATA(a, b%)

MDATA(a, !b)

MDATA(a, ?b)

no(構文上は可能ですが、内部演算子はリテラル・テキストとして処理されます)

ABOUT

ABOUT(MDATA(a,b))

MDATA(ABOUT(a))

no(構文上は可能ですが、内部演算子はリテラル・テキストとして処理されます)

MDATAセクションが繰り返される場合、各インスタンスは別個の独立した値です。たとえば、ドキュメント

<AUTHOR>Terry Pratchett</AUTHOR><AUTHOR>Douglas Adams</AUTHOR>

は、次の問合せのいずれを使用しても検出できます。

MDATA(author, Terry Pratchett)
MDATA(author, Douglas Adams)
MDATA(author, Terry Pratchett) and MDATA(author, Douglas Adams)

次の問合せでは検出できません。

MDATA(author, Terry Pratchett Douglas Adams)
MDATA(author, Terry Pratchett & Douglas Adams)
MDATA(author, Pratchett Douglas)

関連項目

"ADD_MDATA"

"ADD_MDATA_SECTION"

関連項目:

セクション検索の詳細は、『Oracle Textアプリケーション開発者ガイド』を参照してください。

3.14 MINUS(-)

不要なノイズ語句が含まれているドキュメントのスコアを低くするには、MINUS演算子を使用します。MINUSは、特定の問合せ語句が含まれているドキュメントを検索し、2番目の問合せ語句が存在するドキュメントのランクを低くする場合に有効です。

構文

構文

説明

term1-term2

term1 minus term2

term1が含まれているドキュメントを戻します。term1のスコアからterm2のスコアを引いて、スコアを計算します。正数のスコアを持つドキュメントのみが戻されます。

MINUS演算子の例

たとえばcarsという語句についての問合せが、常にFord carsについてのドキュメントに高いスコアを戻すとします。次の式を使用して、Fordに関するドキュメントのスコアを低くできます。

'cars - Ford'

この式は語句carsを含むドキュメントを戻しますが、Ford も含まれている可能性があります。ただし、戻されたドキュメントのスコアは、carsのスコアからFordのスコアを差し引いた値になります。

関連項目

"NOT (~)"

3.15 MNOT

Mild Not(MNOT)演算子は、NOTおよびMINUS演算子と似ています。Mild Not演算子は、左の子が右の子に含まれない場合のヒットを戻します。どちらの子も、TERMまたはPHRASEノードのみ使用できます。

セマンティクスは、「term1 mnot term1 term2」の問合せで示すことができます。「term1 term2」のヒットはフィルタで除外されます。次に例を示します。

- term1のみ使用するドキュメントが戻されます。スコアは変更されません。

- term1 term2のみ使用するドキュメントは戻されません。

- term1 term1 term2を使用するドキュメントが戻されますが、最初のterm1のヒットのみでスコアが計算されます。

3番目の項目の動作は、このタイプのドキュメントを戻さないNOTの動作と異なります。

MNOT演算子は、左の子が右の子に含まれる必要があるため、MINUS演算子よりも詳細です。それ以外の場合、Mild Not演算子は、右の子を無視します。また、Mild Notでは右の子が正確なフィルタです。つまり、左の子と右の子のスコアがただ引かれるだけではありません。

MNOT演算子は、NOTより低くWITHINより高い優先順位を持ちます。

構文

構文

説明

term1 mnot term2

term1 term2句の一部ではないかぎり、term1を含むドキュメントを戻します。

term1 mnot term2

term1が含まれているすべてのドキュメントを戻します。term1と同じ問合せになります。

MNOT演算子の例

MNOT演算子の子には、TERMまたはPHRASEを使用する必要があります。

SELECT * FROM docs
WHERE CONTAINS(txt, 'term1 mnot term1 term2') >0

関連項目

"NOT (~)"

3.16 NARROWER TERM(NT、NTG、NTP、NTI)

指定された問合せ語句の下位語としてシソーラスで定義されているすべての語句が含まれるように問合せを拡張するには、NARROWER TERM演算子(NT、NTG、NTP、NTI)を使用します。また、下位語の下位語、さらにその下位語、というようにシソーラス階層を下がるように問合せを拡張できます。

構文

構文

説明

NT(term[(qualifier)][,level][,thes])

シソーラスでtermに対する下位語として定義されたすべての下位レベルの語句が含まれるように、問合せを拡張します。

NTG(term[(qualifier)][,level][,thes])

シソーラスでtermに対する下位汎用語として定義されたすべての下位レベルの語句が含まれるように、問合せを拡張します。

NTP(term[(qualifier)][,level][,thes])

シソーラスでtermに対する下位部分語として定義されたすべての下位レベルの語句が含まれるように、問合せを拡張します。

NTI(term[(qualifier)][,level][,thes])

シソーラスでtermに対する下位インスタンス語として定義されたすべての下位レベルの語句が含まれるように、問合せを拡張します。

term

NARROWER TERM演算子にオペランドを指定します。termは、thesによって指定されたシソーラスで、語句に対して定義された下位語のエントリが含まれるように拡張されます。この拡張に含まれる下位語の数は、levelの値によって決定されます。拡張演算子はterm引数に指定できません。

qualifier

termがthesの同じ階層分岐で2つ以上のノードに現れる同形異義語(同じスペルで複数の意味を持つワードまたは句)の場合は、termに修飾子を指定します。

NARROWER TERM問合せで同形異義語に修飾子が指定されていない場合は、すべての同形異義語の下位語が含まれるように問合せが拡張されます。

level

指定された語句に対する下位語を戻すために、シソーラス階層内を横断するレベル数を指定します。たとえば、NTのレベル1問合せは、下位語が定義されている場合、指定した問合せ語句のすべての下位語エントリを戻します。レベル2問合せは、指定した問合せ語句の下位語エントリ、さらにそれらの下位語の下位語エントリを戻します。

level引数はオプションで、デフォルト値は(1)です。level引数に0(ゼロ)または負の値を設定すると、元の問合せ語句のみを戻します。

指定された問合せ語句の拡張問合せを戻すために使用するシソーラス名を指定します。thes引数はオプションで、デフォルト値はDEFAULTです。このデフォルト値を使用する場合は、シソーラス表にDEFAULTという名前のシソーラスが存在している必要があります。

注意:

thesを指定する場合は、levelも指定する必要があります。

NARROWER TERM演算子の例

次の問合せは、catという問合せ語句、またはDEFAULTシソーラスでcatのNT語として定義された語句のいずれかが含まれているすべてのドキュメントを戻します。

'NT(cat)'

シソーラス名を指定する場合は、次のようにlevelも指定する必要があります。

'NT(cat, 2, mythes)'

次の問合せは、fairy tale という問合せ語句、またはDEFAULTシソーラスでfairy tale の下位インスタンス語として定義された語句のいずれかが含まれているすべてのドキュメントを戻します。

'NTI(fairy tale)'

cinderellaという語句およびsnow whiteという語句が、fairy taleに対する下位語インスタンスとして定義されている場合、Oracle Textは、fairy tale、cinderellaまたはsnow whiteが含まれているドキュメントを戻します。

注意

シソーラスの各階層は個別の分離されたブランチを表し、4つのNARROWER TERM演算子に対応します。NARROWER TERM問合せでは、Oracle Textは指定されたNARROWER TERM演算子に対応するブランチを使用してその問合せを拡張するのみです。

関連項目

シソーラスの下位語のブラウズについては、「CTX_THESパッケージ」の「CTX_THES.NT」を参照してください。

3.17 NDATA

同じようなスペルの一致を検索する場合または指定された句の語句の再配置が役立つ場合に、NDATA演算子を使用します。ドキュメント・セットの名前データにスペルミス(不正確な順序付け)が頻出する場合に、より正確な結果を検出する上で有用です。定義されたNDATAセクションにのみ、この演算子を使用できます。NDATA構文を使用すると、結果セットのランク付けができます。このランク付けによって、表記の類似度が高いワードを含むドキュメントには、類似度の低いワードを含むドキュメントより高いスコアが割り当てられます。

正規化

レクサーは、NDATA問合せ句を処理しません。ただし、ユーザーは、NDATAセクションを含む特定のセクション・グループの基本文字属性および代替スペル属性を設定できます。問合せが正規化され、文字以外のデータ(空白を除く)が削除されます(数値や句読点など)。

構文

ndata(sectionname, phrase [,order][,proximity])

パラメータ名

デフォルト値

パラメータの説明

sectionname

問合せに使用する定義されたNDATAセクションの名前(section_name)を指定します。

phrase

名前データ問合せの句を指定します。

phraseパラメータは、1つのワード、句またはフリー・テキスト・フォーマットのワード文字列です。

戻されたスコアは関連性スコアです。

Oracle Textでは、phraseに組み込まれた問合せ演算子は無視されます。

句の文字長には少なくとも2文字を指定し、4000文字を超えないようにしてください。

order

NOORDER

問合せの個々のトークン(語句)が順序どおりまたは任意の順序で一致するかどうかを指定します。orderパラメータは、候補ドキュメントと一致する1次フィルタを提供します。

ORDERまたはO: 問合せ語句が順序どおりに一致します。

NOORDER o N [デフォルト]: 問合せ語句が任意の順序で一致します。

proximity

NOPROXIMITY

語句の出現位置の近さが一致候補の類似度スコアに影響するかどうかを指定します。つまり、proximityパラメータが有効な場合、一致語句の間の一致しない追加語句が一致候補の類似度スコアを低くします。

PROXIMITYまたはP: 一致候補の問合せ語句の出現位置の近さにより影響を受ける類似度スコア。

NOPROXIMITYまたはN [デフォルト]: 類似度スコアは、一致候補の問合せ語句の出現位置の近さによって影響を受けません。

NDATA演算子の例

blackおよびsmithの出現位置の近さによって類似度スコアに影響を与えることなく、任意の順序で問合せ句の語句と一致する索引付けされた姓セクション名のNDATA問合せは、次の形式になります。

SELECT entryid, SCORE(1) FROM people WHERE
CONTAINS(idx_column, 'NDATA(surname, black smith)',1)>0;

blackおよびsmithの出現位置の近さによって類似度スコアが影響を受ける場合に、任意の順序で問合せ句の語句と一致する索引付けされた姓セクション名のNDATA問合せは、次の形式になります。

SELECT entryid, SCORE(1) FROM people WHERE
CONTAINS(idx_column, 'NDATA(surname, black smith,,proximity)',1)>0;

blackおよびsmithの出現位置の近さによって類似度スコアに影響を与えることなく、順序どおりに問合せ句の語句と一致する索引付けされた姓セクション名のNDATA問合せは、次の形式になります。

SELECT entryid, SCORE(1) FROM people WHERE
CONTAINS(idx_column, 'NDATA(surname, black smith, order)',1)>0;

blackおよびsmithの出現位置によって類似度スコアが影響を受ける場合に、順序どおりに問合せ句の語句と一致する索引付けされた姓セクション名のNDATA問合せは、次の形式になります。

SELECT entryid, SCORE(1) FROM people WHERE
CONTAINS(idx_column, 'NDATA(surname, black smith, order, proximity)',1)>0;

注意

NDATA問合せ演算子は、オフセット情報を提供しません。つまり、WITHIN、NEAR(;)またはEQUIV(=)の子として使用できません。NDATAセクションはCTX_DOC.HIGHLIGHT、CTX_DOC.SNIPPET、およびCTX_DOC.MARKUPによって無視されます。また、NDATA演算子はCTXCAT文法でサポートされていません。ORおよび問合せテンプレートを含む他の演算子とともに使用できます。

NDATA演算子のユースケースには、個人のフル・ネームの適切なスペルおよび予測される生年月日に基づく特定のエントリの検索が含まれます。エントリの生年月日がSDATAセクションとして格納される場合、ユーザー定義のスコア付けの代替スコアリング・テンプレートを使用して、フル・ネームのNDATAセクション・データと生年月日のSDATAセクション・データのスコアを結合できます。

フル・ネームのsection_nameで指定されたセクションに対して、john smithという名前を問い合せます。2012年11月8日に近接するSDATAセクションの生年月日に基づくNDATA演算子のスコアの変更により、次のように一致するドキュメントのランク付けが修正されます。

<query>
<textquery grammar="CONTEXT" lang="english">
NDATA(fullname, john smith)
</textquery>
<score algorithm="COUNT" normalization_expr =
"doc_score-(DATE(8-NOV-2012)-sdata:dob)"/>
</query>

制限事項

NDATA問合せ演算子は、 CTX_DOC Package プロシージャで機能しません。CTX_DOCプロシージャとともにNDATAを使用しようとすると、サポートされていないことを示すエラーが戻ります。

3.18 NEAR (;)

2つ以上の問合せ語句の出現位置の近さを基準にしてスコアを戻すには、NEAR演算子を使用します。Oracle Textにより、ドキュメント内で互いに近接した語句には高いスコアが、互いに離れた語句には低いスコアが戻されます。単語または項目がNEAR問合せで複数回出現する場合、一致するにはその単語がドキュメントで複数回出現する必要があります。

注意:

NEAR演算子はワード問合せのみで機能します。ABOUT問合せではNEARを使用できません。

構文

NEAR((word1,word2,...,wordn) [, max_span [, order [, maxreqd]]])

下位互換性のための構文:

word1;word2

word1-n

問合せ語句をカンマで区切って指定します。問合せ語句は、1つのワードまたは句の場合もあり、他の問合せ演算子を使用する場合もあります(「NEARおよびその他の演算子」を参照)。

max_span

オプションで、最大クランプのサイズを指定します。デフォルトは100です。100より大きい数を指定すると、Oracle Textからエラーが戻されます。

クランプはすべての問合せ語句が出現する最小のワード・グループです。すべてのクランプは問合せ語句で始まり、問合せ語句で終わります。

2つの問合せ語句を持つNEAR問合せでは、max_spanがこの2つの語句間の最大距離になります。たとえば、dogがcatの6ワード以内にある場合、dogおよびcatについて問い合せるには、次の問合せを入力します。

'near((dog, cat), 6)'

order

Oracle Textを使用して、指定した順序で語句を検索するには、TRUEを指定します。デフォルトはFALSEです。

たとえば、最大クランプ・サイズを20にして、monday、tuesdayおよびwednesdayの順でワード検索をする場合は、次の問合せを入力します。

'near((monday, tuesday, wednesday), 20, TRUE)'

注意:

orderを指定するには、常にmax_spanに数を指定する必要があります。

orderフラグ設定が異なる同じ問合せ式を使用すると、Oracle Textから同じドキュメントに対して異なるスコアが戻される場合があります。たとえば、次の問合せを入力すると、Oracle Textから同じドキュメントに対して異なるスコアが戻されます。

'near((dog, cat), 50, FALSE)'
'near((dog, cat), 50, TRUE)'

NEARスコア付け

NEAR演算子のスコア付けは、語句の出現頻度および語句の出現位置の近さを組み合せて行われます。問合せに適合する各ドキュメントに対して、ドキュメント内のクランプの数に比例し、そのクランプの平均サイズに反比例する1から100までのスコアがOracle Textにより戻されます。小さなクランプは問合せ語句が近接していることを示すため、ドキュメントに小さなクランプが多く存在するほど高いスコアになります。

問合せ語句の数もスコアに影響を与えます。多くの語句(7個程度)で問い合せると、少ない語句(2個程度)で問い合せたときよりも、通常100のスコアを得るために必要なドキュメントのクランプ数が少なくなります。

クランプはすべての問合せ語句が出現する最小のワード・グループです。すべてのクランプは問合せ語句で始まり、問合せ語句で終わります。この項で説明するとおり、クランプ・サイズはmax_spanパラメータで定義します。

クランプのサイズに問合せ語句そのものは含まれません。そのため、問合せNEAR((DOG, CAT), 1)にdog catとdog ate catは一致しますが、dog sat on catは一致しません。

NEARおよびその他の演算子

ANDやORなど他の演算子とともにNEAR演算子を使用できます。スコアは通常の方法で計算されます。

たとえば、語句lionおよびtigerが互いに10ワード以内のところに位置する場合、語句tiger、lionおよびcheetahを含むすべてのドキュメントを検索するには、次の問合せを入力します。

'near((lion, tiger), 10) AND cheetah'

戻される各ドキュメントのスコアは、NEAR演算子および語句cheetahのうち低い方のスコアになります。

EQUIVALENCE演算子を使用して、NEAR問合せの1つの問合せ語句を置換することもできます。

'near((stock crash, Japan=Korea), 20)'

この問合せは、JapanまたはKoreaの20ワード以内に語句stock crashを含むすべてのドキュメントを検索します。

次のNEAR構文が有効になります。

SELECT * FROM docs WHERE CONTAINS(txt, 'near((aterm1 aterm2 ... atermI
OR bterm1 bterm2 ... btermJ
OR cterm1 cterm2 ... ctermK, dterm))') >0

指定されたNEARの子に複数のORが使用される場合があります。NEARの子にORを使用できます。

NEAR内のNEAR機能により、ユーザーはネストされた近接問合せを使用できます。ユーザーは、次のような問合せを実行できます。

SELECT * FROM docs
WHERE CONTAINS(txt, 'near((near((term1, term2),5), term3), 100)')>0

term1、term2、およびterm3が100トークン・ウィンドウ内に位置し、term1およびterm2トークンが5トークン・ウィンドウ内に位置するドキュメントを戻します。

セミコロンおよびNEAR構文の混在はサポートされていません。エラーがスローされます。つまり、"near((a;b,c),3)" or "near((a,b));c"問合せは使用できません。

次の演算子もNEARおよび;とともに使用できます。

- EQUIV

- ワード、句またはEQUIVを生成する拡張演算子すべて。次のような演算子があります。

- SOUNDEX

- FUZZY

- ワイルド・カード

- STEM

下位互換性のあるNEAR構文

以前のOracle Textリリースの構文を使用してNEAR問合せを記述できます。ただし、NEAR問合せをネストする場合は、セミコロン演算子を内部のNEARとして使用することはできません。したがって、'near(((a;d),f),3)'という問合せは構文エラーになります。ネストしたNEAR問合せでセミコロン演算子を使用できるのは、最も外側のNEARです。

たとえば、lionがtigerの近くに出現するすべてのドキュメントを検索するには、次のように記述します。

'lion near tiger'

または、セミコロンを使用して次のようにも記述できます。

'lion;tiger'

この問合せは次の問合せと同等です。

'near((lion, tiger), 100, FALSE)'

注意:

NEAR演算子の構文のみが下位互換性を持ちます。この例では、戻されるスコアはこの項で説明したクランプ方法を使用して計算されます。

NEAR演算子でのハイライト表示

ハイライト表示を使用し、問合せにnear演算子が含まれている場合は、出現位置の近さの要件を満たすすべての語句がハイライト表示されます。ハイライト表示される語句は、1つのワードまたは句の場合もあります。

たとえば、次のようなテキストを含むドキュメントがあるとします。

Chocolate and vanilla are my favorite ice cream flavors.  I like chocolate served
in a waffle cone, and vanilla served in a cup with carmel syrup.

問合せがnear((chocolate, vanilla)), 100, FALSE)である場合、次の語句がハイライト表示されます。

<<Chocolate>> and <<vanilla>> are my favorite ice cream flavors.  I like
<<chocolate>> served in a waffle cone, and <<vanilla>> served in a cup with
caramel syrup.

ただし、問合せがnear((chocolate, vanilla)), 4, FALSE)である場合、次の語句のみがハイライト表示されます。

<<Chocolate>> and <<vanilla>> are my favorite ice cream flavors.  I like
chocolate served in a waffle cone, and vanilla served in a cup with carmel syrup.

関連項目:

ハイライト表示用プロシージャの詳細は、「CTX_DOCパッケージ」を参照してください。

セクション検索およびNEAR

セクションの検索には、次のように、WITHIN演算子とNEAR演算子を併用します。

'near((dog, cat), 10) WITHIN Headings'

このような式を評価する場合は、Oracle Textにより、指定されたセクション内全体にあるクランプが検索されます。

この例では、セクションHeadings内全体にあるdogおよびcatを含むクランプのみがカウントされます。つまり、語句dogがHeadings内にあり、語句catがdogから5ワードのところにあるがHeadingsの外にある場合、これら2つのワードは式を満たさず、カウントされません。

3.19 NOT (~)

1つの問合せ語句が含まれているが、もう1つの問合せ語句が含まれていないドキュメントを検索するには、NOT演算子(~)を使用します。

構文

構文

説明

term1~term2

term1 not term2

term1が含まれるが、term2が含まれていないドキュメントを戻します。

NOT演算子の例

たとえば、animalsという語句が含まれていて、dogsという語句は含まれていないドキュメントを取得するには、次の式を使用します。

'animals ~ dogs'

同様に、 transportationという語句が含まれていて、automobiles または trainsという語句は含まれていないドキュメントを取得するには、次の式を使用します。

'transportation not (automobiles or trains)'

注意:

NOT演算子は、他の論理演算子が作成したスコアには影響を与えません。

関連項目

"MINUS (-)"

3.20 OR (|)

いずれかの問合せ語句が1つ以上含まれるドキュメントを検索するには、OR演算子を使用します。OR演算子は、いずれかの問合せ語句が含まれるドキュメントを戻しますが、AND演算子は、すべての問合せ語句が含まれるドキュメントを戻します。

構文

構文

説明

term1|term2

term1 or term2

term1またはterm2を含むドキュメントを戻します。そのオペランドの最大スコアを戻します。少なくともどちらか1つの問合せ語句が存在する必要があり、スコアの高い方が選択されます。

OR演算子の例

catsまたはdogsという語句が含まれているドキュメントを取得するには、次の式のいずれかを使用します。

'cats | dogs'
'cats OR dogs'

スコア付け

OR問合せでは、問合せ語句の最も高いスコアが戻ります。この例では、ドキュメント内でのcatsおよびdogsのスコアが、それぞれ30および40の場合、ドキュメントのスコアは40になります。

関連項目

"AND (&)"

3.21 PREFERRED TERM(PT)

問合せ内の問合せ語句を、その問合せ語句の優先語としてシソーラスで定義された語句に置換するには、PREFERRED TERM演算子(PT)を使用します。

構文

構文

説明

PT(term[,thes])

問合せで指定されたワードをtermに対する優先語で置換します。

term

PREFERRED TERM演算子にオペランドを指定します。termは、指定されたシソーラスで優先語として定義されている語句に置換されます。ただし、termに対してPTエントリが定義されていない場合は、問合せ式でtermは置換されず、termが拡張の結果となります。

拡張演算子はterm引数に指定できません。

指定された問合せ語句の拡張問合せを戻すために使用するシソーラス名を指定します。thes引数はオプションで、デフォルト値はDEFAULTです。したがって、シソーラス演算子を使用するには、DEFAULTという名前のシソーラスがシソーラス表に存在している必要があります。

PT演算子の例

automobileはシソーラスにcarという優先語があるとします。automobileのPT問合せを行うと、 carというワードが含まれているすべてのドキュメントが戻ります。 automobileというワードが含まれているドキュメントは戻りません。

関連項目

シソーラスの優先語のブラウズについては、「CTX_THESパッケージ」の「CTX_THES.PT」を参照してください。

3.22 RELATED TERM(RT)

問合せ語句の関連語としてシソーラスに定義されたすべての語句が含まれるように問合せを拡張するには、RELATED TERM演算子(RT)を使用します。

構文

構文

説明

RT(term[,thes])

シソーラスでtermに対する関連語として定義されたすべての語句が含まれるように、問合せを拡張します。

term

RELATED TERM演算子にオペランドを指定します。term、およびthesでtermに対して定義されたすべての関連エントリが含まれるように、termが拡張されます。

拡張演算子はterm引数に指定できません。

指定された問合せ語句の拡張問合せを戻すために使用するシソーラス名を指定します。thes引数はオプションで、デフォルト値はDEFAULTです。したがって、シソーラス演算子を使用するには、DEFAULTという名前のシソーラスがシソーラス表に存在している必要があります。

RT演算子の例

dogという語句には、wolfという関連語があるとします。dogに対してRT問合せを行うと、dogおよびwolfというワードを含むすべてのドキュメントが戻ります。

関連項目

シソーラスの関連語のブラウズについては、「CTX_THESパッケージ」の「CTX_THES.RT」を参照してください。

3.23 SDATA

構造化データの値が含まれるSDATAセクションと列でテストを実行するには、SDATA演算子を使用します。SDATAセクションは、複合問合せおよび順序付けを高速化します。この演算子は、CONTAINSに対して構造化述語をサポートします。このサポートによって、SQL以外のインタフェース(count_hitsや結果セット・インタフェースなど)が拡張されます。

SDATA演算子は、SDATA以外の子もあるAND演算子の子としてのみ使用する必要があります。

SDATA問合せは、文字列や数値のリテラル、および日付文字列に対して実行します。文字列リテラルおよび日付文字列は、一重引用符または二重引用符で囲みます。数値は引用符で囲まず、SQL書式のNUMBERに準拠する必要があります。次に例を示します。

CONTAINS(text, "dog and SDATA(category = ''news'')")>0 ...

SDATA(rating between 1.2 and 3.4) ...

SDATA(author LIKE 'FFORDE%') ...

SDATA(date >='2005-09-18') ...

閉じカッコは、一重引用符または二重引用符で囲まれている場合にかぎり許可されます。

SDATA演算子は、問合せテンプレートで使用できます。

構文

構文

演算子

SData

:= "SDATA" "(" SDataPredicate ")"

SDataPredicate

:= section_name SDataTest

SDataTest

:= <SDataSingleOp SDataLiteral> | SDataBetweenOp | <"is" ("not")? "null">

SDataSingleOp

:= ("<" | "<=" | "=" | ">=" | ">" | "!=" | "<>" | "like") SDataLiteral

SDataBetweenOp

:= "between" SDataLiteral "and" SDataLiteral

SDataLiteral

:= numeric_literal | "'" string_literal "'" | "'" date_string "'"

section_name

検索してテストを実行したり、チェックする対象のSDATAセクションの名前。

SDataLiteral

SDATAセクションの値。この値は、文字列リテラル、数値リテラルまたは日付文字列のいずれかである必要があります。

囲まれた述語がTRUEを戻す場合、SDATA演算子はスコア100を戻します。それ以外の場合は0を戻します。NULL値の場合、SDATA演算子はスコア0を戻します。これは、SQLではTRUEを戻さないためです。

複数値のセマンティクスは、複数値のSDATAセクションがサポートされていないため定義されていません。

文字列の比較では大/小文字が区別されます。常にBINARY照合が使用されます。

注意:

DATE FILTER BY列にマップされているSDATAセクションに対するSDATA演算子の場合、SDATAの値は日付書式のYYYY-MM-DDまたはYYYY-MM-DD HH24:MI:SSに準拠している必要があります。準拠していない場合は、必要な行が戻されません。時間のコンポーネントを省略した場合は、SQLセマンティクスに従って00:00:00にデフォルト設定されます。この日付書式は、NLS_DATE_FORMAT環境変数の設定に関係なく常に使用されます。

SDATA演算子の例

たとえば、summerというワードが含まれたフィクション・カテゴリの本を問い合せるとします。CATEGORYという名前のSDATAセクションが宣言されているとの想定で、次のような問合せを実行できます。

SELECT id FROM idx_docs
WHERE CONTAINS(text, 'summer AND SDATA(category = "fiction")')>0

制限事項

- INDEXED_COLUMN、FILTER BY列およびORDER BY列の合計数は99以内です。

- セクション名が定義されたSDATAセクションでない場合は、エラーが発生します。セクションのソース(タグか列かなど)は重要ではありません。

- この構文では、RHS SDATAおよび式は使用できません。

- SDATA演算子は、WITHIN、INPATH、HASPATHまたはNEARの子にできません。

- 名前が指定されたSDATAセクションのデータ型は、提供されているリテラル(およびLIKEなどの演算子)との互換性が必要です。互換性がない場合は、エラーが発生します。

- SDATA演算子は、CTXRULEの問合せドキュメントではサポートされていません。

- SDATA演算子は、ハイライト表示に影響を与えません。

注意

SDATA演算子は、SDATA以外の子もあるAND演算子の子としてのみ使用することをお薦めします。基本的には、SDATA演算子は2番目の基準(つまり確認や非駆動型)として使用します。たとえば、「評価が> 4のドキュメントの検索」ではなく、「DOGという語句が含まれており、価格が> 5でもあるドキュメントの検索」に使用します。他の使用方法でも正しく処理できますが、適切なパフォーマンスを得ることができない場合があります。

次の例は、推奨する使用方法と同じです。

dog & SDATA(foo = 5)

このSDATAは、SDATA以外の子もあるAND演算子の子です。

dog & (SDATA(foo = 5) | SDATA(x = 1))

このSDATA演算子はORの子ですが、SDATA以外の子を持つAND演算子の子でもあります。

次に、推奨しない使用例を示します。

SDATA(foo = 5)

このSDATAは唯一の基準であるため、駆動型基準です。

dog | SDATA(bar = 9)

この例のSDATAはANDではなく、OR演算子の子です。

SDATA(foo = 5) & SDATA(bar = 7)

この例では、両方のSDATA演算子がANDの子ですが、このAND演算子にはSDATA以外の子がありません。

関連項目

"ADD_SDATA_COLUMN"

"ADD_SDATA_SECTION"

"UPDATE_SDATA"

「Oracle Textビュー」の「CTX_SECTIONS」

関連項目:

- 『Oracle Database SQL言語リファレンス』

- 『Oracle Textアプリケーション開発者ガイド』の第8章「Oracle Textでのドキュメント・セクションの検索」

3.24 SOUNDEX(!)

発音が類似したワード(他のワードと似た発音のワード)が含まれるように問合せを拡張するには、SOUNDEX(!)演算子を使用します。この演算子を使用すると、スペルは異なっても英語では同じ発音であるワードを比較できます。

構文

構文

説明

!term

発音が同じすべての語句が、指定した問合せ語句に含まれるように問合せを拡張します(英語のテキストのみ)。

SOUNDEX(!)の例演算子

SELECT ID, COMMENT FROM EMP_RESUME
WHERE CONTAINS (COMMENT, '!SMYTHE') > 0 ;

ID COMMENT
-- ------------
23 Smith is a hard worker who..

言語

SOUNDEXは、7ビットのキャラクタ・セットを使用する英語などの言語に最適です。8ビットのキャラクタ・セットを使用する多くの西ヨーロッパの言語でも、多少効果は落ちますが使用できます。

テキスト列に基本文字変換が指定され、問合せ式にSOUNDEX演算子が指定されている場合は、Oracle Textによって問合せの基本文字書式が処理されます。

3.25 STEM($)

問合せ語句と同じ語根を持つ語を検索するには、STEM($)演算子を使用します。

BASIC_LEXERを使用して使用言語を索引付けする場合は、index_stems属性を使用してステミングのパフォーマンスを改善できます。

Oracle Textのステマーは、Xerox社のXSoft Divisionからライセンスを受けています。この機能は、BASIC_LEXERで英語、フランス語、スペイン語、イタリア語、ドイツ語およびオランダ語をサポートしています。

日本語のステミングはJAPANESE_LEXERでサポートされています。

ステミング言語は、BASIC_WORDLISTワードリスト・プリファレンスを使用して指定します。

構文

構文

説明

$term

同じ語幹または語根を持つすべての語句が、指定した問合せ語句に含まれるように問合せを拡張します。

Stem($)演算子の例

入力

拡張結果

$scream

scream screaming screamed

$distinguish

distinguish distinguished distinguishes

$guitars

guitars guitar

$commit

commit committed

$cat

cat cats

$sing

sang sung sing

ストップワードによる動作

STEMがストップワードとして指定したワードを戻す場合、そのストップワードは問合せの中には含まれず、CTX_QUERY.HIGHLIGHTまたはCTX_QUERY.MARKUPでハイライト表示もされません。

関連項目

STEM演算子をBASIC_LEXERで使用可能にする方法の詳細は、「Oracle Text索引付けの要素」の「BASIC_LEXER」を参照してください。

3.26 ストアド・クエリー式(SQE)

CTX_QUERY.STORE_SQEプロシージャで作成されたストアド・クエリー式をコールするには、SQE演算子を使用します。

ストアド・クエリー式は、ドキュメントの編成および分類用の事前定義済のBINを作成する場合、または最初の問合せが1つ以上の追加問合せによって詳細化されている反復問合せを実行する場合に使用できます。

構文

構文

説明

SQE(SQE_name)

ストアド・クエリー式SQE_nameの結果を戻します。

SQE演算子の例

disastersという名前のSQEを作成するには、CTX_QUERY.STORE_SQEを次のように使用します。

begin
ctx_query.store_sqe('disasters', 'hurricane or earthquake or blizzard');
end;

このストアド・クエリー式は、hurricane、earthquakeまたはblizzardのいずれかを含むすべてのドキュメントを戻します。

これで、SQEは次のような問合せ式内でコールできます。

SELECT SCORE(1), docid FROM news
WHERE CONTAINS(resume, 'sqe(disasters)', 1)> 0
ORDER BY SCORE(1);

制限事項

単一のテキスト問合せでは、ストアド・クエリー式(SQE)を100まで格納できます。テキスト問合せに100を超えるSQE(ネストされたSQEを含む)がある場合、その問合せは失敗し、エラーDRG-50949が発生します。

関連項目

"STORE_SQE"

3.27 SYNONYM (SYN)

指定した語句のシノニムとしてシソーラスに定義されているすべての語句が含まれるように問合せを拡張するには、SYNONYM演算子(SYN)を使用します。

構文

構文

説明

SYN(term[,thes])

シソーラスでtermに対するシノニムとして定義されたすべての語句が含まれるように、問合せを拡張します。

term

SYNONYM演算子にオペランドを指定します。term、およびthesでtermに対して定義されたすべてのシノニムが含まれるように、termが拡張されます。

拡張演算子はterm引数に指定できません。

指定された問合せ語句の拡張問合せを戻すために使用するシソーラス名を指定します。thes引数はオプションで、デフォルト値はDEFAULTです。このデフォルト値を使用する場合は、シソーラス表にDEFAULTという名前のシソーラスが存在している必要があります。

SYN演算子の例

次の問合せ式は、dogという問合せ語句、またはDEFAULTシソーラスでdogのシノニムとして定義された語句が含まれているすべてのドキュメントを戻します。

'SYN(dog)'

SYNONYM演算子内のコンパウンド句

シノニム問合せで問合せ語句のコンパウンド句の拡張問合せは、AND接続詞によって戻ります。

たとえば、 temperature + measurement + instrumentsというコンパウンド句は、thermometerという問合せ語句のシノニムとしてシソーラスに定義されています。thermometerのシノニム問合せは次のように拡張されます。

{thermometer} OR ({temperature}&{measurement}&{instruments})

関連項目

シソーラスのシノニム語句のブラウズについては、「CTX_THESパッケージ」の「CTX_THES.SYN」を参照してください。

3.28 THRESHOLD (>)

THRESHOLD演算子(>)は、次の2通りの方法で使用します。

- 式レベル

- 問合せ語句レベル

式レベルのTHRESHOLD演算子は、しきい値の数値を下回るスコアのドキュメントを結果セットから排除します。

問合せ語句レベルのTHRESHOLD値演算子は、ある語句がドキュメント内でどのようにスコアを出すかに基づいてドキュメントを選択します。

構文

)演算子について説明しています。" title="" width="100%">

構文

説明

expression>n

term>n

結果セットでスコアがしきい値nを超えるドキュメントのみを戻します。

式内で、スコアが最低nの問合せ語句が含まれているドキュメントを戻します。

THRESHOLD(>)演算子の例

式レベルで、 relational databasesが含まれているドキュメントを検索し、スコアが75よりも大きいドキュメントのみを戻すには、次の式を使用します。

'relational databases > 75'

問合せ語句レベルで、lionのスコアが30以上で、さらにtiger が含まれているドキュメントを選択するには、次の式を使用します。

'(lion > 30) and tiger'

3.29 TRANSLATION TERM(TR)

定義されたすべての外国語の等価語句が含まれるように問合せを拡張するには、TRANSLATION TERM(TR)演算子を使用します。

構文

構文

説明

TR(term[, lang, [thes]])

termに対して定義されたすべての外国語の等価語が含まれるように、termを拡張します。

term

TRANSLATION TERM演算子にオペランドを指定します。termは、thesでtermに対して定義されたすべての外国語エントリが含まれるように拡張されます。拡張演算子はterm引数に指定できません。

lang

オプションで、拡張によってどの外国語の等価語を戻すかを指定します。指定する言語はthesに定義されている言語と一致している必要があります。(1回に指定できる言語は1つのみです。)このパラメータを省略、またはALLを指定すると、定義されたすべての外国語の語句を使用するように拡張されます。

オプションで、指定された問合せ語句の拡張問合せを戻すために使用するシソーラス名を指定します。thes引数のデフォルト値はDEFAULTです。。したがって、シソーラス演算子を使用するには、DEFAULTという名前のシソーラスがシソーラス表に存在している必要があります。

注意:

thesを指定する場合は、langも指定する必要があります。

TR演算子の例

catに対して次のエントリを持つシソーラスMY_THESがあるとします。

cat
SPANISH: gato
FRENCH:  chat

catおよびcatのスペイン語訳を含むすべてのドキュメントを検索するには、次の問合せを入力します。

'tr(cat, spanish, my_thes)'

この問合せは次のように拡張されます。

'{cat}|{gato}'

関連項目

シソーラスの関連語のブラウズについては、「CTX_THESパッケージ」の「CTX_THES.TR」を参照してください。

3.30 TRANSLATION TERM SYNONYM(TRSYN)

問合せ語句に対して定義されたすべての外国語の等価語、問合せ語句のシノニム、およびそのシノニムの外国語の等価語が含まれるように問合せを拡張するには、TRANSLATION TERM SYNONYM(TRSYN)演算子を使用します。

構文

構文

説明

TRSYN(term[, lang, [thes]])

termの外国語の等価語、termのシノニム、およびそのシノニムの外国語の等価語が含まれるように、termを拡張します。

term

この演算子にオペランドを指定します。termは、thesでtermに対して定義されたすべての外国語エントリおよびシノニムが含まれるように拡張されます。拡張演算子はterm引数に指定できません。

lang

オプションで、拡張によってどの外国語の等価語を戻すかを指定します。指定する言語はthesに定義されている言語と一致している必要があります。このパラメータを省略すると、定義されたすべての外国語の語句を使用するように拡張されます。

オプションで、指定された問合せ語句の拡張問合せを戻すために使用するシソーラス名を指定します。thes引数のデフォルト値はDEFAULTです。。したがって、シソーラス演算子を使用するには、DEFAULTという名前のシソーラスがシソーラス表に存在している必要があります。

注意:

thesを指定する場合は、langも指定する必要があります。

TRSYN演算子の例

catに対して次のエントリを持つシソーラスMY_THESがあるとします。

cat
SPANISH: gato
FRENCH:  chat
SYN lion
SPANISH: leon

cat、catのスペイン語での等価語、catのシノニム、およびlionのスペイン語での等価語を含むすべてのドキュメントを検索するには、次の問合せを入力します。

'trsyn(cat, spanish, my_thes)'

この問合せは次のように拡張されます。

'{cat}|{gato}|{lion}|{leon}'

関連項目

シソーラスの訳語およびシノニム語句のブラウズについては、「CTX_THESパッケージ」の「CTX_THES.TRSYN」を参照してください。

3.31 TOP TERM(TT)

問合せ語句を、シソーラスの標準階層内(上位語[BT]、下位語[NT])でその問合せ語句について定義されている最上位語と置換するには、問合せ内でTOP TERM演算子(TT)を使用します。最上位語は、問合せ語句に関連する、概念的に最上位の語句です。たとえば、シソーラスでは次のように階層が定義されます。

DOG
BT1 CANINE
BT2 MAMMAL
BT3 VERTEBRATE
BT4 ANIMAL

このシソーラスにおけるdogの最上位語はanimalです。

汎用階層(BTG、NTG)、部分階層(BTP、NTP)およびインスタンス(BTI、NTI)階層内の最上位語は戻されません。

構文

構文

説明

TT(term[,thes])

問合せで指定されたワードを、termに対する標準的な階層(BT、NT)での最上位語で置換します。

term

TOP TERM演算子にオペランドを指定します。termは、指定されたシソーラスで最上位語として定義されているtermに置換されます。ただし、termに対してTTエントリが定義されていない場合は、問合せ式でtermは置換されず、termが拡張の結果となります。

拡張演算子はterm引数に指定できません。

指定された問合せ語句の拡張問合せを戻すために使用するシソーラス名を指定します。thes引数はオプションで、デフォルト値はDEFAULTです。このデフォルト値を使用する場合は、シソーラス表にDEFAULTという名前のシソーラスが存在している必要があります。

TT演算子の例

dogという問合せ語句には、シソーラスの標準階層内にanimalという最上位語があるとします。dogのTT問合せは、 animalという句が含まれているすべてのドキュメントを戻します。 dogというワードが含まれているドキュメントは戻しません。

関連項目

シソーラスの最上位語のブラウズについては、「CTX_THES.TT 」を参照してください。

3.32 WEIGHT (*)

WEIGHT演算子は、指定した係数をスコアに掛けます。スコアが100を超える場合、最高値は100になります。たとえば、問合せ cat, dog*2 は、catのスコアとdogのスコアの2倍を合計します。スコアが100を超える場合、最高値は100になります。

複数の問合せ語句が含まれている式では、WEIGHT演算子を使用して問合せ語句の相対的なスコアを調整します。1より小さい数とWEIGHT演算子を使用して、問合せ語句のスコアを減らします。1より大きく10より小さい数とWEIGHT演算子を使用して、問合せ語句のスコアを増やします。

WEIGHT演算子は、式に複数の問合せ語句があるACCUMulate(_)問合せ、AND(&)問合せまたはOR(|)問合せで便利です。個々の語句に重みを付けないと、出現回数の最も多い問合せ語句をスコアから判断できません。語句の重み付けにより、語句のスコアを個別に変更でき、関心度の高い語句がドキュメント全体のランク付けに高く反映されるようにできます。

構文

構文

説明

term*n

termが含まれているドキュメントを戻します。termのロー・スコアにnを掛けてスコアを計算します。nは、0.1から10の数値です。

WEIGHT(*)演算子の例

スポーツ記事の収集がある場合を考えます。ブラジルのサッカー(Brazilian soccer)の記事に関心があるとします。soccer or Brazil で通常の問合せをすると、USサッカーに関する多くの記事が高いランクで戻ります。ブラジルのサッカーについての記事のランクを上げるには、次の問合せを入力します。

'soccer or Brazil*3'

表3-3は、WEIGHT演算子によって、サッカーの情報が含まれている3つの架空のドキュメントA、BおよびCのランクが変更できる様子を示しています。表の列は、3つのドキュメントでの異なる4つの問合せ式の合計スコアを示します。

表3-3 スコア・サンプル

ドキュメント

soccer

Brazil

soccer or Brazil

soccer or Brazil*3

A

20

10

20

30

B

10

30

30

90

C

50

20

50

60

問合せsoccer or Brazilを含む3列目のスコアが、最も高いスコア付けを行う語句のスコアです。問合せsoccer or Brazil*3を含む4列目のスコアは、1列目のsoccerのスコア、およびBrazilのスコアの3倍(Brazil*3)のスコアのうち、大きい方のスコアです。

最初の問合せsoccer or Brazilでは、ドキュメントはC、B、Aの順にランク付けされます。問合せsoccer or Brazil*3では、ドキュメントはB、C、Aという優先順にランク付けされます。

複数の語句に重み付けすることもできます。Brazil OR (soccer AND Brazil)*3の問合せでは、soccerおよびBrazilが両方とも含まれるドキュメントの相対的なスコアが高くなります。

3.33 ワイルド・カード(% _)

問合せ式でワイルド・カード文字を使用すると、ワード検索をパターン検索に拡張できます。「DOG %」、「.%」、「%」などのワイルド・カードを単独で使用すると、ストップワードとして扱われます。

ワイルドカード文字は次のとおりです。

ワイルド・カード文字

説明

%

ワールド・カードとしてのパーセント記号は、検索語句の任意の位置で何回でも使用できます。検索語句は拡張され、語句の同等化リストになります。リストは、パーセント文字の位置に文字が0以上存在する、ワイルド・カード語句に一致する索引内のすべての語句から構成されます。

_

ワイルド・カードとしてのアンダースコアは、その位置に任意の1文字が現れることを示します。

エスケープされないワイルド・カード文字が含まれる、1つの問合せ内のすべてのワードのワイルド・カード拡張の合計数は、BASIC_WORDLIST属性のWILDCARD_MAXTERMSで指定された拡張の最大数を超えないようにしてください。詳細については「BASIC_WORDLIST」を参照してください。

注意:

- ワイルドカードを単独で使用すると、ストップワードとして扱われます。

- ワイルド・カード式によってストップワードに変換された場合、そのストップワードは問合せの中には含まれず、CTX_DOC.HIGHLIGHT またはCTX_DOC.MARKUP でハイライト表示もされません。

右側切捨て問合せ

右側切捨てでは、検索文字列の右側にワイルド・カードが置かれます。

たとえば、次の問合せ式では、パターンscalで始まるすべての語句を検索します。

'scal%'

左側切捨て問合せおよび左右切捨て問合せ

左側切捨てでは、検索文字列の左側にワイルド・カードが置かれます。

king、wing、singなどのワードを検索するには、次のように問合せを記述します。

'_ing'

ingで終わるすべてのワードについては、次の問合せを入力します。

'%ing'

左側切捨て検索および右側切捨て検索を組み合せて、左右切捨て検索を作成します。次の問合せでは、サブストリング%benz%を含むワードのあるすべてのドキュメントを検索します。

'%benz%'

ワイルド・カード問合せのパフォーマンス改善

ワイルド・カード問合せのパフォーマンスは、サブストリングまたはプリフィックス索引を追加して改善します。

ワイルド・カード問合せが左側切捨ておよび左右切捨ての場合、サブストリング索引を作成すると、問合せパフォーマンスが向上します。サブストリング索引によって、%ed、_ing、%benz%などの、あらゆる種類の左側切捨てワイルド・カード検索の問合せパフォーマンスが向上します。

ワイルド・カード問合せが右側切捨ての場合は、プリフィックス索引を作成すると、パフォーマンスが向上します。プリフィックス索引によって、to%などのワイルド・カード検索の問合せパフォーマンスが向上します。

関連項目:

サブストリングおよびプリフィックス索引の作成の詳細は、「Oracle Text索引付けの要素」の「BASIC_WORDLIST」を参照してください。

3.34 WITHIN

問合せをドキュメントのセクションに絞り込むには、WITHIN演算子を使用します。ドキュメントのセクションは次のいずれかです。

- ゾーン・セクション

- フィールド・セクション

- 属性セクション

- 特殊セクション(文または段落)

構文

構文

説明

expression WITHIN section

事前定義済のゾーン、フィールドまたは属性section内でexpressionを検索します。

セクションがゾーンの場合、expressionは、セクションがゾーンまたは特殊セクションであるWITHIN演算子(ネストされたWITHIN)を1つ以上含むことができます。

セクションがフィールドまたは属性セクションの場合、式は他のWITHIN演算子を含むことができません。

expression WITHIN SENTENCE

文中にexpressionを含むドキュメントを検索します。expressionにはANDまたはNOT問合せを指定します。

expressionは、セクションがゾーンまたは特殊セクションであるWITHIN演算子(ネストされたWITHIN)を1つ以上含むことができます。

expression WITHIN PARAGRAPH

段落中にexpressionを含むドキュメントを検索します。expressionにはANDまたはNOT問合せを指定します。

expressionは、セクションがゾーンまたは特殊セクションであるWITHIN演算子(ネストされたWITHIN)を1つ以上含むことができます。

WITHINの制限事項

WITHIN演算子には、次の制限事項があります。

- WITHIN句を句に埋め込むことはできません。たとえば、term1 WITHIN section term2と記述することはできません。

- WITHINは予約語であるため、このワードを検索するには中カッコでワードを囲んでエスケープする必要があります。

WITHIN演算子の例

ゾーン・セクション内の問合せ

セクションHeadings内でSan Francisco という語句が含まれているすべてのドキュメントを検索するには、次のような問合せを記述します。

'San Francisco WITHIN Headings'

セクションHeadings内にsailingおよびSan Franciscoという語句が含まれているすべてのドキュメントを検索するには、次の2つの方法のいずれかで問合せを記述します。

'(San Francisco WITHIN Headings) and sailing'

'sailing and San Francisco WITHIN Headings'

WITHINと複合式

同じセクションHeadings内にdogおよびcatという語句が含まれているすべてのドキュメントを検索するには、次の問合せを記述します。

'(dog and cat) WITHIN Headings'

この問合せと次の問合せは、論理的に異なります。

'dog WITHIN Headings and cat WITHIN Headings'

この問合せは、dogおよびcatという語句がHeadingsセクションにある場合に、dogおよびcatを含むすべてのドキュメントを、これらの語句が同じHeadingsセクションに出現しているか異なるセクションに出現しているかに関係なく、検索します。

WITHINとNEAR

Headingsセクション内で、dogがcatの近くにあるすべてのドキュメントを検索するには、次の問合せを記述します。

'dog near cat WITHIN Headings'

注意:

NEAR演算子はWITHIN演算子よりも優先順位が高いため、この例では中カッコは必要ありません。この問合せは、(dog near cat) WITHIN Headingsと同等です。

ネストされたWITHIN問合せ

WITHIN演算子をネストすると、ゾーン・セクション内のゾーン・セクションを検索できます。

たとえば、あるドキュメント・セットのゾーン・セクションBOOK内に、ゾーン・セクションAUTHORがネストされているとします。ネストされたWITHIN問合せを次のように記述すると、BOOKセクションのAUTHORセクションに出現するscottをすべて検索できます。

'(scott WITHIN AUTHOR) WITHIN BOOK'

フィールド・セクション内の問合せ

フィールド・セクション内の問合せの構文は、ゾーン・セクション内の問合せと同じです。前述の「ゾーン・セクション内の問合せ」で示したほとんどの例の構文は、フィールド・セクションに適用されます。

ただし、フィールド・セクションの動作は、次の点でゾーン・セクションとは異なります。

- 可視性: フィールド・セクション内のテキストを非表示にします。

- 反復性: WITHIN問合せは、繰り返されたフィールド・セクションを識別できません。

- ネスト性: ネストされたWITHIN問合せは、フィールド・セクションで入力できません。

次に、これらの違いについて説明します。

フィールド・セクションのvisibleフラグ

フィールド・セクションが、CTX_DDL.ADD_FIELD_SECTIONでFALSEに設定されたvisibleフラグで作成されている場合、そのフィールド・セクション内のテキストは、WITHIN演算子を使用してのみ問合せできます。

たとえば、TITLEフィールド・セクションのvisibleフラグがFALSEに設定されているとします。この場合、WITHIN演算子のないdog の問合せでは、次の内容を含むドキュメントを検索しません。

<TITLE>The dog</TITLE> I like my pet.

このようなドキュメントを検索するには、次のようにWITHIN演算子を使用します。

'dog WITHIN TITLE'

また、TITLEをCTX_DDL.ADD_FIELD_SECTIONでフィールド・セクションとして定義するときは、visibleフラグをTRUEに設定します。

関連項目:

フィールド・セクション作成の詳細は、「CTX_DDLパッケージ」の「ADD_FIELD_SECTION」を参照してください。

繰返しフィールド・セクション

WITHIN問合せは、ドキュメント内の繰り返されたフィールド・セクションを識別できません。たとえば、繰返しセクション<author>を持つドキュメントがあるとします。

<author> Charles Dickens </author>
<author> Martin Luther King </author>

<author>がフィールド・セクションとして定義されているとすると、(charles and martin) within authorのような問合せは、これらのワードが別々のタグに出現しても、そのドキュメントを戻します。

WITHIN問合せに繰返しセクションを識別させるには、セクションをゾーン・セクションとして定義します。

ネストされたフィールド・セクション

ネストされたWITHIN問合せは、フィールド・セクションで入力できません。これを行うと、エラーが戻ります。

文または段落内の問合せ

同じ文または段落で出現するワードの組合せを検索するには、文または段落境界内での問合せが有効です。文または段落を問い合せるには、索引付けする前に、特殊セクションをセクション・グループに追加する必要があります。追加するには、CTX_DDL.ADD_SPECIAL_SECTIONを使用します。

同じ文にdogおよびcatを含むドキュメントを検索するには、次のように問い合せます。

'(dog and cat) WITHIN SENTENCE'

同じ段落にdogおよびcatを含むドキュメントを検索するには、次のように問い合せます。

'(dog and cat) WITHIN PARAGRAPH'

ワードdogはあるがcatはない文を含むドキュメントを検索するには、次のように問い合せます。

'(dog not cat) WITHIN SENTENCE'

属性セクション内での問合せ

セクション・グループ型としてXML_SECTION_GROUPまたはAUTO_SECTION_GROUPのいずれかで索引付けする場合は、属性セクション内で問合せを実行します。

次のようなXMLドキュメントがあるとします。

<book title="Tale of Two Cities">It was the best of times.</book>

セクションtitle@bookは、属性セクションtitleになるように定義します。この定義には、CTX_DLL.ADD_ATTR_SECTIONプロシージャを使用するか、またはALTER INDEXで索引付けしてから動的に定義します。

注意:

AUTO_SECTION_GROUPを使用してXMLドキュメントを索引付けする場合、システムは属性セクションを自動的に作成し、これらをattribute@tag形式でネーミングします。

XML_SECTION_GROUPを使用する場合、属性セクションはCTX_DDL.ADD_ATTR_SECTIONで任意にネーミングできます。

属性セクションtitle内でTaleを検索するには、次の問合せを入力します。

'Tale WITHIN title'

属性セクションの問合せに対する制約

属性セクション内の問合せには、次の制約が適用されます。

- 属性テキストに通常の問合せを行うと、WITHIN句で修飾されていない場合は、ドキュメントにヒットしません。次のようなXMLドキュメントがあるとします。

<book title="Tale of Two Cities">It was the best of times.</book>

Taleの問合せ自体は、WITHIN title@bookで修飾されていない場合、ドキュメントにヒットしません。(この動作は、visibleフラグをFALSEに設定した場合のフィールド・セクションと似ています。)

- 属性セクションは、ネストされたWITHIN問合せでは使用できません。

- 句は属性テキストを無視します。たとえば、元のドキュメントが次のようなものであるとします。

Now is the time for all good <word type="noun"> men </word> to come to the aid.

この場合、このドキュメントは、介入的な属性テキストを無視して、通常の問合せgood menにヒットします。

- WITHIN問合せは、繰返し属性セクションを識別できます。この動作は、ゾーン・セクションには似ていますが、フィールド・セクションには似ていません。たとえば、次のドキュメントがあるとします。

<book title="Tale of Two Cities">It was the best of times.</book>
<book title="Of Human Bondage">The sky broke dull and gray.</book>

bookはゾーン・セクションで、book@authorは属性セクションであるとします。次の問合せについて考えてみます。

'(Tale and Bondage) WITHIN book@author'

この問合せはドキュメントにヒットしません。これは、taleおよびbondageの出現する属性セクションbook@authorが異なるためです。

注意

セクション名

WITHIN演算子では、検索するセクション名がわかっている必要があります。定義済セクションのリストは、CTX_SECTIONSビューまたはCTX_USER_SECTIONSビューを使用して取得できます。

セクション境界

特殊セクションおよびゾーン・セクションについては、問合せの語句が、問合せを満たすためにドキュメントの特定のセクション内に出現する必要があります。フィールド・セクションにはこの要件は適用されません。

たとえば、boldがゾーン・セクションである場合、次のような問合せを考えます。

'(dog and cat) WITHIN bold'

この問合せは、次の語句を検索します。

<B>dog cat</B>

ただし、次の語句は検索しません。

<B>dog</B><B>cat</B>

これは、dogおよびcatが同じboldセクション内に存在する必要があるためです。

この動作は、特に特殊セクションに有効です。たとえば、

'(dog and cat) WITHIN sentence'

は、同じ文中にあるdogおよびcatを検索します。

一方、フィールド・セクションは、タイトル・セクションなど、繰返しのない埋込みメタデータ用です。問合せ文字列が存在する各フィールド・セクションは、異なるセクションとして区別できません。すべて同一セクション内に存在する文字列とみなされます。たとえば、次の問合せ

(dog and cat) WITHIN title

は、次のようなドキュメントを検索します。

<TITLE>dog</TITLE><TITLE>cat</TITLE>

このフィールド・セクション制限およびオーバーラップとネスト制限に対して、フィールド・セクション問合せは、特にセクションが各ドキュメントで出現する場合、または検索語句が共通の場合は、通常、ゾーン・セクション問合せよりも高速です。

4 Oracle Text問合せの特殊文字

この章では、テキスト問合せに使用できる特殊文字について説明します。さらに、Oracle Textが予約語として処理するワードおよび文字を示します。

この章の内容は次のとおりです。

- グループ化文字

- エスケープ文字

- 予約語

4.1 グループ化文字

グループ化文字は、問合せ式の問合せ語句および演算子をグループ化することによって、演算子の優先順位を制御します。グループ化文字を表4-1に示します。

表4-1 問合せ語句グループ化用の文字

グループ化文字

説明

( )

カッコ文字は、文字間の語句および演算子をグループ化します。

[ ]

大カッコ文字は、文字間の語句および演算子をグループ化します。ただし、拡張演算子(FUZZY、SOUNDEX、STEM)に対しては機能しません。

問合せ語句および演算子のグループは、グループ化文字の左カッコで始まります。グループの終わりは、左カッコに対応する右カッコで示されます。右カッコと左カッコの間に、他のグループを挿入することもできます。

たとえば、左のカッコはグループの始まりを示します。最初に現れる右カッコが、グループの終わりです。右カッコよりも前に別の左カッコがあれば、ネストされたグループを示します。

4.2 エスケープ文字

「and」、「&」、「or」、「│」、「accum」など、問合せ式で特別な意味を持つワードまたは記号を問い合せるには、これらをエスケープする必要があります。表4-2で説明しているように、問合せ式で文字をエスケープするには2通りの方法があります。

表4-2 問合せ語句エスケープ用の文字

エスケープ文字

説明

{}

中カッコを使用して、文字または記号の文字列をエスケープします。中カッコで囲まれたものが、エスケープ・シーケンスの部分とみなされます。

中カッコを使用して単一の文字をエスケープすると、エスケープされた文字が問合せ内の別のトークンになります。

\

円記号を使用して、単一の文字または記号をエスケープします。円記号の直後の文字のみがエスケープされます。たとえば、blue\-greenという問合せには、blue-greenおよびblue greenが一致します。

次の例では、それぞれの式にテキスト演算子または予約記号が入っているため、エスケープ・シーケンスが必要です。

'high\-voltage'
'{high-voltage}'

'XY\&Z'
'{XY&Z}'

最初の例の問合せには、high-voltageまたはhigh voltageが一致します。

2番目の例では、XY&Zの問合せに対して'XY Z'、'XY-Z'、'XY*Z'などが戻され、さらに'XY&Z'も戻されます。これは、アルファベット以外の文字が空白として処理されるためです(したがって、XY&Zは'XY Z'として処理されます)。XY&Zのみに一致させるには、&をprintjoinとして宣言する必要があります。(ただし、宣言した場合、XY&Zは、'XY & Z'に一致しません。)printjoinの詳細は、「BASIC_LEXER」を参照してください。

注意:

中カッコを使用してワード内の個々の文字をエスケープすると、文字はエスケープされますが、ワードは3つのトークンに分割されます。たとえば、high{-}voltageと書かれた問合せでは、ハイフンの両側に空白がある high - voltageが検索されます。

エスケープ文字の問合せ

左中カッコの{は、エスケープ・シーケンスの始まりを示し、右中カッコの}は、そのシーケンスの終わりを示します。左中カッコと右中カッコの間のすべて(すべての左中カッコを含む)が、エスケープされる問合せ式の部分です。エスケープされた問合せ式に右中カッコを組み込むには、}}を使用します。エスケープ文字(円記号)をエスケープするには、\\を使用します。

4.3 予約語

表4-3に、CONTAINS問合せでの検索時にエスケープする必要があるOracle Textの予約語を示します。エスケープ・シーケンスに中カッコ{}と円記号\のどちらをいつ使用するかのルールは、表4-2を参照してください。

表4-3 予約語

予約語(ワード)

予約語(文字)

演算子

ABOUT

(なし)

ABOUT

ACCUM

,

ACCUMULATE

AND

&

AND

BT

(なし)

BROADER TERM

BTG

(なし)

BROADER TERM GENERIC

BTI

(なし)

BROADER TERM INSTANCE

BTP

(なし)

BROADER TERM PARTITIVE

EQUIV

=

EQUIVALENCE

FUZZY

?

FUZZY

(なし)

{ }

エスケープ文字(複数)

(なし)

\

エスケープ文字(単一)

(なし)

( )

グループ化文字

(なし)

[ ]

グループ化文字

HASPATH

(なし)

HASPATH

INPATH

(なし)

INPATH

MDATA

(なし)

MDATA

MINUS

-

MINUS

NEAR

;

NEAR

NOT

~

NOT

NT

(なし)

NARROWER TERM

NTG

(なし)

NARROWER TERM GENERIC

NTI

(なし)

NARROWER TERM INSTANCE

NTP

(なし)

NARROWER TERM PARTITIVE

OR

|

OR

PT

(なし)

PREFERRED TERM

RT

(なし)

RELATED TERM

(なし)

$

STEM

(なし)

!

SOUNDEX

SQE

(なし)

ストアド・クエリー式

SYN

(なし)

SYNONYM

(なし)

>

THRESHOLD

TR

(なし)

TRANSLATION TERM

TRSYN

(なし)

TRANSLATION TERM SYNONYM

TT

(なし)

TOP TERM

(なし)

*

WEIGHT

(なし)

%

ワイルド・カード文字(複数)

(なし)

_

ワイルド・カード文字(単一)

WITHIN

(なし)

WITHIN

5 CTX_ADMパッケージ

この章の内容は以下のとおりです。

- CTX_ADMパッケージのプロシージャについて

- MARK_FAILED

- RECOVER

- RESET_AUTO_OPTIMIZE_STATUS

- SET_PARAMETER

5.1 CTX_ADMパッケージのプロシージャについて

CTX_ADM PL/SQLパッケージには、索引プリファレンスを管理するための管理プロシージャが用意されています。

CTX_ADMパッケージには、次のストアド・プロシージャが含まれています。

名前

説明

MARK_FAILED

索引のステータスをLOADINGからFAILEDへ変更します。

RECOVER

削除したテキスト表のデータベース・オブジェクトをクリーン・アップします。

RESET_AUTO_OPTIMIZE_STATUS

CTX_AUTO_OPTIMIZE_STATUSビューをリセットします。

SET_PARAMETER

索引作成のシステム・レベルのデフォルトを設定します。

注意:

CTX_ADMパッケージを使用できるのは、CTXSYSユーザーのみです。

5.2 MARK_FAILED

MARK_FAILEDプロシージャを使用して索引のステータスをLOADINGからFAILEDへ変更します。

まれに、CREATE INDEXまたはALTER INDEXに失敗すると、索引のステータスがLOADINGのままになる場合があります。索引のステータスがLOADINGになると、RESUME INDEXを使用してリカバリしようとしてもブロックされます。このような場合は、RESUME INDEXで索引をリカバリできるように、CTX_ADM.MARK_FAILEDを使用してステータスをLOADINGからFAILEDに強制的に変更します。

CTX_ADM.MARK_FAILEDを実行するには、CTXSYSとしてログオンする必要があります。

警告:

CTX_ADM.MARK_FAILEDを使用する場合は、注意が必要です。これは最後の手段として使用し、索引に影響を与えるセッションが他にない場合にのみ使用するようにしてください。通常、別のセッションでCREATEまたはALTER INDEXを使用して索引を作成中の場合、CTX_ADM.MARK_FAILEDは正常に実行されません。ただし、場合によっては索引の作成や変更において、CTX_ADM.MARK_FAILEDが正常に実行できるタイミングがあります。このとき、別のセッションで索引を作成中であっても、索引が失敗としてマーク付けされます。

CTX_ADM.MARK_FAILEDはローカル・パーティション索引で機能します。ただし、すべてのパーティションのステータスがFAILEDに変更されます。したがって、CTX_ADM.MARK_FAILEDを使用した後は、ALTER INDEX REBUILD PARTITION PARAMETERS ('RESUME')を使用してすべての索引パーティションを再構築する必要があります。この操作の後にALTER INDEX PARAMETER ('RESUME')を実行すると、索引パーティションのステータスが有効にリセットされます。MARK_FAILED操作の前に正常に構築された索引パーティションは、再構築されません。

構文

CTX_ADM.MARK_FAILED(
owner_name     in    VARCHAR2,
index_name     in    VARCHAR2);

owner_name

ステータス変更対象索引の所有者名

index_name

ステータス変更対象の索引名

例

begin
CTX_ADM.MARK_FAILED('owner_1', 'index_1');
end;

5.3 RECOVER

RECOVERプロシージャは、テキスト・データ・ディクショナリをクリーン・アップし、残りのプリファレンスなどのオブジェクトを削除します。

構文

CTX_ADM.RECOVER;

例

begin
ctx_adm.recover;
end;

5.4 RESET_AUTO_OPTIMIZE_STATUS

RESET_AUTO_OPTIMIZE_STATUSを使用して、CTX_AUTO_OPTIMIZE_STATUSビューをリセット(またはその内容を削除)します。

CTX_ADM.RESET_AUTO_OPTIMIZE_STATUSを実行するには、CTXSYSとしてログオンする必要があります。

構文

CTX_ADM.RESET_AUTO_OPTIMIZE_STATUS;

例

begin
ctx_adm.reset_auto_optimize_status;
end;

5.5 SET_PARAMETER

SET_PARAMETERプロシージャは、索引作成用とほぼリアルタイムの索引用のシステム・レベルのパラメータを設定します。

構文

CTX_ADM.SET_PARAMETER(param_name IN VARCHAR2,
param_value IN VARCHAR2);

param_name

設定するパラメータの名前を指定します。次のいずれかのパラメータを指定できます。

- max_index_memory(索引付けに使用可能な最大メモリー)

- default_index_memory(索引付けに割り当てられたデフォルトのメモリー)

- log_directory(CTX_OUPUTファイル用ディレクトリ)

- ctx_doc_key_type(CTX_DOCプロシージャ用のデフォルトの入力キー型)

- file_access_role(FILEまたはURLデータストアを使用する場合の索引作成用のデフォルトのデータベース・ロール名)

- auto_optimize (自動最適化のENABLEまたはDISABLE)

- auto_optimize_logfile (自動最適化ログ・ファイルのベース・ファイル名)

注意:

自動最適化ログ・ファイルはログ・ディレクトリに作成され、自動最適化ジョブ開始時刻のタイムスタンプがベース・ファイル名に追加されます。新しいログ・ファイルの名前は、次の自動最適化ジョブを実行するときに有効になります。

- default_datastore(デフォルトのデータストア・プリファレンス)

- default_filter_file(ファイルに格納されているデータ用のデフォルトのフィルタ・プリファレンス)

- default_filter_text(デフォルトのテキスト・フィルタ・プリファレンス)

- default_filter_binary(デフォルトのバイナリ・フィルタ・プリファレンス)

- default_section_html(デフォルトのhtmlセクション・グループ・プリファレンス)

- default_section_xml(デフォルトのxmlセクション・グループ・プリファレンス)

- default_section_text(デフォルトのテキスト・セクション・グループ・プリファレンス)

- default_lexer(デフォルトのレクサー・プリファレンス)

- default_wordlist(デフォルトのワードリスト・プリファレンス)

- default_stoplist(デフォルトのストップリスト・プリファレンス)

- default_storage(デフォルトの記憶域プリファレンス)

- default_ctxcat_lexer (CTXCAT索引のデフォルトのレクサー・プリファレンス)

- default_ctxcat_stoplist (CTXCAT索引のデフォルトのストップリスト・プリファレンス)

- default_ctxcat_storage (デフォルトのCTXCAT索引記憶域)

- default_ctxcat_wordlist (CTXCAT索引のデフォルトのワードリスト・プリファレンス)

- default_ctxrule_lexer (CTXRULE索引のデフォルトのレクサー)

- default_ctxrule_stoplist (CTXRULE索引のデフォルトのストップリスト)

- default_ctxrule_storage (CTXRULE索引のデフォルト記憶域)

- default_ctxrule_wordlist (CTXRULE索引のデフォルトのワードリスト)

関連項目:

これらのパラメータに対するデフォルト値の詳細は、「Oracle Text索引付けの要素」の「システム・パラメータ」を参照してください。

param_value

パラメータに割り当てる値を指定します。max_index_memoryおよびdefault_index_memoryの場合、指定する値は次の構文になります。

number[K|M|G]

KはKB、MはMB、GはGBを表します。

その他の各パラメータに対しては、プリファレンス名を指定し、索引付けのデフォルトとして使用します。

auto_optimizeに対して指定する値は、ENABLEまたはDISABLEです。このパラメータをENABLEに設定すると、自動最適化ジョブを開始できます。このパラメータをDISABLEに設定すると自動最適化ジョブは開始できず、現在実行中の最適化ジョブはすべて停止します。

例

begin
ctx_adm.set_parameter('default_lexer', 'my_lexer');
end;

6 CTX_ANLパッケージ

この章の内容は以下のとおりです。

- CTX_ANLパッケージのプロシージャについて

- ADD_DICTIONARY

- DROP_DICTIONARY

6.1 CTX_ANLパッケージのプロシージャについて

CTX_ANL PL/SQLパッケージは、AUTO_LEXERとともに使用し、レクサーからカスタム・ディクショナリを追加および削除するプロシージャが用意されています。カスタム・ディクショナリは、特別な研究分野や業種に応じてユーザーが開発するディクショナリです。ほとんどの場合、Oracle Textに用意されているディクショナリだけで要件に十分対応できます。

関連項目:

"AUTO_LEXERとサポートされている言語の詳細は、「AUTO_LEXER」を参照してください。

CTX_ANLパッケージには、次のストアド・プロシージャが含まれています。

名前

説明

ADD_DICTIONARY

カスタム・ディクショナリをレクサーに追加します。

DROP_DICTIONARY

カスタム・ディクショナリをレクサーから削除します。

注意:

CTX_ANLのプロシージャを使用できるのは、CTXSYSユーザーのみです。

6.2 ADD_DICTIONARY

CTX_ANL.ADD_DICTIONARYプロシージャを使用して、AUTO_LEXERで使用されるカスタム・ディクショナリを追加します。

注意:

ディクショナリ・データは、索引/ポリシーの作成時またはALTER INDEX時以降に処理されます。ディクショナリ・データ形式のエラーは、索引/ポリシーの作成時またはALTER INDEX時に検出され、「DRG-13710: ディクショナリの構文エラー」のエラーになります。

構文

CTX_ANL.ADD_DICTIONARY(
name          in VARCHAR2,
language      in VARCHAR2,
dictionary    in CLOB
);

name

ユーザー作成のカスタム・ディクショナリの一意名。

language

カスタム・ディクショナリで使用される言語。

dictionary

カスタム・ディクショナリを含むCLOB。カスタム・ディクショナリは定義のリストで構成されます。これは、「カスタム・ディクショナリの形式と構文」で説明しているように、タブ区切りか1行ずつで個別に定義されます。

カスタム・ディクショナリの形式と構文

カスタム・ディクショナリで新しい語幹を定義、または既存の語幹を再定義すれば、使用する言語のAUTO_LEXERにワードを追加することができます。

新しい語幹を定義、または既存の語幹を再定義するには、次の構文を使用します。

COMPOUND<tab>word|word<tab>STEM<tab>word<tab>parts-of-speech<tab>features

COMPOUND

COMPOUNDは、2つの完全な単語をパイプ(|)で結合して、複合語を作成します。wordは単純なテキスト文字列です。この文字列を他の単語に結合して複合語が作成され、AUTO_LEXERで指定する言語に追加されます。

COMPOUNDでは複合語に対して最大8つの要素単語をサポートします。

STEM

STEMで、新しい単語の語根を追加します。

word

COMPOUNDとSTEMに指定するword値は、単純なテキスト文字列です。他の単語に結合して新しい単語を作成する単語、またはAUTO_LEXERの言語ディクショナリに追加する単語の語根(語幹)を表します。

parts-of-speech

parts-of-speech値は、有効な品詞のリストです。カンマで区切ります。表6-1に、parts-of-speech値の名前をリストします。少なくとも1つのparts-of-speech値が必須です。

features

featuresは、有効な文法機能のリストを表します。表6-2を参照してください。複数の機能はカンマで区切ります。機能はオプションです。指定する言語ディクショナリでwordがすでに定義されている場合には、この定義が優先されます。parts-of-speechまたはfeaturesに無効な値を指定すると、エラーになります。

表6-1 カスタム・ディクショナリで有効な品詞(大/小文字を区別)

品詞

説明

noun

単純な名詞。table、book、procedureなど。

nounProper

人名、地名などの固有名詞。Zachary、Supidito、Susquehannaのように通常は大文字で始まります。

adjective

名詞の修飾語。fast、trenchant、pendulousなどで、一般的には比較形(green、greener、greenest)があります。

adverb

文の一般的な修飾語。形容詞または動詞を修飾する場合も、独立している場合もあります。slowly、yet、perhapsなど。

preposition

名詞を伴って前置詞句を作成する単語。off、beside、fromなど。類似の機能に後置詞を使用する言語の場合には、後置詞にも使用します。

表6-2は、機能と使用方法のリストです。これらが該当するかどうか、必要かどうかは、指定された言語によって異なります。変化とは、数(単数または複数)、格、性などを決定するために一部の言語で使用される語形変化のことです。カスタム・ディクショナリを使用する言語によっては、この機能が関係します。

表6-2 カスタム・ディクショナリで有効な機能

機能(大/小文字が区別されます)

説明

genderMasculine

男性形

genderFeminine

女性形

genderNeuter

中性形

declensionHard

強変化

declensionSoft

弱変化

例

exec CTX_DDL.CREATE_PREFERENCE('A_LEX', 'AUTO_LEXER');
exec CTX_ANL. ADD_DICTIONARY('my_dict1', 'ENGLISH', lobloc);
select * from CTX_USR_ANL_DICTS;
exec CTX_DDL.SET_ATTRIBUTE('A_LEX', 'english_dictionary', 'MY_ENGLISH');

次の例では、d1という名前のカスタム・ディクショナリを作成し、英語のAUTO_LEXERに追加します。

declare
dict clob;
begin
dict := '# compounds
COMPOUND        help|desk
COMPOUND        help|desks
COMPOUND        book|shelf
COMPOUND        book|shelves
COMPOUND        back|woods|man
'||
'# define company abbreviations
STEM    comp.   noun
STEM    ltd.    noun
STEM    co.     noun
STEM    oracle  nounProper
STEM    make    verb
STEM    unkword noun
STEM    unkword verb
';
ctx_anl.add_dictionary('d1','ENGLISH',dict);
end;
/

関連項目

"AUTO_LEXER"

"CREATE_PREFERENCE "

"SET_ATTRIBUTE "

"DROP_DICTIONARY"

6.3 DROP_DICTIONARY

AUTO_LEXERからカスタム・ディクショナリを作成するには、このプロシージャを使用します。

構文

CTX_ANL.DROP_DICTIONARY(
name          in VARCHAR2,
language      in VARCHAR2,
dictionary    in CLOB
);

name

ユーザー作成のカスタム・ディクショナリの一意名。

language

カスタム・ディクショナリの言語。

dictionary

カスタム・ディクショナリを表すCLOB。

例

begin
CTX_ANL.DROP_DICTIONARY('dict1', 'english', 'dictionary');
end;

関連項目

"AUTO_LEXER"

"ADD_DICTIONARY"

7 CTX_CLSパッケージ

この章の内容は以下のとおりです。

- CTX_CLSパッケージのプロシージャについて

- TRAIN

- CLUSTERING

7.1 CTX_CLSパッケージのプロシージャについて

CTX_CLS PL/SQLパッケージには、ドキュメント・カテゴリを定義するルールを生成するプロシージャがあり、ドキュメントの分類を実行できます。

次のプロシージャは、CTX_CLS PL/SQLパッケージの中にあります。

名前

説明

TRAIN

ドキュメントのカテゴリを定義するルールを生成します。出力は、入力されたトレーニング・ドキュメント・セットに基づいて行われます。

CLUSTERING

ドキュメント・コレクションのクラスタを生成します。

関連項目:

ドキュメントの分類の詳細は、『Oracle Textアプリケーション開発者ガイド』を参照してください。

7.2 TRAIN

このプロシージャを使用して、ドキュメントのカテゴリを選択する問合せルールを生成します。分類済のドキュメントで構成されたトレーニング・セットを指定する必要があります。Oracle Textがサポートしているすべてのドキュメント形式を使用でき、各ドキュメントが1つ以上のカテゴリに属している必要があります。このプロシージャは、カテゴリを定義する問合せを生成し、結果を表に書き込みます。

ドキュメント表とカテゴリ表の準備も必要です。カテゴリ表には、2つ以上のカテゴリが含まれている必要があります。

たとえば、ドキュメント表とカテゴリ表を次のように定義できます。

create table trainingdoc(

docid number primary key,
text varchar2(4000));

create table category (

docid trainingdoc(docid),
categoryid number);

必要な分類アルゴリズムに合せ、2つの構文のいずれかを使用できます。問合せと互換性を持つ構文は、RULE_CLASSIFIERプリファレンスを使用し、問合せ文字列としてルールを生成します。サポート・ベクター・マシン構文は、SVM_CLASSIFERプリファレンスを使用し、バイナリ形式でルールを生成します。SVM_CLASSIFIERを使用すると、精度の高い分類が得られますが、ルールはバイナリ形式で生成されるため、RULE_CLASSIFIERによって生成される問合せ文字列のようには確認できません。RULE_CLASSIFIERおよびSVM_CLASSIFIERの学習に影響を与えるのは、ドキュメント表とカテゴリ表の両方に使用されているドキュメントIDのみです。

CTX_CLS.TRAINプロシージャでは、関連付けられたCONTEXT索引がドキュメント表に存在している必要があります。最適な結果を得るために、このプロシージャの実行前に索引を同期化してください。SVM_CLASSIFIER構文では、移入されていないCONTEXT索引を使用できますが、問合せと互換性のある構文では、CONTEXT索引が移入されている必要があります。

関連項目:

ドキュメントの分類の詳細は、『Oracle Textアプリケーション開発者ガイド』を参照してください。

問合せと互換性のある構文

次の構文は、問合せと互換性のあるルールを生成し、RULE_CLASSIFIERプリファレンスとともに使用されます。複数のキーワードによって異なるカテゴリがそれぞれ分けられている場合、この構文とプリファレンスを使用します。ルールを問合せ文字列として生成する利点は、生成したルールを容易に確認できることです。バイナリ形式であるSVMルールの生成と、この点が異なります。

CTX_CLS.TRAIN(

index_name    in varchar2,
docid         in varchar2,
cattab        in varchar2,
catdocid      in varchar2,
catid         in varchar2,
restab        in varchar2,
rescatid      in varchar2,
resquery      in varchar2,
resconfid     in varchar2,
preference    in varchar2 DEFAULT NULL

);

index_name

ドキュメント・トレーニング・セットに関連付けられたCONTEXT索引の名前を指定します。

docid

ドキュメント表内のドキュメントID列の名前を指定します。この列のドキュメントIDは一意である必要があり、この列は、NUMBERデータ型であることが必要です。この列の値は、符号なし32ビット整数で格納され、0から4294967295の範囲内であることが必要です。

cattab

カテゴリ表の名前を指定します。この表のREADまたはSELECT権限が必要です。(READ権限の詳細は、『Oracle Databaseセキュリティ・ガイド』を参照してください。

catdocid

カテゴリ表内のドキュメントID列の名前を指定します。この表のドキュメントIDは、ドキュメント表にも存在している必要があります。この列は、NUMBERである必要があります。この列の値は、符号なし32ビット整数で格納され、0から4294967295の範囲内であることが必要です。

catid

カテゴリ表内のカテゴリID列の名前を指定します。この列は、NUMBERである必要があります。この列の値は、符号なし32ビット整数で格納され、0から4294967295の範囲内であることが必要です。

restab

結果表の名前を指定します。この表に対するINSERT権限が必要です。

rescatid

結果表内のカテゴリID列の名前を指定します。この列は、NUMBERである必要があります。この列の値は、符号なし32ビット整数で格納され、0から4294967295の範囲内であることが必要です。

resquery

結果表内の問合せ列の名前を指定します。この列は、VARACHAR2、CHAR, CLOB、NVARCHAR2またはNCHARであることが必要です。

この列に生成された問合せは、次のようにANDまたはNOT演算子を使用して問合せ語句を接続します。

'T1 & T2 ~ T3'

問合せ語句はテーマ・トークンとしても使用でき、次のようにABOUT演算子で接続されます。

'about(T1) & about(T2) ~ about(T3)'

生成されたルールは、フィールド・セクションに対するWITHIN問合せもサポートします。

resconfid

結果表内の信頼度列の名前を指定します。この列には、トレーニング・データから推測した確率が含まれます。この確率は、ドキュメントが問合せに十分答えているかどうかを示します。

プリファレンス

プリファレンスの名前を指定します。分類型および属性については、「Oracle Text索引付けの要素」の「分類型」を参照してください。

サポート・ベクター・マシン(SVM)ルールの構文

サポート・ベクター・マシン(SVM)のルール・プリファレンスは、バイナリ形式でルールを生成します。ご使用のアプリケーションで高度な分類精度が必要な場合、この構文を使用します。

次の構文は、SVM_CLASSIFIERプリファレンスを持つサポート・ベクター・マシン(SVM)ルールを生成します。

CTX_CLS.TRAIN(
index_name in varchar2,
docid      in varchar2,
cattab     in varchar2,
catdocid   in varchar2,
catid      in varchar2,
restab     in varchar2,
preference in varchar2 );

index_name

テキスト索引の名前を指定します。

docid

ドキュメント表内のdocid列の名前を指定します。

cattab

カテゴリ表の名前を指定します。

catdocid

カテゴリ表内のdocid列の名前を指定します。

catid

カテゴリ表内のカテゴリID列の名前を指定します。

restab

結果表の名前を指定します。

結果表の形式は、次のとおりです。

列名

データ型

説明

CAT_ID

NUMBER

カテゴリのID。

TYPE

NUMBER(3) NOT NULL

実際のルールまたはcatidの場合は0、そうでない場合は1。

RULE

BLOB

戻されたルール。

プリファレンス

ユーザー・プリファレンスの名前を指定します。分類型および属性については、「Oracle Text索引付けの要素」の「分類型」を参照してください。

例

CTX_CLS.TRAINプロシージャは、管理型分類で使用されます。拡張された例は、『Oracle Textアプリケーション開発者ガイド』を参照してください。

7.3 CLUSTERING

このプロシージャを使用して、ドキュメントのコレクションをクラスタ化します。クラスタとは、内容が類似しているドキュメントのグループです。

クラスタ化の結果セットは、ドキュメントの割当ておよびクラスタの説明で構成されます。

- ドキュメントの割当ての結果セットは、各ドキュメントが生成されたすべてのリーフ・クラスタに対してどれほど関連しているかを示します。

- クラスタの説明の結果セットには、クラスタのトピックに関する情報が含まれます。この結果セットではクラスタが識別されており、クラスタの説明テキスト、クラスタ・ラベルの提案およびクラスタの品質スコアが含まれています。

クラスタの出力は階層構造です。ドキュメントとの関連性について、リーフ・クラスタにのみスコアが割り当てられます。多数のクラスタが作成されるほど、計算時間も長くかかります。生成されるクラスタの上限は、KMEAN_CLUSTERINGクラスタ型のCLUSTER_NUM属性で指定します(この章の「クラスタ型」を参照してください)。

このプロシージャには、表結果セットを持つものと、インメモリー結果セットを持つものの2つのバージョンが存在します。

クラスタ化は、非管理型分類とも呼ばれます。

関連項目:

クラスタ化および関連するプリファレンスの詳細は、「Oracle Text索引付けの要素」の「クラスタ型」、および『Oracle Textアプリケーション開発者ガイド』を参照してください。

構文: 表結果セット

ctx_cls.clustering (
index_name  IN VARCHAR2,
docid       IN VARCHAR2,
doctab_name IN VARCHAR2,
clstab_name IN VARCHAR2,
pref_name   IN VARCHAR2  DEFAULT NULL
);

index_name

コレクション表のCONTEXT索引の名前を指定します。

docid

コレクション表内のドキュメントID列の名前を指定します。

doctab_name

ドキュメント割当て表の名前を指定します。このプロシージャにより、次の構造の表が作成されます。

doc_assign(
docid number,
clusterid number,
score number
);

列

説明

DOCID

ドキュメントを識別するドキュメントID。

CLUSTERID

このドキュメントに関連付けられたリーフ・クラスタのID。CLUSTERIDが-1の場合、そのクラスタには「その他」のドキュメント(他のクラスタ・カテゴリに割り当てられないドキュメントなど)が含まれます。

SCORE

ドキュメントとクラスタ間で関連付けられたスコア。

これよりも多くの列が必要な場合は、このプロシージャをコールする前に表を作成します。

clstab_name

クラスタ説明表の名前を指定します。このプロシージャにより、次の構造の表が作成されます。

cluster_desc(
clusterid NUMBER,
descript VARCHAR2(4000),
label VARCHAR2(200),
sze NUMBER,
quality_score NUMBER,
parent NUMBER
);

列

説明

CLUSTERID

クラスタを識別するクラスタID。CLUSTERIDが-1の場合、そのクラスタには「その他」のドキュメント(他のクラスタ・カテゴリに割り当てられないドキュメントなど)が含まれます。

DESCRIPT

クラスタを説明する文字列。

LABEL

クラスタに対して提案されたラベル。

SZE

現在このパラメータには値はありません。

QUALITY_SCORE

クラスタの品質スコア。数値が大きいほど一貫性が高いことを示します。

PARENT

親クラスタID。ゼロ(0)は親クラスタがないことを意味します。

これよりも多くの列が必要な場合は、このプロシージャをコールする前に表を作成します。

pref_name

プリファレンスの名前を指定します。

構文: インメモリーの結果セット

パフォーマンスを向上させるために、結果セットはインメモリー構造に格納します。CTX_CLSパッケージでは、ドキュメント割当て用およびクラスタ説明用に2つのインメモリー表が定義されています。

CTX_CLS.CLUSTERING(
index_name     IN VARCHAR2,
docid          IN VARCHAR2,
dids           IN DOCID_TAB,
doctab_name    IN OUT NOCOPY DOC_TAB,
clstab_name    IN OUT NOCOPY CLUSTER_TAB,
pref_name      IN VARCHAR2  DEFAULT NULL
);

index_name

コレクション表のCONTEXT索引の名前を指定します。

docid

コレクション表内のドキュメントID列を指定します。

dids

インメモリーdocid_tabの名前を指定します。

TYPE docid_tab IS TABLE OF number INDEX BY BINARY_INTEGER;

doctab_name

ドキュメント割当てインメモリー表の名前を指定します。この表は、次のように定義されます。

TYPE doc_rec IS RECORD (
docid NUMBER,
clusterid NUMBER,
score NUMBER
)
TYPE doc_tab IS TABLE OF doc_rec INDEX BY BINARY_INTEGER;

列

説明

DOCID

ドキュメントを識別するドキュメントID。

CLUSTERID

このドキュメントに関連付けられたリーフ・クラスタのID。CLUSTERIDが-1の場合、そのクラスタには「その他」のドキュメント(他のクラスタ・カテゴリに割り当てられないドキュメントなど)が含まれます。

SCORE

ドキュメントとクラスタ間で関連付けられたスコア。

cls_tab

クラスタ説明インメモリー表の名前を指定します。

TYPE cluster_rec IS RECORD(
clusterid NUMBER,
descript VARCHAR2(4000),
label VARCHAR2(200),
sze NUMBER,
quality_score NUMBER,
parent NUMBER
);
TYPE cluster_tab IS TABLE OF cluster_rec INDEX BY BINARY_INTEGER;

列

説明

CLUSTERID

クラスタを識別するクラスタID。CLUSTERIDが-1の場合、そのクラスタには「その他」のドキュメント(他のクラスタ・カテゴリに割り当てられないドキュメントなど)が含まれます。

DESCRIPT

クラスタを説明する文字列。

LABEL

クラスタに対して提案されたラベル。

SZE

現在このパラメータには値はありません。

QUALITY_SCORE

クラスタの品質スコア。数値が大きいほど一貫性が高いことを示します。

PARENT

親クラスタID。ゼロ(0)は親クラスタがないことを意味します。

pref_name

プリファレンスの名前を指定します。分類型および属性については、「Oracle Text索引付けの要素」の「クラスタ型」を参照してください。

例

関連項目:

クラスタ化の使用例は、『Oracle Textアプリケーション開発者ガイド』を参照してください。

8 CTX_DDLパッケージ

CTX_DDL PL/SQLパッケージには、テキスト索引に必要なプリファレンス、セクション・グループおよびストップリストを作成および管理するプロシージャが用意されています。

CTX_DDLには、次のストアド・プロシージャおよびファンクションが含まれています。

名前

説明

ADD_ATTR_SECTION

属性セクションをXMLセクション・グループに追加します。

ADD_AUTO_OPTIMIZE

自動最適化の対象である索引のリストに、索引またはパーティションを追加します。

ADD_FIELD_SECTION

フィールド・セクションを作成し、指定したセクション・グループに割り当てます。

ADD_INDEX

索引をカタログ索引プリファレンスに追加します。

ADD_MDATA

ドキュメントのMDATA値を変更します。

ADD_MDATA_COLUMN

FILTER BY列を指定のMDATAセクションにマップします。

ADD_MDATA_SECTION

MDATAメタデータ・セクションをドキュメントに追加します。

ADD_NDATA_SECTION

NDATAセクションをドキュメントに追加します。

ADD_SDATA_COLUMN

FILTER BY列を指定のSDATAセクションにマップします。

ADD_SDATA_SECTION

SDATA構造化データ・セクションをドキュメントに追加します。

ADD_SEC_GRP_ATTR_VAL

既存のセクション・グループ属性の値のリストに、セクション・グループ属性値を追加します。

ADD_SPECIAL_SECTION

特殊セクションをセクション・グループに追加します。

ADD_STOPCLASS

ストップクラスをストップリストに追加します。

ADD_STOP_SECTION

停止セクションを自動セクション・グループに追加します。

ADD_STOPTHEME

ストップテーマをストップリストに追加します。

ADD_STOPWORD

ストップワードをストップリストに追加します。

ADD_SUB_LEXER

サブレクサーをマルチレクサー・プリファレンスに追加します。

ADD_ZONE_SECTION

ゾーン・セクションを作成し、それを指定されたセクション・グループに追加します。

COPY_POLICY

ポリシーのコピーを作成します。

CREATE_INDEX_SET

CTXCAT索引タイプの索引セットを作成します。

CREATE_POLICY

ORA:CONTAINS()で使用するポリシーを作成します。

CREATE_PREFERENCE

テキスト・データ・ディクショナリにプリファレンスを作成します。

CREATE_SECTION_GROUP

テキスト・データ・ディクショナリにセクション・グループを作成します。

CREATE_SHADOW_INDEX

受け取った索引に対してポリシーを作成します。非パーティション索引の場合は、索引表も作成します。

CREATE_STOPLIST

ストップリストを作成します。

DROP_INDEX_SET

索引セットを削除します。

DROP_POLICY

ポリシーを削除します。

DROP_PREFERENCE

テキスト・データ・ディクショナリからプリファレンスを削除します。

DROP_SECTION_GROUP

テキスト・データ・ディクショナリからセクション・グループを削除します。

DROP_SHADOW_INDEX

シャドウ索引を削除します。

DROP_STOPLIST

ストップリストを削除します。

EXCHANGE_SHADOW_INDEX

シャドウ索引のメタデータとデータをスワップします。

OPTIMIZE_INDEX

索引を最適化します。

POPULATE_PENDING

元表または表パーティション内のROWIDすべてを含めた保留キューを移入します。

PREFERENCE_IMPLICIT_COMMIT

CTX_DDLプリファレンスに関連するプロシージャが暗黙的なコミットを発行するかどうか指定します。

RECREATE_INDEX_ONLINE

受け取った索引を再作成します。

REM_SEC_GRP_ATTR_VAL

既存のセクション・グループ属性の値のリストから、特定のセクション・グループ属性値を削除します。

REMOVE_AUTO_OPTIMIZE

自動最適化の対象である索引のリストから、索引またはパーティションを削除します。

REMOVE_INDEX

CTXCAT索引プリファレンスから索引を削除します。

REMOVE_MDATA

ドキュメントからMDATA値を削除します。

REMOVE_SECTION

セクション・グループからセクションを削除します。

REMOVE_STOPCLASS

ストップクラスをストップリストから削除します。

REMOVE_STOPTHEME

ストップリストからストップテーマを削除します。

REMOVE_STOPWORD

ストップリストからストップワードを削除します。

REMOVE_SUB_LEXER

サブレクサーをマルチレクサー・プリファレンスから削除します。

REPLACE_INDEX_METADATA

ローカル・ドメイン索引のメタデータを置換します。

SET_ATTRIBUTE

プリファレンスの属性を設定します。

SET_SEC_GRP_ATTR

名前で指定したセクション・グループに、セクション・グループ固有の属性を追加します。

SET_SECTION_ATTRIBUTE

セクション属性を設定します。

SYNC_INDEX

索引を同期化します。

UNSET_ATTRIBUTE

プリファレンスから属性の設定を削除します。

UPDATE_SUB_LEXER

サブレクサーを更新します。

UNSET_SEC_GRP_ATTR

セクション・グループ固有の属性を削除します。

UPDATE_POLICY

ポリシーを更新します。

UPDATE_SDATA

SDATAセクションを更新します。

8.1 ADD_ATTR_SECTION

属性セクションをXMLセクション・グループに追加します。このプロシージャは、XMLドキュメントの属性をセクションとして定義する場合に有効です。これによって、WITHIN演算子を使用してXML属性テキストを検索できます。

注意:

AUTO_SECTION_GROUPを使用すると、属性セクションが自動的に作成されます。自動的に作成された属性セクションは、tag@attributeという形式でネーミングされます。

構文

CTX_DDL.ADD_ATTR_SECTION(
group_name     IN    VARCHAR2,
section_name   IN    VARCHAR2,
tag            IN    VARCHAR2);

group_name

XMLセクション・グループの名前を指定します。属性セクションは、XMLセクション・グループにのみ追加できます。

section_name

属性セクションの名前を指定します。この名前は、属性テキストに対するWITHIN問合せで使用されます。

指定するセクション名には、コロン(:)、カンマ(,)またはドット(.)は使用できません。また、セクション名は、group_nameの中で一意であることが必要です。セクション名の大/小文字は区別されません。

属性セクション名の長さは、64バイト以内にしてください。

tag

属性の名前は、tag@attrという形式で指定します。このパラメータでは、大/小文字が区別されます。

例

次のように、TITLE属性を持つBOOKタグを定義するXMLファイルがあるとします。

<BOOK TITLE="Tale of Two Cities">
It was the best of times.
</BOOK>

タイトル属性を属性セクションとして定義するには、次のようにXML_SECTION_GROUPを作成し、属性セクションを定義します。

begin
ctx_ddl.create_section_group('myxmlgroup', 'XML_SECTION_GROUP');
ctx_ddl.add_attr_section('myxmlgroup', 'booktitle', 'BOOK@TITLE');
end;

このようにTITLE属性セクションを定義し、ドキュメント・セットを索引付けすると、次のようにXML属性テキストを問い合せることができます。

'Cities within booktitle'

関連項目

"PREFERENCE_IMPLICIT_COMMIT"

8.2 ADD_AUTO_OPTIMIZE

自動最適化の対象である索引のリストに、索引またはパーティションを追加します。パーティション索引の場合はパーティションの名前を指定する必要があり、指定しないとエラーが発生します。グローバル索引の場合はSTAGE_ITABを有効にする必要があり、有効にしないとエラーが発生します。

AUTO_OPTIMIZE機能により、STAGE_ITAB機能を使用する索引の管理性が向上します。STAGE_ITAB機能は、新しく同期化されたドキュメントから投稿を収集するため、$Gステージング表を導入しています。

AUTO_OPTIMIZE機能の目的は、次のとおりです。

- 索引およびパーティションをバックグラウンドAUTO_OPTIMIZEプロセスに登録できます。

- 適切な時間に$G表から$Iに行を自動的に移動します。

- $Gから$Iへの行の移動が問合せパフォーマンスを最大化する方法で実行されます。

このプロシージャは、まだ起動していない場合にバックグラウンド・プロセスを起動します。自動最適化のプロセスは、CTXロギングによって追跡されます。

このプロシージャによる変更は、ただちに有効になります。

注意:

init.oraパラメータJOB_QUEUE_PROCESSESを1以上に設定する必要があります。JOB_QUEUE_PROCESSESの詳細は、『Oracle Databaseリファレンス』を参照してください。

構文

CTX_DDL.ADD_AUTO_OPTIMIZE(

idx_name       IN VARCHAR2,
part_name      IN VARCHAR2 default NULL,
optlevel       IN VARCHAR2 default CTX_DDL.OPTLEVEL_MERGE
);

idx_name

追加する索引の名前を指定します。

part_name

追加するパーティションの名前を指定します。

optlevel

CTX_DDL.OPTIMIZE_INDEXプロシージャのoptlevelを指定します。このパラメータで唯一有効な値はmergeです。

注意

自動最適化を使用するときの推奨手順は、次のとおりです。

1. 必要な索引を作成します。

2. CTX_DDL.ADD_AUTO_OPTIMIZEプロシージャを使用して、自動最適化リストに索引を追加します。

索引の同期化操作によって、自動最適化ジョブの実行は自動的に開始されます(すでに実行中の場合は除く)。このジョブは、処理対象がなくなるまで続行されます。今後の索引同期化でも、すでに実行中でないかぎり、自動最適化ジョブの実行は自動的に始まります。

関連項目

"REMOVE_AUTO_OPTIMIZE"

CONTEXT索引でのSTAGE_ITABの使用方法については、『Oracle Textアプリケーション開発者ガイド』を参照してください

8.3 ADD_FIELD_SECTION

フィールド・セクションを作成し、そのセクションを既存のセクション・グループに追加します。これによって、WITHIN演算子を使用してフィールド・セクション内を検索できます。追加できるフィールド・セクションの数は無制限です。

フィールド・セクションは開始および終了タグで区切られます。デフォルトでは、フィールド・セクション内のテキストは、ドキュメントの残りの部分とは別のサブドキュメントとして索引付けされます。

ゾーン・セクションとは異なり、フィールド・セクションはネストまたはオーバーラップできません。このため、フィールド・セクションは非繰返しセクション、非オーバーラップ・セクション(電子メール型またはニュース型ドキュメントのTITLEやAUTHORマークアップなど)に最適です。

フィールド・セクションの索引付けによって、フィールド・セクションに対するWITHIN問合せは、通常、ゾーン・セクションに対するWITHIN問合せより高速になります。

構文

CTX_DDL.ADD_FIELD_SECTION(
group_name     IN    VARCHAR2,
section_name   IN    VARCHAR2,
tag            IN    VARCHAR2,
visible        IN    BOOLEAN default FALSE
);

group_name

section_nameを追加するセクション・グループの名前を指定します。1つのセクション・グループに追加できるフィールド・セクションの数は無制限です。同じグループ内では、セクション・ゾーン名とセクション・フィールド名は同じ名前にできません。

section_name

group_nameに追加するセクションの名前を指定します。この名前は、問合せでセクションを識別する場合に使用します。英数字以外の文字(_など)は問合せでエスケープされるため、これらの文字を含む名前は使用しないでください。セクション名の大/小文字は区別されません。

同じグループ内では、ゾーン・セクション名とフィールド・セクション名は同じ名前にできません。語句PARAGRAPHおよびSENTENCEは、特殊セクション用に予約されています。

セクション名はタグ内で一意である必要はありません。詳細を検索しやすいように、同じセクション名を複数のタグに割り当てることができます。

tag

セクションの開始をマークするタグを指定します。たとえば、タグが<H1>の場合は、H1を指定します。指定する開始タグは、セクション・グループ内で一意であることが必要です。

group_nameがHTML_SECTION_GROUPの場合は、METAタグのNAME/CONTENT属性の組に対してフィールド・セクションを作成できます。それには、tagをmeta@namevalueとして指定します。この場合、namevalueはNAME属性の値で、対応するCONTENT属性がセクションとして索引付けられます。「<META>タグに対するセクションの作成」の例を参照してください。

Oracle Textは、セクション・グループ作成時に指定したgroup_typeパラメータから終了タグを認識します。

visible

ドキュメントの残りの部分でテキストを参照できるようにするには、TRUEを指定します。

デフォルトでは、visibleフラグはFALSEです。これは、フィールド・セクション内のテキストがドキュメントの残りの部分とは別のサブドキュメントとしてOracle Textにより索引付けされることを意味します。ただし、フィールド・セクション内のテキストをドキュメント全体の一部として索引付けする場合は、visibleフラグをTRUEに設定できます。

例

Visibleなフィールド・セクションおよびInvisibleなフィールド・セクション

次の例は、BASIC_SECTION_GROUP型のセクション・グループbasicgroupを定義します。(BASIC_SECTION_GROUP型の詳細は、「セクション・グループ型」を参照してください。)次に、<A>タグに対してAuthorというフィールド・セクションをbasicgroupに作成します。

また、visibleフラグはFALSEに設定します。

begin

ctx_ddl.create_section_group('basicgroup', 'BASIC_SECTION_GROUP');
ctx_ddl.add_field_section('basicgroup', 'Author', 'A', FALSE);

end;

Authorフィールド・セクションは参照不能であるため、Authorセクション内のテキストを検索するには、次のようにWITHIN演算子を使用する必要があります。

'(Martin Luther King) WITHIN Author'

WITHIN演算子を使用せずにMartin Luther Kingを問い合せても、フィールド・セクション内のこの語句のインスタンスは戻りません。WITHINを指定しないでフィールド・セクション内のテキストを問い合せるには、セクション作成時に次のようにvisibleフラグをTRUEに設定する必要があります。

begin
ctx_ddl.add_field_section('basicgroup', 'Author', 'A', TRUE);
end;

<META>タグに対するセクションの作成

HTML_SECTION_GROUPを使用すると、METAタグに対するセクションを作成できます。

次のように、METAタグを持つHTMLドキュメントがあるとします。

<META NAME="author" CONTENT="ken">

<META NAME="author">タグに対してCONTENT属性を索引付けたフィールド・セクションを作成します。

begin
ctx_ddl.create_section_group('myhtmlgroup', 'HTML_SECTION_GROUP');
ctx_ddl.add_field_section('myhtmlgroup', 'author', 'META@AUTHOR');
end

セクション・グループmygroupで索引付けした後、次のようにドキュメントを問い合せます。

'ken WITHIN author'

制限事項

ネストされたセクション

フィールド・セクションはネストできません。たとえば、フィールド・セクションを<TITLE>で始まるように定義し、別のフィールド・セクションを<FOO>で始まるように定義した場合、この2つのセクションは次のようにネストすることはできません。

<TITLE> dog <FOO> cat </FOO> </TITLE>

ネストされたセクションを使用するには、これらをゾーン・セクションとして定義します。

繰返しセクション

繰返しフィールド・セクションは使用できますが、WITHIN問合せはこれらを1つのセクションとして処理します。次に、ドキュメントの繰返しフィールド・セクションの例を示します。

<TITLE> cat </TITLE>
<TITLE> dog </TITLE>

問合せ(dog and cat)within titleは、これらのワードが別々のセクション内に出現する場合にも、ドキュメントを戻します。

WITHIN問合せで繰返しセクションを区別するには、これらをゾーン・セクションとして定義します。

関連項目

"WITHIN"

"セクション・グループ型"

"CREATE_SECTION_GROUP "

"ADD_ZONE_SECTION "

"ADD_SPECIAL_SECTION "

"REMOVE_SECTION "

"DROP_SECTION_GROUP "

8.4 ADD_INDEX

サブ索引をカタログ索引プリファレンスに追加します。このプリファレンスを作成するには、元表の1つ以上の列に名前を付けます。

サブ索引を作成して構造化問合せの応答時間を改善するため、問合せ時には、追加する列をCATSEARCH演算子のstructured_query句で使用する必要があります。

構文

CTX_DDL.ADD_INDEX(
set_name        IN VARCHAR2,
column_list     IN VARCHAR2,
storage_clause  IN VARCHAR2
);

set_name

索引セットの名前を指定します。

column_list

索引にカンマで区切られた列のリストを指定します。索引付け時は、このリストの列の元表での行の値が、必ずNULL以外である必要があります。索引付け時にいずれかの行がNULLであると、エラーが発生します。

索引付けの前後に、列にNULL以外の値が設定されていることを確認してください。

storage_clause

記憶域句を指定します。

例

次のスキーマを使用してAUCTIONという表について考えます。

create table auction(

item_id number,
title varchar2(100),
category_id number,
price number,
bid_close date);

表の問合せには、category_idに対する必須のテキスト問合せ句とオプションの構造化条件が含まれているとします。結果は、bid_closeに基づいてソートする必要があります。

ユーザーが入力する可能性がある様々なタイプの構造化問合せをサポートするために、カタログ索引を作成できます。

索引を作成する場合は、最初に索引セット・プリファレンスを作成した後、そのプリファレンスに必要な索引を追加します。

begin
ctx_ddl.create_index_set('auction_iset');
ctx_ddl.add_index('auction_iset','bid_close');
ctx_ddl.add_index('auction_iset','category_id, bid_close');
end;

結合されたカタログ索引は、CREATE INDEXを使用して次のように作成します。

create index auction_titlex on AUCTION(title) indextype is CTXCAT parameters
('index set auction_iset');

問合せ

ワードpokemonのtitle列を問い合せるには、次のように、通常の複合問合せを入力します。

select * from AUCTION where CATSEARCH(title, 'pokemon',NULL)> 0;
select * from AUCTION where CATSEARCH(title, 'pokemon', 'category_id=99 order by
bid_close desc')> 0;

注意

索引セットのCTXCAT索引の列リストにあるVARCHAR2列は、30バイトを超えることはできません。

関連項目

"REMOVE_INDEX"

8.5 ADD_MDATA

MDATAセクションとして指定されているドキュメントのメタデータを変更します。このコールの後で、名前が付けられたMDATA値を含むMDATA問合せにより、このMDATA値のあるドキュメントが検索されます。

CTX_DDL.ADD_MDATAには2つのバージョンがあります。単一のメタデータ値を単一のROWIDに追加するバージョンと、複数の値または複数のROWID(あるいはその両方)を処理するバージョンです。

CTX_DDL.ADD_MDATAはトランザクション型です。つまり、コールするセッションで即時に機能し、そのコールするセッションのみで表示でき、ROLLBACKコマンドを使用して無効にできます。また、永続的に機能させるには、コミットが必要です。

すでに索引付けされているドキュメントからメタデータ値を削除するには、CTX_DDL.REMOVE_MDATAを使用します。ADD_MDATAおよびREMOVE_MDATAをコールできるのは、索引の所有者のみです。

構文

これは、単一の値を単一のROWIDに追加する構文です。

CTX_DDL.ADD_MDATA(
idx_name           IN VARCHAR2,
section_name       IN VARCHAR2,
mdata_value        IN VARCHAR2,
mdata_rowid        IN VARCHAR2,
[part_name]        IN VARCHAR2]
);

idx_name

名前が付けられたrowidを含むテキスト索引の名前。

section_name

MDATAセクションの名前。

mdata_value

ドキュメントに追加するメタデータ値。

mdata_rowid

メタデータ値を追加するROWID。

[part_name]

索引パーティションの名前(ある場合)。ローカル・パーティション索引に指定する必要があり、グローバルの非パーティション索引ではNULLである必要があります。

これは、複数の値または複数のROWID(あるいはその両方)を渡す構文です。新しい値またはROWIDの数が多い場合は、このバージョンが効率的です。

CTX_DDL.ADD_MDATA(
idx_name           IN VARCHAR2,
section_name       IN VARCHAR2,
mdata_values       SYS.ODCIVARCHAR2LIST,
mdata_rowids       SYS.ODCIRIDLIST,
[part_name]        IN VARCHAR2]
);

idx_name

名前が付けられたrowidsを含むテキスト索引の名前。

section_name

MDATAセクションの名前。

mdata_values

メタデータ値のリスト。メタデータ値にカンマが含まれている場合は、円記号でカンマをエスケープする必要があります。

mdata_rowids

メタデータ値を追加するROWID。

[part_name]

索引パーティションの名前(ある場合)。ローカル・パーティション索引に指定する必要があり、グローバルの非パーティション索引ではNULLである必要があります。

例

この例では、単一の値を更新します。

select rowid from mytab where contains(text, 'MDATA(sec, value')>0;
No rows returned
exec ctx_ddl.add_mdata('my_index', 'sec', 'value', 'ABC');
select rowid from mytab where contains(text, 'MDATA(sec, value')>0;
ROWID
-----
ABC

この例では、複数の値を更新します。

begin
ctx_ddl.add_mdata('my_index', 'sec',
sys.odcivarchar2list('value1','value2','value3'),
sys.odciridlist('ABC','DEF'));
end;

次のようにした場合と同じです。

begin
ctx_ddl.add_mdata('my_index', 'sec', 'value1', 'ABC');
ctx_ddl.add_mdata('my_index', 'sec', 'value1', 'DEF');
ctx_ddl.add_mdata('my_index', 'sec', 'value2', 'ABC');
ctx_ddl.add_mdata('my_index', 'sec', 'value2', 'DEF');
ctx_ddl.add_mdata('my_index', 'sec', 'value3', 'ABC');
ctx_ddl.add_mdata('my_index', 'sec', 'value3', 'DEF');
end;

注意

ROWIDが索引付けされていない場合、CTX_DDL.ADD.MDATAはエラーなしで完了しますが、エラーはCTX_USER_INDEX_ERRORSにロギングされます。

これらの更新は、元表に格納されている実際の内容ではなく索引自体に直接反映されます。したがって、テキスト索引が再構築されると存続しません。

関連項目

"ADD_MDATA_SECTION"

"REMOVE_MDATA"

"MDATA"

関連項目:

『Oracle Textアプリケーション開発者ガイド』の第8章「Oracle Textでのドキュメント・セクションの検索」

8.6 ADD_MDATA_COLUMN

column_nameで名前が指定されているFILTER BY列をsection_nameで名前が指定されているMDATAセクションにマップします。

構文

構文は、次のとおりです。

CTX_DDL.ADD_MDATA_COLUMN(
group_name         IN VARCHAR2,
section_name       IN VARCHAR2,
column_name        IN VARCHAR2,
);

group_name

セクションを含むグループの名前。

section_name

MDATAセクションの名前。

column_name

MDATAセクションに追加するFILTER BY列の名前。

制限事項

CTX_DDL.ADD_MDATA_COLUMNを使用して作成したMDATAセクションの値は、CTX_DDL.ADD_MDATAまたはCTX_DDL.REMOVE_MDATAでは変更できません。変更すると、エラーが戻ります。セクションの値はSQLを使用して更新する必要があります。

注意

- MDATAセクションに格納されるデータ型はtextです。したがって、FILTER BY列の値は索引付けの際にtextに変換されます。text以外のデータ型の場合は、索引付けの際にFILTER BY列が内部形式に正規化されます。MDATA演算子を使用してセクションを問い合せる場合も、処理の前にMDATA問合せ文字列が内部形式に正規化されます。

- FILTER BY列をMDATAとしてマップすると、Oracle Textのコストベース・オプティマイザでは、Oracle Textのコンポジット・ドメイン索引を使用しないようにして、そのFILTER BY列の範囲述語が処理されます。これは、MDATAのFILTER BY列に対する範囲述語の処理効率が、SDATAとして宣言された場合より低くなるためです。したがって、列に対して範囲検索を行う予定がある場合は、FILTER BY列をMDATAとして追加しないでください。

関連項目

"MDATA"

"ADD_MDATA_SECTION"

"REMOVE_MDATA"

"ADD_SDATA_COLUMN"

関連項目:

『Oracle Textアプリケーション開発者ガイド』の第8章「Oracle Textでのドキュメント・セクションの検索」

8.7 ADD_MDATA_SECTION

MDATAセクションを値とともに既存のセクション・グループに追加します。MDATAセクションは、NULLセクション・グループ、PATHセクション・グループまたはAUTOセクション・グループには追加できません。

セクション値は簡易正規化されます。

- 値に隣接する空白は削除されます。

- 値は64バイトに切り捨てられます。

- 値は単一の値として索引付けされます。値が複数のワードから構成されていても、分割されません。

- 大/小文字の区別は保持されます。ドキュメントが動的に生成される場合は、MDATA値を大文字にし、検索対象を大文字のみにすることで大/小文字の無区別を実装します。

セクションを削除するには、CTX_DDL.REMOVE_SECTION を使用します。

構文

CTX_DDL.ADD_MDATA_SECTION(
group_name    IN VARCHAR2,
section_name  IN VARCHAR2,
tag           IN VARCHAR2,
);

group_name

MDATAセクションを含むセクション・グループの名前。

section_name

MDATAセクションの名前。

tag

MDATAセクションの値。たとえば、セクションが<AUTHOR>である場合、値はCynthia Kadohata (小説『The Floating World』の著者)などとなります。指定したMDATAセクションに複数のtagを割り当てることができます。

例

この例では、authというMDATAセクションを作成します。

ctx_ddl.create_section_group('htmgroup', 'HTML_SECTION_GROUP');
ctx_ddl.add_mdata_section('htmgroup', 'auth', 'author');

関連項目

"ADD_MDATA"

"REMOVE_MDATA"

"MDATA"

"CREATE_SECTION_GROUP "

関連項目:

『Oracle Textアプリケーション開発者ガイド』の第8章「Oracle Textでのドキュメント・セクションの検索」

8.8 ADD_NDATA_SECTION

同じようなスペルの一致を検索します。NDATAセクションの値は、他のセクションのようにドキュメント・テキストから抽出されます。ただし、名前データとして索引付けされます。NDATAセクションは、CTX_USER_SECTIONSビューに格納されます。

構文

CTX_DDL.ADD_NDATA_SECTION(
group_name    IN VARCHAR2,
section_name  IN VARCHAR2,
tag           IN VARCHAR2
);

group_name

セクションを含むグループの名前。

section_name

NDATAセクションの名前。

tag

セクションの開始をマークするタグの名前。たとえば、タグが<H1>の場合は、H1を指定します。指定する開始タグは、セクション・グループ内で一意であることが必要です。

注意

NDATAセクションは、シングルバイト・データおよびマルチバイト・データをサポートします。ただし、文字および語句ベースで制限があります。索引付けされるNDATAセクション・データには、次の制約があります。

- 1文字の空白で区切られた語句の文字数
511

- 空白で区切られた語句の数
255

- 空白を含む文字の総数
511

これらの制約を超えるNDATAセクション・データは切り捨てられます。

例

次の例は、BASIC_SECTION_GROUP型のセクション・グループnamegroupを定義します。さらに、firstnameというnamegroupのNDATAセクションを作成します。

begin
ctx_ddl.create_section_group('namegroup', 'BASIC_SECTION_GROUP');
ctx_ddl.add_ndata_section('namegroup', 'firstname', 'fname1');
end;

8.9 ADD_SDATA_COLUMN

column_nameで名前が指定されているFILTER BYまたはORDER BY列をsection_nameで名前が指定されているSDATAセクションにマップします。デフォルトでは、すべてのFILTER BY列がSDATAとしてマップされます。

構文

構文は、次のとおりです。

CTX_DDL.ADD_SDATA_COLUMN(
group_name         IN VARCHAR2,
section_name       IN VARCHAR2,
column_name        IN VARCHAR2,
);

group_name

セクションを含むグループの名前。

section_name

SDATAセクションの名前。

column_name

SDATAセクションに追加するFILTER BY列の名前。

注意

- FILTER BY列のセクションへのマッピングはオプションです。FILTER BY列にセクション・マッピングが存在しない場合、その列はSDATAセクションにマップされ、セクション名はFILTER BY列の名前になります。

- コンポジット・ドメイン索引のCREATE INDEX時にセクション・グループを指定しない場合は、デフォルト・セクション・グループ設定が使用され、FILTER BYおよびORDER BYの各列に対してSDATAセクションが作成されます。

注意:

セクション名では特定の特殊文字が使用できず、大/小文字が区別されないため、列名で大/小文字が区別されているかまたは特殊文字が使用されている場合は、エラーが発生します。この問題を回避するには、索引を作成する前に、列をMDATAまたはSDATAセクションにマップする必要があります。この章の「CTX_DDL.ADD_MDATA_COLUMN」または「CTX_DDL.ADD_SDATA_COLUMN」を参照してください。

- MDATAにマップされている列がORDER BY列句でも使用されている場合は、エラーが発生します。

- 列セクション名は、セクション・グループ内で一意です。つまり、FOOというMDATA列セクションがすでにある場合、MDATA列セクション名にFOOを指定することはできません。また、FOOというSDATA列セクションがすでにある場合、フィールド・セクション名にFOOを使用することはできません。このルールは、列セクションの作成方法が暗黙的(FILTER BYまたはORDER BY句のCREATE INDEXで作成)か、明示的( CTX_DDL.ADD_SDATA_COLUMNで作成)かに関係なく適用されます。

- 1つのFILTER BY列にマップできるのは1つのセクション名のみで、その逆もまた同様です。たとえば、1つのセクションを複数の列にマップしたり、1つの列を複数のセクションにマップすることはできません。

- 列セクションは、NULLのセクション・グループも含めて、あらゆるタイプのセクション・グループに追加できます。

- SDATAセクションおよび列の最大数は99です。

関連項目

"SDATA"

"ADD_SDATA_SECTION"

"UPDATE_SDATA"

関連項目:

『Oracle Textアプリケーション開発者ガイド』の第8章「Oracle Textでのドキュメント・セクションの検索」

8.10 ADD_SDATA_SECTION

SDATAセクションをセクション・グループに追加します。デフォルトでは、すべてのFILTER BY列がSDATAとしてマップされます。

構文

構文は、次のとおりです。

CTX_DDL.ADD_SDATA_SECTION(
group_name         IN VARCHAR2,
section_name       IN VARCHAR2,
tag                IN VARCHAR2,
datatype           IN VARCHAR2 default NULL,
);

group_name

セクションを含むグループの名前。

section_name

SDATAセクションの名前。

tag

SDATAセクションに追加するタグの名前。

datatype

格納されるデータの形式を指定し、後でSDATA演算子で使用する比較のセマンティクスを指定します。デフォルトはVARCHAR2ですが、指定する場合は次のいずれかの値にする必要があります。

- VARCHAR2

- CHAR

- RAW

- NUMBER

- DATE

VARCHAR2データ型は、最大249バイトの文字データをデータベース・キャラクタ・セットで格納します。この制限を超えると、ドキュメント単位での索引付けエラーになります。SDATAセクション値の前後の空白は、抽出時にセクショナによって常に切り捨てられます。この処理方法は、SDATA列の場合とは異なります。列の値が切り捨てられることはありません。どのデータ型のSDATAの値についても、レクサー処理は実行されません。

CHARデータ型は、最大249バイトの文字データをデータベース・キャラクタ・セットで格納します。この制限を超えると、ドキュメント単位での索引付けエラーになります。SDATAセクション値の前後の空白は、抽出時にセクショナによって常に切り捨てられます。この処理方法は、SDATA列の場合とは異なります。列の値が切り捨てられることはありません。どのデータ型のSDATAの値についても、レクサー処理は実行されません。SQLとの一貫性を確保するために、CHARデータ型のSDATA値の比較では空白が埋められて比較されます。

RAWデータ型は、最大249バイトのバイナリ・データを格納します。この制限を超えると、ドキュメント単位での索引付けエラーになります。値は、16進文字列表現から変換されます。つまり、65の値を格納するには、ドキュメントに<TAG>65</TAG>や<TAG>A</TAG>ではなく、<TAG>40</TAG>と記載されている必要があります。

DATEデータ型の値は、YYYY-MM-DDまたはYYYY-MM-DD HH24:MI:SSの書式に従う必要があります。つまり、2006年11月24日午後10時32分36秒のDATE値を格納するには、ドキュメントに<TAG>2006-11-24 22:32:36</TAG>と記載されている必要があります。

制限事項

- 索引に作成できるSDATAセクションの最大数は99です。つまり、FILTER BYおよびORDER BYで暗黙的に作成され、CTX_DDL.ADD_SDATA_SECTION() APIで明示的に作成される索引のSDATAセクションの合計は99です。

- SDATAは単独で出現します。SDATAタグの複数インスタンスが単一のドキュメントに出現する場合は、後のインスタンスが前のインスタンスで設定された値よりも優先されます。これは、最後に出現するSDATAタグが有効になることを意味します。

- 指定のドキュメントにSDATAタグがない場合は、NULLのSDATA値として処理されます。

- 空のSDATAタグはNULL値として処理されます。

- SDATAセクションはネストできません。内部でネストされたセクションは無視されます。

- SDATAセクションおよび列の最大数は99です。

関連項目

"SDATA"

"ADD_SDATA_COLUMN"

"UPDATE_SDATA"

関連項目:

『Oracle Textアプリケーション開発者ガイド』の第8章「Oracle Textでのドキュメント・セクションの検索」

8.11 ADD_SEC_GRP_ATTR_VAL

既存のセクション・グループ属性の値のリストに、セクション・グループ属性値を追加します。

構文

CTX_DDL.ADD_SEC_GRP_ATTR_VAL(
group_name      IN VARCHAR2,
attribute_name  IN VARCHAR2,
attribute_value IN VARCHAR2
);

group_name

セクション・グループ名を指定します。

attribute_name

セクション・グループ属性の名前を指定します。

attribute_value

セクション・グループ属性値を指定します。

8.12 ADD_SPECIAL_SECTION

特殊セクション(SENTENCEまたはPARAGRAPH)をセクション・グループに追加します。これによって、WITHIN演算子を使用して、ドキュメントの文または段落内を検索できるようになります。

ドキュメントの特殊セクションは、ゾーン・セクションおよびフィールド・セクションとして明示的にタグ付けされていないセクションです。索引が作成されると、特殊セクションの開始および終了が検出されます。Oracle Textでは、段落および文の2つのセクションparagraphおよびsentenceをサポートします。

文および段落の境界は、レクサーが判断します。たとえば、レクサーはSENTENCEセクションまたはPARAGRAPHセクションの境界を次のように認識します。

表8-1 PARAGRAPHセクションとSENTENCEセクションの境界

特殊セクション

境界

SENTENCE

WORD/PUNCT/WHITESPACE

SENTENCE

WORD/PUNCT/NEWLINE

PARAGRAPH

WORD/PUNCT/NEWLINE/WHITESPACE(インデント・スタイルの段落)

PARAGRAPH

WORD/PUNCT/NEWLINE/NEWLINE(ブロック・スタイルの段落)

punctuation、whitespaceおよびnewlineの各文字は、レクサーの設定によって判断されます。これらの設定は変更できます。

レクサーが境界を認識できない場合、SENTENCEセクションまたはPARAGRAPHセクションはいずれも索引付けされません。

構文

CTX_DDL.ADD_SPECIAL_SECTION(
group_name    IN VARCHAR2,
section_name  IN VARCHAR2
);

group_name

セクション・グループの名前を指定します。

section_name

SENTENCEまたはPARAGRAPHを指定します。

例

次の例は、HTMLドキュメントの文内での検索を可能にします。

begin
ctx_ddl.create_section_group('htmgroup', 'HTML_SECTION_GROUP');
ctx_ddl.add_special_section('htmgroup', 'SENTENCE');
end;

文検索の他にゾーン検索を可能にするには、ゾーン・セクションをグループに追加します。次の例では、ゾーン・セクションHeadlineをセクション・グループhtmgroupに追加します。

begin
ctx_ddl.create_section_group('htmgroup', 'HTML_SECTION_GROUP');
ctx_ddl.add_special_section('htmgroup', 'SENTENCE');
ctx_ddl.add_zone_section('htmgroup', 'Headline', 'H1');
end;

ドキュメント内での文検索または段落検索のみが必要で、ゾーン・セクションまたはフィールド・セクションを定義する必要がない場合は、次のようにNULL_SECTION_GROUPを使用します。

begin
ctx_ddl.create_section_group('nullgroup', 'NULL_SECTION_GROUP');
ctx_ddl.add_special_section('nullgroup', 'SENTENCE');
end;

関連項目

"WITHIN"

"セクション・グループ型"

"CREATE_SECTION_GROUP "

"ADD_ZONE_SECTION "

"ADD_FIELD_SECTION"

"REMOVE_SECTION "

"DROP_SECTION_GROUP "

8.13 ADD_STOPCLASS

ストップクラスをストップリストに追加します。ストップクラスは、索引付けされていないトークンのクラスです。ストップリストは、ストップパターンを使用した250以上のストップクラスを指定できません。これは、NUMBERSストップクラスを含みません。ストップ・パターンを使用して索引付けする場合、索引付けのパフォーマンスを最適化するために、メモリー設定を少なくとも500MBから1GBにすることをお薦めします。

構文

CTX_DDL.ADD_STOPCLASS(
stoplist_name         IN   VARCHAR2,
stopclass             IN   VARCHAR2,
stoppattern           IN   VARCHAR2 default NULL
);

stoplist_name

ストップリストの名前を指定します。

ストップクラス

stoplist_nameに追加するストップクラスを指定します。NUMBERSストップクラスのいずれかです。それ以外の場合は、パターン・ストップクラスとみなされます。

NUMBERSには、数値パターンに従ったトークン、つまり小数点、numgroupおよびnumjoinのみが含まれます。したがって、123ABCもA123も数値ではありません。これらはMIXEDとしてラベル付けされます。$123は数値ではありません(英数字以外はデフォルトで空白になるため、このトークンはテキスト索引としては一般的ではありません)。米国では、123.45は数値ですが、123.456.789は数値ではありません。numgroupに'.'を使用する欧州では、これとは逆に123.456.789は数値ですが、123.45は数値ではありません。

ストップクラスparameterにNUMBERSを指定しない場合は、パターン・ストップクラスとして扱われ、ストップクラスparameterには任意の名前を指定できます。stopclassをパターン・クラスとして指定する場合は、stoppatternパラメータにパターンを指定する必要があります。パターンには任意の文字列パターンを使用でき、これには数字や日付も含まれます。

ストップリストに追加できるストップワード、ストップテーマおよびストップクラスの数の最大値は4095です。

stoppattern

ストップリストに追加するストップ・パターンを指定します。ストップクラスをパターン・クラスとして指定する場合は、ストップ・パターンを指定する必要があります。ストップ・パターンの指定には、Oracle正規表現を使用できます。

ストップリストに複数のストップ・パターンを追加するには、ADD_STOPCLASSプロシージャを複数回コールします。ストップクラスに複数のストップ・パターンを追加するには、異なるストップクラス名を指定する必要があります。

デフォルトでは、ストップ・パターンの大/小文字は区別されませんが、MIXED_CASEレクサー・プリファレンスを有効にすると、大/小文字を区別して動作するようになります。ストップ・パターンには、最大で512まで指定できます。ストップ・パターンを使用して索引付けする場合、索引付けのパフォーマンスを最適化するために、メモリー設定を少なくとも500MBから1GBにすることをお薦めします。

関連項目:

Oracle正規表現の構文の詳細は、『Oracle Database開発ガイド』を参照してください

例

次の例は、ストップクラスNUMBERSをストップリストmystoplistに追加します。

begin
ctx_ddl.add_stopclass('mystoplist', 'NUMBERS');
end;

次の例は、SSNのパターン・ストップクラスをストップリストmystoplistに追加します。

begin
ctx_ddl.add_stopclass('mystoplist', 'SSN', '\d{3}-\d{2}-\d{4}');
end;

この例で、ストップクラスSSNは、<3 digit number>-<2 digit number>-<4 digit number>というフォームのすべてのトークン、たとえば234-11-8902に一致します。

関連項目

"CREATE_STOPLIST "

"REMOVE_STOPCLASS "

"DROP_STOPLIST "

8.14 ADD_STOP_SECTION

停止セクションを自動セクション・グループに追加します。停止セクションを追加すると、自動セクションの索引付け操作で、XMLドキュメント内の指定されたセクションが無視されます。

注意:

停止セクションを追加すると、索引内にセクション情報が作成されません。ただし、停止セクション内のテキストは常に検索可能です。

停止セクションを追加することは、ドキュメントに下位レベルの情報タグが多数含まれる場合に有効です。また、停止セクションを追加すると、自動セクション・グループを使用した索引付けのパフォーマンスが向上します。

追加できる停止セクションの数は無制限です。

停止セクションにはセクション名がありません。したがって、セクション・ビューには記録されません。

構文

CTX_DDL.ADD_STOP_SECTION(
section_group IN VARCHAR2,
tag           IN VARCHAR2
);

section_group

自動セクション・グループの名前を指定します。自動セクション・グループを指定しない場合、このプロシージャはエラーを戻します。

tag

索引付け時に無視するタグを指定します。このパラメータでは、大/小文字が区別されます。また、このように停止タグを定義すると、タグの属性セクションがある場合は、これも停止します。

タグは、(doctype)tagという形式のドキュメント・タイプで修飾します。たとえば、<fluff>タグをmydocドキュメント・タイプ内のみの停止セクションにする場合は、(mydoc)fluffをタグに指定します。

例

停止セクションの定義

次の例は、タグ<fluff>で識別された停止セクションを自動セクション・グループmyautoに追加します。

begin
ctx_ddl.add_stop_section('myauto', 'fluff');
end;

また、この例は、<fluff>内に含まれるすべての属性セクションも停止します。たとえば、次のコードを持つドキュメントがあるとします。

<fluff type="computer">

前述の例は、属性セクションfluff@typeも停止します。

ドキュメント・タイプを区別する停止セクション

次の例は、mydocのルート要素を持つドキュメント内のみで、タグ<fluff>に対する停止セクションを作成します。

begin
ctx_ddl.add_stop_section('myauto', '(mydoc)fluff');
end;

関連項目

"ALTER INDEX "

"CREATE_SECTION_GROUP "

8.15 ADD_STOPTHEME

単一のストップテーマをストップリストに追加します。ストップテーマは、索引付けされていないテーマです。

英語では、ABOUT演算子を使用して索引テーマを問い合せます。

構文

CTX_DDL.ADD_STOPTHEME(
stoplist_name     IN   VARCHAR2,
stoptheme         IN   VARCHAR2
);

stoplist_name

ストップリストの名前を指定します。

stoptheme

stoplist_nameに追加するストップテーマを指定します。システムではナレッジ・ベースを使用して、入力されたstopthemeを正規化します。正規化されたテーマが複数の場合、ストップテーマは処理されません。したがって、単一のストップテーマを送信することをお薦めします。

ストップリストに追加できるストップワード、ストップテーマおよびストップクラスの数の最大値は4095です。

例

次の例では、ストップテーマbankingをストップリストmystopに追加します。

begin
ctx_ddl.add_stoptheme('mystop', 'banking');
end;

関連項目

"CREATE_STOPLIST "

"REMOVE_STOPTHEME "

"DROP_STOPLIST "

"ABOUT"

8.16 ADD_STOPWORD

単一のストップワードをストップリストに追加します。

ストップワードのリストを作成するには、ワードごとにこのプロシージャを1回コールする必要があります。

構文

CTX_DDL.ADD_STOPWORD(

stoplist_name       IN VARCHAR2,
stopword            IN VARCHAR2,
language            IN VARCHAR2 default NULL,
language_dependent  IN BOOLEAN default TRUE

);

stoplist_name

ストップリストの名前を指定します。

stopword

追加するストップワードを指定します。

言語固有のストップワードは、その言語固有の他のストップワードとの間で一意であることが必要です。たとえば、ドイツ語のdieと英語のdieを同じストップリスト内に含めることは有効です。

ストップリストに追加できるストップワード、ストップテーマおよびストップクラスの数の最大値は4095です。

language

stoplist_nameで指定したストップリストがMULTI_STOPLIST型の場合は、stopwordの言語を指定します。Oracle Textがサポートしている言語のグローバリゼーション・サポート名または略称を指定する必要があります。

ストップワードを複数の言語でアクティブにするには、このパラメータにALLを指定します。たとえば、任意の言語で停止が必要な英語のフラグメントを含む国際文書の場合は、ALLストップワードを定義すると便利です。

ALLストップワードは、すべての言語でアクティブです。マルチレクサーを使用すると、そのストップワードの言語固有のレクサー処理が発生します。この状態は、そのストップワードを複数の特定言語に繰り返し追加した場合と同じです。

それ以外の場合は、NULLを指定します。

language_dependent

ユーザー定義の任意の文字列をlanguageパラメータに指定できることを指定するには、このパラメータをFALSEに設定します。

例

単一言語のストップリスト

次の例では、ストップワードbecause、notwithstanding、nonetheless および therefore をストップリストmystopに追加します。

begin

ctx_ddl.add_stopword('mystop', 'because');
ctx_ddl.add_stopword('mystop', 'notwithstanding');
ctx_ddl.add_stopword('mystop', 'nonetheless');
ctx_ddl.add_stopword('mystop', 'therefore');

end;

マルチ言語のストップリスト

次の例では、ドイツ語のワードdieをマルチ言語のストップリストに追加します。

begin

ctx_ddl.add_stopword('mystop', 'Die','german');

end;

注意:

ストップワードは、ALTER INDEXを使用して索引を作成した後に追加します。

ALLストップワードの追加

次の例では、ワードtheをALLストップワードとして、マルチ言語のストップリストgloballistに追加します。

begin

ctx_ddl.add_stopword('globallist','the','ALL');

end;

関連項目

"CREATE_STOPLIST "

"REMOVE_STOPWORD "

"DROP_STOPLIST "

"ALTER INDEX "

Oracle Textで提供されるストップリスト

8.17 ADD_SUB_LEXER

サブレクサーをマルチレクサー・プリファレンスに追加します。サブレクサーは、マルチレクサー(マルチ言語)・プリファレンスで言語を識別します。複数の言語を索引付けする必要がある場合は、マルチレクサー・プリファレンスを使用します。

構文

CTX_DDL.ADD_SUB_LEXER(
lexer_name          IN VARCHAR2,
language            IN VARCHAR2,
sub_lexer           IN VARCHAR2,
alt_value           IN VARCHAR2 default NULL,
language_dependent  IN BOOLEAN default TRUE
);

lexer_name

マルチレクサー・プリファレンスの名前を指定します。

language

サブレクサーのグローバリゼーション・サポート言語の名前または略称を指定します。たとえば、日本語に対してはJAPANESEまたはJAを指定します。

sub_lexerで指定したサブレクサーは、言語列が、languageの略称グローバリゼーション・サポート名と同等の値(大/小文字を区別しない)を持つ場合に使用されます。

元表内の言語列の値がNULL、無効またはサブレクサーにマップされていない場合は、DEFAULTを指定し、デフォルトのサブレクサーを割り当てます。DEFAULTレクサーも、ストップワードの解析に使用されます。

指定したlanguageに対するサブレクサー定義がすでに存在する場合は、このコールで置換されます。

sub_lexer

この言語に対して使用するサブレクサーの名前を指定します。

alt_value

オプションで、languageの代替値を指定します。

languageに対してDEFAULTを指定した場合、alt_valueは指定できません。

alt_valueは30バイトに制限されており、グローバリゼーション・サポート言語の名前、略称またはDEFAULTは指定できません。

language_dependent

ユーザー定義の任意の文字列をlanguageパラメータに指定できることを指定するには、このパラメータをFALSEに設定します。FALSEに設定されている場合、検索式に適用されるレクサー処理は、問合せ言語に依存しません。BASIC_SECTION_GROUPが索引に使用されている場合、FALSEオプションのみ使用できます。

例

この例は、マルチ言語テキスト表の作成方法、および表を索引付けするためのマルチレクサーの設定方法を示しています。

次のように、主キー、テキスト列および言語列を持つマルチ言語表を作成します。

create table globaldoc (
doc_id number primary key,
lang varchar2(3),
text clob
);

保持するドキュメントのほとんどが英語で、ドイツ語または日本語のドキュメントが少しある表を考えてみます。3つの言語を処理するには、次のように英語、ドイツ語および日本語に対して1つずつ、3つのサブレクサーを作成する必要があります。

ctx_ddl.create_preference('english_lexer','basic_lexer');
ctx_ddl.set_attribute('english_lexer','index_themes','yes');
ctx_ddl.set_attribtue('english_lexer','theme_language','english');

ctx_ddl.create_preference('german_lexer','basic_lexer');
ctx_ddl.set_attribute('german_lexer','composite','german');
ctx_ddl.set_attribute('german_lexer','mixed_case','yes');
ctx_ddl.set_attribute('german_lexer','alternate_spelling','german');

ctx_ddl.create_preference('japanese_lexer','japanese_vgram_lexer');

マルチレクサー・プリファレンスを作成します。

ctx_ddl.create_preference('global_lexer', 'multi_lexer');

格納されているドキュメントのほとんどが英語であるため、英語のレクサーをデフォルトにします。

ctx_ddl.add_sub_lexer('global_lexer','default','english_lexer');

ドイツ語および日本語のレクサーをそれぞれの言語に追加します。また、言語列がISO 639-2で表現されている場合は、これらを代替値として追加します。

ctx_ddl.add_sub_lexer('global_lexer','german','german_lexer','ger');
ctx_ddl.add_sub_lexer('global_lexer','japanese','japanese_lexer','jpn');

パラメータ文字列に、次のようにマルチレクサー・プリファレンスおよび言語列を指定して索引globalxを作成します。

create index globalx on globaldoc(text) indextype is ctxsys.context
parameters ('lexer global_lexer language column lang');

languageパラメータには、次のようにユーザー定義の文字列を指定できます。

ctx_ddl.add_sub_lexer('global_lexer','mysymbol','german_lexer','my_alt_symbol', language_dependent => FALSE);

制限事項

CTX_DDL.ADD_SUB_LEXERの使用には、次の制限が適用されます。

- 起動ユーザーは、マルチレクサーまたはCTXSYSの所有者である必要があります。

- lexer_nameパラメータには、マルチレクサー・レクサーであるプリファレンスが指定されている必要があります。

- マルチレクサーを索引で使用できるようにするには、デフォルトのレクサーが定義されている必要があります。

- サブレクサー・プリファレンスの所有者は、マルチレクサー・プリファレンスの所有者と同じである必要があります。

- サブレクサー・プリファレンスは、マルチレクサー・レクサーにはできません。

- サブレクサー・プリファレンスは、マルチレクサー・プリファレンスで使用されている間は削除できません。

- CTX_DDL.ADD_SUB_LEXERは参照のみを記録します。サブレクサーの値は索引作成時に、索引値の記憶域にコピーされます。

8.18 ADD_ZONE_SECTION

ゾーン・セクションを作成し、そのセクションを既存のセクション・グループに追加します。これによって、WITHIN演算子を使用してゾーン・セクション内を検索できます。

ゾーン・セクションは、開始および終了タグで区切られたセクションです。たとえば、HTMLの<B>および</B>タグは、ボールド体で表示されるワードの範囲をマークします。

ゾーン・セクションは、ゾーン・セクション内で互いにネストしたりオーバーラップすることが可能です。また、1つのドキュメント内で複数出現させることが可能です。

構文

CTX_DDL.ADD_ZONE_SECTION(
group_name     IN    VARCHAR2,
section_name   IN    VARCHAR2,
tag            IN    VARCHAR2
);

group_name

section_nameを追加するセクション・グループの名前を指定します。

section_name

group_nameに追加するセクションの名前を指定します。この名前は、WITHIN問合せでセクションを識別する場合に使用します。英数字以外の文字(_など)の多くは特殊であり、問合せでエスケープされるため、これらの文字を含む名前は使用しないでください。セクション名の大/小文字は区別されません。

同じグループ内では、ゾーン・セクション名とフィールド・セクション名は同じ名前にできません。語句PARAGRAPHおよびSENTENCEは、特殊セクション用に予約されています。

セクション名はタグ内で一意である必要はありません。詳細を検索しやすいように、同じセクション名を複数のタグに割り当てることができます。

tag

セクションの開始をマークするパターンを指定します。たとえば、<H1>がHTMLタグの場合は、tagにH1を指定します。指定する開始タグは、セクション・グループ内で一意であることが必要です。

Oracle Textは、セクション・グループ作成時に指定したgroup_typeパラメータから終了タグを認識します。

group_nameがHTML_SECTION_GROUPの場合は、METAタグのNAME/CONTENT属性の組に対してゾーン・セクションを作成できます。それには、tagをmeta@namevalueとして指定します。この場合、namevalueはNAME属性の値で、対応するCONTENT属性がセクションとして索引付けられます。次の例を参照してください。

group_nameがXML_SECTION_GROUPの場合は、(doctype)tagという形式でドキュメント・タイプ(ルート要素)を使用し、必要に応じてtagを修飾できます。その場合は、XMLドキュメント・タイプの宣言でのsection_nameが区別されます。次の例を参照してください。

例

HTMLのセクションの作成

次の例は、HTML_SECTION_GROUP型のhtmgroupというセクション・グループを定義します。その後、<H1>タグで識別されたheadline というhtmgroupにゾーン・セクションを作成します。

begin
ctx_ddl.create_section_group('htmgroup', 'HTML_SECTION_GROUP');
ctx_ddl.add_zone_section('htmgroup', 'heading', 'H1');
end;

セクション・グループhtmgroupで索引付けした後は、次のように問合せを発行してheadingセクション内を問い合せます。

'Oracle WITHIN heading'

<META NAME>タグに対するセクションの作成

HTML_SECTION_GROUPを使用すると、HTML METAタグにゾーン・セクションを作成できます。

次のように、METAタグを持つHTMLドキュメントがあるとします。

<META NAME="author" CONTENT="ken">

METAタグに対してすべてのCONTENT属性を索引付けるゾーン・セクションを作成します。この場合、METAタグのNAME値はauthorです。

begin
ctx_ddl.create_section_group('htmgroup', 'HTML_SECTION_GROUP');
ctx_ddl.add_zone_section('htmgroup', 'author', 'meta@author');
end

セクション・グループhtmgroupで索引付けした後は、次のようにドキュメントを問い合せます。

'ken WITHIN author'

ドキュメント・タイプを区別するセクションの作成(XMLドキュメントのみ)

異なるドキュメント・タイプ(DTD)に対して宣言された<book>タグを持つXMLドキュメント・セットがあるとします。各ドキュメント・タイプに対して個別のbookセクションを作成する必要がある場合を考えてみます。

myDTDnameがXMLドキュメント・タイプとして、次のように宣言されているとします。

<!DOCTYPE myDTDname>
<myDTDname>
...

(注意: DOCTYPEはトップレベルのタグに一致する必要があります。)

myDTDnameの中で、要素<book>が宣言されています。このタグに対して、タグのドキュメント・タイプを区別するmybooksecという名前のセクションを次のように作成します。

begin
ctx_ddl.create_section_group('myxmlgroup', 'XML_SECTION_GROUP');
ctx_ddl.add_zone_section('myxmlgroup', 'mybooksec', '(myDTDname)book');
end;

注意

繰返しセクション

ゾーン・セクションは繰返しが可能です。出現はそれぞれ別セクションとして処理されます。たとえば、<H1>がheadingセクションを示す場合は、次のように同じドキュメント内で繰り返すことができます。

<H1> The Brown Fox </H1>

<H1> The Gray Wolf </H1>

これらのゾーン・セクションがHeadingという名前の場合、問合せBrown WITHIN Headingはこのドキュメントを戻します。ただし、(Brown and Gray) WITHIN Headingという問合せはできません。

セクションのオーバーラップ

ゾーン・セクションは互いにオーバーラップできます。たとえば、<B>および<I>が2つの異なるゾーン・セクションを表す場合、これらはドキュメント内で次のようにオーバーラップできます。

plain <B> bold <I> bold and italic </B> only italic </I>  plain

ネストされたセクション

ゾーン・セクションは(それ自体も含む)、次のようにネストできます。

<TD> <TABLE><TD>nested cell</TD></TABLE></TD>

WITHIN演算子を使用して、セクション内のセクションのテキストを検索するための問合せを記述できます。たとえば、BOOK1、BOOK2およびAUTHORのゾーン・セクションが、ドキュメントdoc1およびdoc2で次のように存在するとします。

doc1:

<book1> <author>Scott Tiger</author> This is a cool book to read.</book1>

doc2:

<book2> <author>Scott Tiger</author> This is a great book to read.</book2>

次のようにネストされた問合せを実行します。

'(Scott within author) within book1'

この問合せはdoc1のみを戻します。

関連項目

"WITHIN"

"セクション・グループ型"

"CREATE_SECTION_GROUP "

"ADD_FIELD_SECTION"

"ADD_SPECIAL_SECTION "

"REMOVE_SECTION "

"DROP_SECTION_GROUP "

8.19 COPY_POLICY

既存のポリシーまたは索引から新規ポリシーを作成します。

構文

ctx_ddl.copy_policy(
source_policy       VARCHAR2,
policy_name         VARCHAR2    );

source_policy

コピーするポリシーまたは索引の名前。

policy_name

コピーした新規ポリシーの名前。

プリファレンス値はsource_policyからコピーされます。コピー元のポリシーまたは索引と新規ポリシーのどちらも、同じデータベース・ユーザーが所有している必要があります。

8.20 CREATE_INDEX_SET

CTXCAT索引タイプの索引セットを作成します。CTXCAT索引を作成するときは、CREATE INDEXのPARAMETERS句でこの索引セット名を指定します。

構文

CTX_DDL.CREATE_INDEX_SET(set_name in varchar2);

set_name

索引セットの名前を指定します。CTXCAT索引を作成するときは、CREATE INDEXのPARAMETERS句でこの索引セット名を指定します。

8.21 CREATE_POLICY

CTX_DOC.POLICY_*プロシージャおよびORA:CONTAINSファンクションで使用するポリシーを作成します。ORA:CONTAINSは、existsNode()を使用したXPATH問合せ式内で使用するファンクションです。

関連項目:

『Oracle XML DB開発者ガイド』

構文

CTX_DDL.CREATE_POLICY(
policy_name     IN VARCHAR2,
filter          IN VARCHAR2 DEFAULT NULL,
section_group   IN VARCHAR2 DEFAULT NULL,
lexer           IN VARCHAR2 DEFAULT NULL,
stoplist        IN VARCHAR2 DEFAULT NULL,
wordlist        IN VARCHAR2 DEFAULT NULL);

policy_name

新しいポリシーの名前を指定します。ポリシー名とテキスト索引は同じ名前空間を共有します。

filter

使用するフィルタ・プリファレンスを指定します。

section_group

使用するセクション・グループを指定します。CONTEXT索引でサポートされている任意のセクション・グループを指定できます。

lexer

使用するレクサー・プリファレンスを指定します。INDEX_THEMES属性を使用禁止にする必要があります。

stoplist

使用するストップリストを指定します。

wordlist

使用するワードリストを指定します。

例

mylexという名前のmylexレクサー・プリファレンスを作成します。

begin
ctx_ddl.create_preference('mylex', 'BASIC_LEXER');
ctx_ddl.set_attribute('mylex', 'printjoins', '_-');
ctx_ddl.set_attribute ( 'mylex', 'index_themes', 'NO');
ctx_ddl.set_attribute ( 'mylex', 'index_text', 'YES');
end;

mystopという名前のストップリスト・プリファレンスを作成します。

begin
ctx_ddl.create_stoplist('mystop', 'BASIC_STOPLIST');
ctx_ddl.add_stopword('mystop', 'because');
ctx_ddl.add_stopword('mystop', 'nonetheless');
ctx_ddl.add_stopword('mystop', 'therefore');
end;

'mywordlist'という名前のワードリスト・プリファレンスを作成します。

begin
ctx_ddl.create_preference('mywordlist', 'BASIC_WORDLIST');
ctx_ddl.set_attribute('mywordlist','FUZZY_MATCH','ENGLISH');
ctx_ddl.set_attribute('mywordlist','FUZZY_SCORE','0');
ctx_ddl.set_attribute('mywordlist','FUZZY_NUMRESULTS','5000');
ctx_ddl.set_attribute('mywordlist','SUBSTRING_INDEX','TRUE');
ctx_ddl.set_attribute('mywordlist','STEMMER','ENGLISH');
end;

exec ctx_ddl.create_policy('my_policy', NULL, NULL, 'mylex', 'mystop',
'mywordlist');

または

exec ctx_ddl.create_policy(policy_name => 'my_policy',
lexer => 'mylex',
stoplist => 'mystop',
wordlist => 'mywordlist');

次に、独自に定義したポリシーを使用して、次のexistsNode()問合せを入力します。

select id from xmltab
where existsNode(doc, '/book/chapter[ ora:contains(summary,"dog or cat",
"my_policy") >0 ]', 'xmlns:ora="http://xmlns.example.com/xdb" ')=1;

ポリシーを更新するには、次のようにします。

exec ctx_ddl.update_policy(policy_name => 'my_policy', lexer => 'my_new_lex');

ポリシーを削除するには、次のようにします。

exec ctx_ddl.drop_policy(policy_name => 'my_policy');

8.22 CREATE_PREFERENCE

テキスト・データ・ディクショナリにプリファレンスを作成します。プリファレンスは、CREATE INDEXまたはALTER INDEX のパラメータ文字列で指定します。

注意:

CTX_DDL.CREATE_PREFERENCEでは、ALTER SESSION SET current_schemaによって設定された現行のスキーマは考慮されません。したがって、別のユーザーが所有するプリファレンスを作成または削除する必要がある場合は、その状態を明示的に記述する必要があります。そのためにはCREATE ANY TABLEシステム権限が必要です。

My Oracle Support (https://support.oracle.com)のNote 249991.1「Oracle Text Overview of New Features in Release 10g」を参照してください。この資料では、Oracle Databaseリリース10g以降に関連する技術の概要を説明しています。

構文

CTX_DDL.CREATE_PREFERENCE(preference_name  in varchar2,
object_name      in varchar2);

preference_name

作成するプリファレンスの名前を指定します。

object_name

プリファレンス型の名前を指定します。

関連項目:

プリファレンス型および関連する属性の完全なリストは、「Oracle Text索引付けの要素」を参照してください。

例

テキストのみの索引の作成

次の例では、テキストのみの索引を指定するレクサー・プリファレンスを作成します。そのためには、CTX_DDL.CREATE_PREFERENCEを使用してmy_lexerというBASIC_LEXERプリファレンスを作成します。その後、CTX_DDL.SET_ATTRIBUTE を2回コールします。最初にINDEX_TEXT属性に対してYESを指定し、次にINDEX_THEMES属性に対してNOを指定します。

begin
ctx_ddl.create_preference('my_lexer', 'BASIC_LEXER');
ctx_ddl.set_attribute('my_lexer', 'INDEX_TEXT', 'YES');
ctx_ddl.set_attribute('my_lexer', 'INDEX_THEMES', 'NO');
end;

ファイル・データ記憶域の指定

次の例では、索引付けするファイルがオペレーティング・システムに格納されていることをシステムに知らせるmyprefというデータ記憶域プリファレンスを作成します。その後、CTX_DDL.SET_ATTRIBUTE を使用して、PATH属性をディレクトリ/docsに設定します。

begin
ctx_ddl.create_preference('mypref', 'FILE_DATASTORE');
ctx_ddl.set_attribute('mypref', 'PATH', '/docs');
end;

関連項目:

データ記憶域の詳細は、「データストア型」 を参照してください"

マスター表/ディテール表の関係の作成

CTX_DDL.CREATE_PREFERENCE を使用して、DETAIL_DATASTOREを持つプリファレンスを作成します。CTX_DDL.SET_ATTRIBUTE を使用して、このプリファレンスに対して属性を設定します。次に、これを行う方法を示します。

begin
ctx_ddl.create_preference('my_detail_pref', 'DETAIL_DATASTORE');
ctx_ddl.set_attribute('my_detail_pref', 'binary', 'true');
ctx_ddl.set_attribute('my_detail_pref', 'detail_table', 'my_detail');
ctx_ddl.set_attribute('my_detail_pref', 'detail_key', 'article_id');
ctx_ddl.set_attribute('my_detail_pref', 'detail_lineno', 'seq');
ctx_ddl.set_attribute('my_detail_pref', 'detail_text', 'text');
end;

関連項目:

マスター表/ディテール表の詳細は、「DETAIL_DATASTORE」 を参照してください"

記憶域属性の指定

次の例では、索引表が1KBの初期エクステントでfoo表領域に作成されるように指定します。

begin
ctx_ddl.create_preference('mystore', 'BASIC_STORAGE');
ctx_ddl.set_attribute('mystore', 'I_TABLE_CLAUSE',
'tablespace foo storage (initial 1K)');
ctx_ddl.set_attribute('mystore', 'K_TABLE_CLAUSE',
'tablespace foo storage (initial 1K)');
ctx_ddl.set_attribute('mystore', 'R_TABLE_CLAUSE',
'tablespace foo storage (initial 1K)');
ctx_ddl.set_attribute('mystore', 'S_TABLE_CLAUSE',
'tablespace foo storage (initial 1K)');
ctx_ddl.set_attribute('mystore', 'N_TABLE_CLAUSE',
'tablespace foo storage (initial 1K)');
ctx_ddl.set_attribute('mystore', 'I_INDEX_CLAUSE',
'tablespace foo storage (initial 1K)');
end;

注意:

SDATAがない索引の記憶域プリファレンスに対してS_TABLE_CLAUSEが指定されている場合、この指定による索引の影響はないため、索引は正しく作成されます。

関連項目:

記憶域型

属性のないプリファレンスの作成

属性のない型のプリファレンスを作成する場合は、次の例で示すように、フィルタをNULL_FILTERに設定するプリファレンスのみを作成する必要があります。

begin
ctx_ddl.create_preference('my_null_filter', 'NULL_FILTER');
end;

日本語のVGRAMレクサーへのBIGRAMモードの指定

次の例は、日本語の問合せにBIGRAMモードの操作を指定するVGRAMレクサー・プリファレンスを作成します。

begin
ctx_ddl.create_preference('jp_lexer','JAPANESE_VGRAM_LEXER');
ctx_ddl.set_attribute('jp_lexer','BIGRAM','TRUE');
end;

/* create the index */
create index jp_idx on jp_doc(text) indextype is ctxsys.context
parameters('lexer jp_lexer');

関連項目

"SET_ATTRIBUTE "

"DROP_PREFERENCE "

"CREATE INDEX"

"ALTER INDEX "

Oracle Text索引付けの要素

8.23 CREATE_SECTION_GROUP

テキスト列にセクションを定義するためのセクション・グループを作成します。

セクション・グループを作成する場合は、ADD_ZONE_SECTION 、ADD_FIELD_SECTION、ADD_MDATA_SECTIONまたはADD_SPECIAL_SECTION を使用して、そのセクション・グループにゾーン、フィールドまたは特殊セクションを追加できます。

CREATE_SECTION_GROUPとCTX_DDL.SET_SEC_GRP_ATTRを使用してxml_enableを設定し、Oracle XML検索索引を作成することもできます。

索引付けする場合は、CREATE INDEXまたはALTER INDEX のパラメータ文字列にセクション・グループを指定します。

索引付けした後は、WITHIN演算子を使用して、定義したセクション内を問い合せます。

構文

CTX_DDL.CREATE_SECTION_GROUP(
group_name     in    varchar2,
group_type     in    varchar2
);

group_name

作成するセクション・グループ名を[user.]section_group_nameのように指定します。このパラメータは、1人の所有者内で一意であることが必要です。

group_type

セクション・グループのタイプを指定します。group_typeパラメータは次のいずれかです。

セクション・グループ・プリファレンス

説明

NULL_SECTION_GROUP

どのセクションも定義しないか、またはSENTENCEかPARAGRAPHセクションのみを定義する場合は、このグループ・タイプを使用します。これはデフォルトです。

BASIC_SECTION_GROUP

このグループ・タイプを使用して、開始および終了タグが<A>および</A>という形式のセクションを定義します。

注意: このグループ・タイプでは、対になっていないカッコ、コメント・タグおよび属性などの入力はサポートされません。これらを入力するには、HTML_SECTION_GROUPを使用してください。

HTML_SECTION_GROUP

このグループ・タイプを使用して、HTMLドキュメントを索引付けし、HTMLドキュメントのセクションを定義します。

JSON_SECTION_GROUP

このグループを使用してJSON対応コンテキスト索引を作成します。JSON ENABLE属性はXML ENABLEで使用できません。セクション・グループはJSON ENABLEとしてのみマークされます。すでにXML ENABLEとしてマークされている場合、パスのセクション・グループはJSON ENABLEでは使用できず、その逆もできません。

XML_SECTION_GROUP

このグループ・タイプを使用して、XMLドキュメントを索引付けし、XMLドキュメントのセクションを定義します。

AUTO_SECTION_GROUP

このグループ・タイプを使用して、XMLドキュメントの開始タグ/終了タグに対して自動的にゾーン・セクションを作成します。XMLタグから導出されるセクション名は、XML内と同様に大/小文字が区別されます。

属性セクションは、属性を持つXMLタグに対して自動的に作成されます。属性セクションは、attribute@tagという形式でネーミングされます。

停止セクション、空のタグ、処理命令およびコメントは、索引付けされません。

自動セクション・グループには次の制限事項が適用されます。

- ゾーン、フィールドまたは特殊セクションは、自動セクション・グループに追加できません。

- 自動セクション化は、XMLドキュメント・タイプ(ルート要素)を索引付けしません。ただし、ドキュメント・タイプに停止セクションを定義することはできます。

- プリフィックスおよび名前空間を含む、索引付けされたタグの長さは、64バイト以下です。これより長いタグは索引付けされません。

PATH_SECTION_GROUP

このグループ・タイプを使用して、XMLドキュメントを索引付けします。このタイプは、AUTO_SECTION_GROUPと同じように動作します。

相違点は、このセクション・グループを使用すると、INPATHおよびHASPATH演算子でパス検索を実行できることです。タグまたは属性名の問合せでは、大/小文字が同様に区別されます。

NEWS_SECTION_GROUP

このグループ・タイプを使用して、RFC 1036に従ったニュース・グループ形式のドキュメントのセクションを定義します。

例

次のコマンドは、HTMLグループ・タイプを使用してhtmgroupというセクション・グループを作成します。

begin

ctx_ddl.create_section_group('htmgroup', 'HTML_SECTION_GROUP');

end;

次のコマンドは、AUTO_SECTION_GROUPグループ・タイプを使用してautoというセクション・グループを作成し、XMLドキュメントのタグを自動的に索引付けします。

begin

ctx_ddl.create_section_group('auto', 'AUTO_SECTION_GROUP');

end;

次の例では、Oracle XML検索索引を作成します。

exec CTX_DDL.CREATE_SECTION_GROUP('secgroup','PATH_SECTION_GROUP');
exec CTX_DDL.SET_SEC_GRP_ATTR('secgroup','xml_enable','t');
CREATE INDEX po_ctx_idx on T(X) indextype is ctxsys.context
parameters ('section group SECGROUP');

関連項目

"WITHIN"

"セクション・グループ型"

"ADD_ZONE_SECTION "

"ADD_FIELD_SECTION"

"ADD_MDATA_SECTION"

"ADD_SPECIAL_SECTION "

"REMOVE_SECTION "

"DROP_SECTION_GROUP "

8.24 CREATE_SHADOW_INDEX

指定した索引に対して索引メタデータ(またはポリシー)を作成します。索引がパーティション化されていない場合は、索引表も作成します。このプロシージャは、Oracle DatabaseのEnterprise Editionのみでサポートされています。

次の変更はサポートされていません。

- 非コンポジット・ドメイン索引からコンポジット・ドメイン索引の変換、またはコンポジット・ドメイン索引の列の変更

- 索引表がパーティション化されている索引($I、$P、$Kなど)の再構築

注意:

パーティション索引の場合は、最初にこのプロシージャをコールして、シャドウ索引メタデータを作成する必要があります。このプロシージャでは索引表は作成されません。問合せ、DML、同期化または最適化の各操作への影響はありません。

構文

CTX_DDL.CREATE_SHADOW_INDEX(
idx_name          IN VARCHAR2,
parameter_string  IN VARCHAR2 DEFAULT NULL,
parallel_degree   IN NUMBER DEFAULT 1
);

idx_name

有効なCONTEXT索引タイプの名前。

parameter_string

非パーティション索引の場合は、ALTER INDEXの文字列と同じです。パーティション索引の場合は、ALTER INDEX PARAMETERの文字列と同じです。

parallel_degree

予備。並列度を指定します。現在、並列度オプションはサポートされていません。

例

例8-1 グローバル索引の計画的な再作成(増分再構築)

この例では、RECREATE_INDEX_ONLINEの各段階を適切に制御しています。SYNC_INDEXには制限時間を指定できるため、営業時間外はSYNC_INDEXを制限して、索引を追加的に再作成できます。

/* create lexer and original index */
exec ctx_ddl.create_preference('us_lexer','basic_lexer');
create index idx on tbl(text) indextype is ctxsys.context
parameters('lexer us_lexer');

/* create a new lexer */
begin
ctx_ddl.create_preference('e_lexer','basic_lexer');
ctx_ddl.set_attribute('e_lexer','base_letter','yes');
ctx_ddl.create_preference('m_lexer','multi_lexer');
ctx_ddl.add_sub_lexer('m_lexer','default','us_lexer');
ctx_ddl.add_sub_lexer('m_lexer','e','e_lexer');
end;
/

/* add new language column to the table for multi-lexer */
alter table tbl add(lang varchar2(10) default 'us');

/* create shadow index */
exec ctx_ddl.create_shadow_index('idx',
'replace lexer m_lexer language column lang NOPOPULATE');

declare
idxid integer;
begin
/* figure out shadow index name */
select idx_id into idxid from ctx_user_indexes
where idx_name ='IDX';
/* populate pending */
ctx_ddl.populate_pending('RIO$'||idxid);
/* time limited sync */
ctx_ddl.sync_index(idx_name =>'RIO$'||idxid,
maxtime =>480);
/* more sync until no pending rows for the shadow index */
end;
/* swap in the shadow index */
exec ctx_ddl.exchange_shadow_index('idx');

注意

シャドウ索引の索引名はRIO$index_idです。デフォルトでは、CREATE INDEXまたはALTER INDEXにNOPOPULATEが指定されていないかぎり、非パーティション索引の索引表も移入されます。ローカル・パーティション索引の場合は、各パーティションに対して索引表を作成せずに、索引メタデータのみが作成されます。各索引に指定できるシャドウ索引は1つのみです。

非パーティション索引をオンラインで構築するときは、最初にこのプロシージャをコールして索引メタデータと索引表を作成できます。POPULATEを指定すると、索引は移入されますが、スワッピングは実行されません。スワッピングは、必要に応じて後でスケジュールできます。

NOPOPULATEを指定すると、索引表のメタデータが作成されるのみで、移入は実行されません。このプロシージャを実行した後は、POPULATE_PENDING(CTX_DDL.POPULATE_PENDING)を実行して保留キューを移入してから、索引を同期化する必要があります。これは、増分再作成と呼ばれます。

このプロシージャの実行中、すべての問合せは正常に処理されます。

POPULATEを指定すると、移入開始のわずかな間DMLがブロックされ、それ以降のすべてのDMLは、オンライン保留キューにロギングされ、後で処理されます。

CTX_DDL.SYNC_INDEXでの同期化は、通常、索引に対して実行されます。OPTIMIZE_INDEXの実行では、なにも処理されませんが、エラーも戻りません。

関連項目

ALTER INDEX のPOPULATE | NOPOPULATE

「Oracle TextのSQL文と演算子」の「CREATE INDEX」

CTX_DDL.DROP_SHADOW_INDEX

CTX_DDL.EXCHANGE_SHADOW_INDEX

CTX_DDL.SYNC_INDEX

CTX_DDL.POPULATE_PENDING

8.25 CREATE_STOPLIST

新しい空のストップリストを作成します。ストップリストには、索引付けしないワードまたはテーマを含めることができます。

言語固有のストップワードを保持するマルチ言語のストップリストを作成することもできます。マルチ言語のストップリストは英語、ドイツ語および日本語などの異なる言語のドキュメントを含む表の索引付けに有効です。索引付けを実行する場合は、テキスト表に言語列が含まれている必要があります。

ADD_STOPWORD 、ADD_STOPCLASS またはADD_STOPTHEME を使用して、ストップワード、ストップクラスまたはストップテーマのいずれかをストップリストに追加します。ストップリストは、CREATE INDEXまたはALTER INDEX のパラメータ文字列で指定し、デフォルトのストップリストCTXSYS.DEFAULT_STOPLISTをオーバーライドします。

構文

CTX_DDL.CREATE_STOPLIST(

stoplist_name IN VARCHAR2,
stoplist_type IN VARCHAR2 DEFAULT 'BASIC_STOPLIST');

stoplist_name

作成するストップリストの名前を指定します。

stoplist_type

単一言語のストップリストを作成するには、BASIC_STOPLISTを指定します。これはデフォルトです。

言語固有のストップワードを持つストップリストを作成するには、MULTI_STOPLISTを指定します。

索引付け時に、各ドキュメントの言語列が調べられ、その言語のストップワードのみが排除されます。問合せ時に、セッション言語の設定によって、アクティブなストップワードが特定されます。これは、マルチレクサーの使用時にアクティブなレクサーが特定されるのと同様です。

注意:

マルチ言語のストップリストを持つマルチ言語表を索引付けする場合は、表に言語列が含まれている必要があります。

例

例8-2 単一言語のストップリスト

次の例は、mystopというストップリストを作成します。

begin
ctx_ddl.create_stoplist('mystop', 'BASIC_STOPLIST');
end;

例8-3 複数言語のストップリスト

次の例は、multistopというマルチ言語のストップリストを作成し、次に2つの言語固有のストップワードを追加します。

begin
ctx_ddl.create_stoplist('multistop', 'MULTI_STOPLIST');
ctx_ddl.add_stopword('mystop', 'Die','german');
ctx_ddl.add_stopword('mystop', 'Or','english');
end;

関連項目

"ADD_STOPWORD "

"ADD_STOPCLASS "

"ADD_STOPTHEME "

"DROP_STOPLIST "

"CREATE INDEX"

"ALTER INDEX "

Oracle Textで提供されるストップリスト

8.26 DROP_INDEX_SET

CTX_DDL.CREATE_INDEX_SETを使用して作成されたCTXCAT索引セットを削除します。

構文

CTX_DDL.DROP_INDEX_SET(
set_name    IN VARCHAR2
);

set_name

削除する索引セットの名前を指定します。

索引セットを削除すると、それに含まれるサブ索引もすべて削除されます。

8.27 DROP_POLICY

CTX_DDL.CREATE_POLICYを使用して作成されたポリシーを削除します。

構文

CTX_DDL.DROP_POLICY(
policy_name    IN VARCHAR2
);

policy_name

削除するポリシーの名前を指定します。

8.28 DROP_PREFERENCE

DROP_PREFERENCEプロシージャは、指定したプリファレンスをテキスト・データ・ディクショナリから削除します。プリファレンスを削除しても、そのプリファレンスを使用して作成された索引には影響を与えません。

構文

CTX_DDL.DROP_PREFERENCE(
preference_name    IN VARCHAR2
);

preference_name

削除するプリファレンスの名前を指定します。

例

次の例は、プリファレンスmy_lexerを削除します。

begin
ctx_ddl.drop_preference('my_lexer');
end;

関連項目

「CTX_DDL.CREATE_PREFERENCE 」

8.29 DROP_SECTION_GROUP

DROP_SECTION_GROUPプロシージャは、指定したセクション・グループおよびそのグループ内のすべてのセクションをテキスト・データ・ディクショナリから削除します。

構文

CTX_DDL.DROP_SECTION_GROUP(
group_name     IN VARCHAR2
);

group_name

削除するセクション・グループの名前を指定します。

例

次の例は、セクション・グループhtmgroupおよびそのすべてのセクションを削除します。

begin
ctx_ddl.drop_section_group('htmgroup');
end;

関連項目

"CREATE_SECTION_GROUP "

"PREFERENCE_IMPLICIT_COMMIT"

8.30 DROP_SHADOW_INDEX

指定した索引のシャドウ索引を削除します。シャドウ索引を削除するときに、その索引がパーティション化されている場合は、このシャドウ索引のメタデータと、このシャドウ索引のパーティションすべてのメタデータが削除されます。このプロシージャは、シャドウ索引表もすべて削除し、オンライン保留キューをクリーン・アップします。

構文

CTX_DDL.DROP_SHADOW_INDEX(
idx_name       in VARCHAR2
);

idx_name

有効なCONTEXT索引タイプの名前。

例

次の例は、シャドウ索引myshadowidxを削除します。

begin
ctx_ddl.drop_shadow_index('myshadowidx');
end;

関連項目

CTX_DDL.CREATE_SHADOW_INDEX

8.31 DROP_STOPLIST

テキスト・データ・ディクショナリからストップリストを削除します。ストップリストを削除した場合は、変更を有効にするために索引を再作成または再構築する必要があります。

構文

CTX_DDL.DROP_STOPLIST(stoplist_name in varchar2);

stoplist_name

ストップリストの名前を指定します。

例

次の例は、ストップリストmystopを削除します。

begin
ctx_ddl.drop_stoplist('mystop');
end;

関連項目

「CTX_DDL.CREATE_STOPLIST 」

8.32 EXCHANGE_SHADOW_INDEX

このプロシージャは、索引(または索引パーティション)メタデータと索引(または索引パーティション)データをスワップします。

非パーティション索引の場合は、メタデータと索引データの両方がスワップされ、オンライン保留キューが処理されます。

構文

CTX_DDL.EXCHANGE_SHADOW_INDEX(
idx_name        IN VARCHAR2
partition_name  IN VARCHAR2 default NULL
);

idx_name

CONTEXT索引タイプの名前を指定します。

partition_name

シャドウ索引パーティションの名前を指定します。NULLも許可されます。

例

例8-4 計画的なスワップによるグローバル索引の再作成

次のコードは、問合せが失敗となり、DMLのブロックが許容される営業時間外にCTX_DDL.EXCHANGE_SHADOW_INDEXを実行する例を示しています。

/* create lexer and original index */
exec ctx_ddl.create_preference('us_lexer','basic_lexer');
create index idx on tbl(text) indextype is ctxsys.context
parameters('lexer us_lexer');

/* create a new lexer */
begin
ctx_ddl.create_preference('e_lexer','basic_lexer');
ctx_ddl.set_attribute('e_lexer','base_letter','yes');
ctx_ddl.create_preference('m_lexer','multi_lexer');
ctx_ddl.add_sub_lexer('m_lexer','default','us_lexer');
ctx_ddl.add_sub_lexer('m_lexer','e','e_lexer');
end;
/

/* add new language column to the table for multi-lexer */
alter table tbl add(lang varchar2(10) default 'us');

/* recreate index online with the new multip-lexer */
exec ctx_ddl.create_shadow_index('idx',
'replace lexer m_lexer language column lang');
exec ctx_ddl.exchange_shadow_index('idx');

注意

非パーティション索引でのEXCHANGE_SHADOW_INDEXの使用

非パーティション索引の場合は、メタデータと索引データの両方がスワップされ、オンライン保留キューが処理されます。

メタデータと索引データをスワッピングしているときの問合せでは、列が索引付けされていないことを示すエラーが戻りますが、オンライン保留キューを処理しているときの問合せは正常に処理されます。エラーが発生するのは短い時間帯です。

シャドウ索引の作成時にPOPULATEを指定した場合や、シャドウ索引の作成以降に多数のDML操作が発行された場合は、保留キューが大規模になる可能性があります。一方、増分再作成を使用した場合、つまり、シャドウ索引の作成時にNOPOPULATEを指定し、保留キューを移入してから同期化した場合は、CREATE_SHADOW_INDEXの発行以降に発生したDML操作の件数に関係なく、オンライン保留キューは常に空です。

このプロシージャの実行時には、索引が進捗状態にあることを示すエラーによって、最初にDMLが失敗となります。その後、再適用を必要とする行がオンライン保留キューにある場合は、DMLをブロック(ハング)できます。

注意:

このプロシージャの実行時には、索引が進捗状態にあることを示すエラーによって、DML文は失敗となります。このエラーが発生したときに、再適用を必要とする行がオンライン保留キューにある場合は、DMLをブロックしてハングできます。

パーティション索引でのEXCHANGE_SHADOW_INDEXの使用

NOSWAPを使用して再作成されたパーティションの場合、索引がパーティション化されていて、partition_nameが有効な索引パーティションであるときは、索引パーティション・データと索引パーティション・メタデータがスワップされ、このパーティションのオンライン保留キューが処理されます。

このプロシージャでは一度に1つのパーティションのみがスワップされます。このプロシージャをNOSWAPで再作成されたパーティションに対して実行すると、問合せは次のように処理されます。

- 複数のパーティションにわたる問合せでは、すべてのパーティションで一貫した結果が戻るわけではありません。

- スワップ中のパーティションに対する問合せは、エラーになります。

- すでにスワップ済のパーティションに対する問合せは、新しい索引がベースとなります。

- スワップされなかったパーティションに対する問合せは、古い索引がベースとなります。

partition_nameがNULLの場合は、索引メタデータがスワップされます。ローカル・パーティション索引をオンラインで再作成する場合は、このプロシージャを手順の最後に実行します。

関連項目

CTX_DDL."RECREATE_INDEX_ONLINE"

CTX_DDL."CREATE_SHADOW_INDEX"

CTX_DDL."DROP_SHADOW_INDEX"

8.33 OPTIMIZE_INDEX

索引を最適化します。索引の最適化は、同期化の後に実行します。索引を最適化すると、古いデータが削除され、索引の断片化が最小限度に抑えられます。その結果、問合せ応答時間を短縮できます。問合せおよびDMLの処理は最適化中にも続行できます。

高速モード、完全モード、再構築モード、トークン・モード、トークン型モード、マージ・モードで最適化できます。

- 高速モードではデータは圧縮されますが、行は削除されません。

- 完全モードではデータが圧縮され、行が削除されます。

- 再構築モードで最適化すると、$I表(逆リスト表)全体が再構築されます。索引の再構築は完全最適化を実行したときよりも処理時間が大幅に短いことが多く、特に索引がひどく断片化している場合は、小型の索引を生成する傾向があります。
再構築モードの最適化は、$I表のさらに圧縮されたコピーを作成し、元の$I表とコピーを切り替えます。そのため、再構築操作には元の表とコピーを格納する十分な領域が必要です。(REDOロギングが使用可能な場合は、REDOログ用の領域を追加することも必要です。)再構築操作の最後には元の$I表が削除されるため、領域を再利用できます。一時的な「変更取得トリガー」を使用して、最適化中の$I表への更新が失われないことを確認します。したがって、REBUILDモードのOPTIMIZE_INDEXをコールするユーザーにはCREATE TRIGGER権限が必要です。

再構築モードの最適化は、次の制限事項でbasic_storageプリファレンスのi_table_clause属性による$I表のパーティション化をサポートします。

- $I表をパーティション化する場合、ローカルのBツリー索引を使用してi_index_clauseを指定します。

- token_first、token_last、またはtoken_count列のパーティション化スキームは使用できません。

- トークン・モードでは、最適化する特定のトークンを指定します(たとえば、ワードelectionsを含むドキュメントを持つ行すべて)。このモードを使用して、参照頻度の低いトークンの最適化に要する時間を節約しながら、検索頻度の高い索引トークンを最適化します。トークンを最適化すると、問合せ応答時間を短縮できます(最適化されたトークンで問い合せる場合のみ)。

- トークン型の最適化はトークン・モードに似ていますが、最適化がフィールド・セクション、MDATAセクション、またはSDATAセクション(たとえば、<A>タグのあるセクション)で実行される点が異なります。これは、重要なフィールドまたはMDATAセクションを最適な状態に保持する場合に有効です。

- DML操作で多用されるCONTEXT索引の$I表を最適化するには、マージ・モードを使用します。マージ処理によって$G表から古いデータが削除され(行が削除され)、既存のデータが$G表に圧縮されて、そのデータが$I表にコピーされます。特定のトークンにマージ最適化を使用すると、そのトークンのみが$G表から$I表にコピーされます。

索引を最適化する一般的な方法は、参照頻度の高い語句で通常のトークン・モードの最適化を実行し、再構築モードの最適化はあまり実行しないという方法です。(実行頻度の高い問合せを見つけるには、CTX_REPORT.QUERY_LOG_SUMMARYを使用します。)トークン・モードの最適化のかわりに、完全モード、高速モードまたはトークン型モードの最適化を実行できます。

再構築の最適化はあまり実行せず、制限時間を指定して完全最適化を頻繁に実行するという方法もあります。

注意:

索引を最適化することで、初期の索引操作後、元表に対するドキュメントの挿入、削除または更新操作のみが必要な場合は、応答時間がかなり短縮できます。

索引の最適化には、ALTER INDEX文よりもこのプロシージャを使用することをお薦めします。

大型の索引の最適化には、時間を要することがあります。長時間に及ぶ最適化の進捗状態を監視するには、CTX_OUTPUT.START_LOGを使用して最適化をロギングし、生成されるログ・ファイルを時々チェックしてください。

シリアルの完全モードの最適化とは異なり、optlevelがFULLでCTX_DDL.OPTIMIZE_INDEX()を実行すると、parallel_degree > 1の場合は再開できません。つまり、タイムアウトまたは失敗の直後から再開されません。

注意:

$I表と最適化済のシャドウ$I表とのスワップ中に、CTX_DDL.OPTIMIZE_INDEX REBUILDモードでは問合せが失敗する可能性がある時間枠がごくわずかにあります。

構文

CTX_DDL.OPTIMIZE_INDEX(

idx_name        IN  VARCHAR2,
optlevel        IN  VARCHAR2,
maxtime         IN  NUMBER DEFAULT NULL,
token           IN VARCHAR2 DEFAULT NULL,
part_name       IN VARCHAR2 DEFAULT NULL,
token_type      IN NUMBER DEFAULT NULL,
parallel_degree IN NUMBER DEFAULT 1

);

idx_name

索引の名前を指定します。索引名を指定しない場合は、Oracle Textによって最適化する索引が1つ選択されます。

optlevel

最適化レベルを文字列で指定します。最適化には、次のいずれかの方法を指定できます。

optlevelの値

説明

FASTまたはCTX_DDL.OPTLEVEL_FAST

この方法では、断片化した行が圧縮されます。ただし、古いデータは削除されません。

FAST最適化は、CTXCAT索引に対してサポートされていません。FAST最適化では、$S索引表は最適化されません。

FULLまたはCTX_DDL.OPTLEVEL_FULL

このモードでは、索引全体または索引の一部を最適化できます。この方法では行が圧縮され、古いデータ(削除済の行)が削除されます。完全モードでの最適化は、削除済の行が存在しない場合でも実行されます。

完全最適化は、CTXCAT索引に対してサポートされていません。

REBUILDまたはCTX_DDL.OPTLEVEL_REBUILD

このoptlevelでは、$I表(逆リスト表)が再構築され、圧縮されたトークン情報の行が生成されます。FULL最適化のように、このモードでも元表の削除された行に関係する情報が削除されます。

CTCATおよびCTXRULE索引に対して、REBUILDはサポートされていません。

REBUILDは、$I表がパーティション化されている場合にはサポートされません。

TOKENまたはCTX_DDL.OPTLEVEL_TOKEN

この方法では、最適化する特定のトークンを指定します。Oracle Textでは、tokenで指定されたトークンに対して完全最適化を実行します。指定されたトークン型がない場合は、0(ゼロ)がデフォルトとして使用されます。

検索頻度の高いトークンの最適化には、この方法を使用します。

CTCATおよびCTXRULE索引に対して、トークンの最適化はサポートされていません。

TOKEN_TYPEまたはCTX_DDL.OPTLEVEL_TOKEN_TYPE

この最適化レベルでは、入力トークン型に一致する索引内のすべてのトークンがオンデマンドで最適化されます。

optlevelがTOKEN_TYPEの場合は、token_typeを指定する必要があります。TOKEN_TYPEでは、入力token_typeの任意のトークンに対してFULL最適化が実行されます。TOKEN最適化のように、TOKEN_TYPE最適化ではFULL最適化の状態は変更されず、各呼出しにおいて最後まで実行されます。

CTCATおよびCTXRULE索引に対して、token_typeはサポートされていません。

MERGEまたはCTX_DDL.OPTLEVEL_MERGE

このoptlevelは、$I表を最適化します。$G表から古いデータが削除され(行が削除され)、既存のデータが$G表に圧縮されて、最適化されたそのデータが$I表にコピーされます。

特定のトークンにこのオプションを使用すると、そのトークンのみが$G表から$I表にコピーされます。

マージ最適化は、STAGE_ITAB索引オプションが有効なCONTEXT索引に対して使用する必要があります。

$S索引表に対するCTX_DDL.OPTIMIZE_INDEXの動作は、次のとおりです。

optlevelの値

$S索引表の最適化

注意

FASTまたはCTX_DDL.OPTLEVEL_FAST

いいえ

FULLまたはCTX_DDL.OPTLEVEL_FULL

はい

- 最初に$I表が最適化されます。$I表の最適化が終了すると、CTX_DDL.OPTIMIZE_INDEXによる$S索引表の最適化が継続されます。

- MAXTIMEも使用できます。CTX_DDL.OPTIMIZE_INDEXによる指定のSDATA_IDに対する$S行の最適化が完了した後、MAXTIMEがチェックされ、経過時間合計($Iの最適化に要した時間を含む)が指定のMAXTIMEを超過した場合は終了します。未処理部分は、次回のoptlevel=>'FULL'指定のCTX_DDL.OPTIMIZE_INDEXで最適化されます。

- $S表の最適化は、シリアルに実行されます。

REBUILDまたはCTX_DDL.OPTLEVEL_REBUILD

はい

- $Sの最適化は、$Iの再構築終了後に開始されます。

- この場合、$Sの最適化はFULLモードでの$S最適化と同じ方法で処理されます。$S表は適切に最適化されますが、再構築は実行されません。
注意: なんらかの理由で$S最適化が異常終了した場合は、$I表が二重に再構築されないように、$Sの最適化には、optlevel=>TOKEN_TYPEを使用することをお薦めします。

- $S表の最適化は、シリアルに実行されます。

TOKENまたはCTX_DDL.OPTLEVEL_TOKEN

いいえ

TOKEN_TYPEまたはCTX_DDL.OPTLEVEL_TOKEN_TYPE

はい

optlevel => TOKEN_TYPEおよびTOKEN_TYPEパラメータをターゲットSDATA_IDに対して設定することで、指定したSDATA_IDの$S行を最適化できます。

maxtime

FULLモードでの最適化の最大時間を分単位で指定します。

記号CTX_DDL.MAXTIME_UNLIMITEDを指定した場合(またはNULLで渡した場合)は、索引全体が最適化されます。これはデフォルトです。

token

最適化するトークンを指定します。

part_name

使用している索引がローカル索引の場合は、同期化する索引パーティションの名前を指定します。指定しない場合はエラーが戻されます。

使用している索引がグローバルで、非パーティション索引の場合は、NULLを指定します。これはデフォルトです。

token_type

最適化するtoken_typeを指定します。

parallel_degree

パラレル最適化に対する並列度を数値で指定します。実際の並列度は、リソースによって異なります。

optlevel値ではシリアルに実行されるため、この設定ではこれらの値は無視されます。

- TOKENまたはCTX_DDL.OPTLEVEL_TOKEN

- FASTまたはCTX_DDL.OPTLEVEL_FAST

例

次の2つの例は、高速モードの最適化を使用して索引を最適化する同等の方法です。

begin
ctx_ddl.optimize_index('myidx','FAST');
end;

begin
ctx_ddl.optimize_index('myidx',CTX_DDL.OPTLEVEL_FAST);
end;

次の例では、索引トークンOracleを最適化します。

begin
ctx_ddl.optimize_index('myidx','token', TOKEN=>'Oracle');
end;

索引MYINDEX内のフィールド・セクションMYSECのすべてのトークンを最適化するには、次のようにします。

begin
ctx_ddl.optimize_index('myindex', ctx_ddl.optlevel_token_type,
token_type=> ctx_report.token_type('myindex','field mysec text'));end;

次の2つの例は、マージ最適化を使用して索引を最適化する同等の方法です。

begin
ctx_ddl.optimize_index('idx','MERGE');
end;

begin
ctx_ddl.optimize_index('idx',CTX_DDL.OPTLEVEL_MERGE);
end;

注意

CTX_DDL.SYNC_INDEXおよびCTX_DDL.OPTIMIZE_INDEXは同時に実行できます。並列度が指定されたCTX_DDL.SYNC_INDEXおよびCTX_DDL.OPTIMIZE_INDEXも同時に実行できます。ただし、次は実行しないでください。

- 並列度が指定されたCTX_DDL.SYNC_INDEXをCTX_DDL.OPTIMIZE_INDEXと同時に実行すること。

- 並列度が指定されたCTX_DDL.SYNC_INDEXを並列度が指定されたCTX_DDL.OPTIMIZE_INDEXと同時に実行すること。

これらのいずれかの組合せを実行する必要がある場合、エラーは生成されませんが、一方の処理が完了してからもう一方の処理が行われます。

関連項目

CTX_DDL."SYNC_INDEX"

"ALTER INDEX "

8.34 POPULATE_PENDING

元表または表パーティション内のROWIDすべてを含めた保留キューを移入します。このプロシージャは、CONTEXT索引に対してのみサポートされています。

このプロシージャは、索引付け処理を連続的に実行する余裕がないために、テキスト索引作成に対する制御を向上させる必要がある大規模なインストール環境で役立ちます。望ましい方法は、空の索引を作成して、すべてのROWIDを保留キューに配置し、CTX_DDL.SYNC_INDEXを介して索引を構築する方法です。

構文

ctx_ddl.populate_pending(
idx_name  IN VARCHAR2,
part_name IN VARCHAR2 DEFAULT NULL
);

idx_name

CONTEXT索引タイプの名前。

part_name

索引パーティションの名前(ある場合)。ローカル・パーティション索引に指定する必要があり、グローバルの非パーティション索引ではNULLである必要があります。

注意

SYNC_INDEXは処理の間ブロックされます。索引ユニットは完全に空(idx_docid_count = 0、idx_nextid = 1)であることが必要です。索引付けを待機している行のROWIDは、表ctxsys.dr$pendingに挿入されます。元表のROWIDを保持するための十分な領域がこの表にあることを確認してください。

関連項目

"SYNC_INDEX"

"CREATE_SHADOW_INDEX"

"DROP_SHADOW_INDEX"

"EXCHANGE_SHADOW_INDEX"

"RECREATE_INDEX_ONLINE"

8.35 PREFERENCE_IMPLICIT_COMMIT

この変数は、CTX_DDLのパッケージ・レベルで設定され、CTX_DDLプリファレンスに関係するプロシージャが暗黙的なコミットを発行するかどうかを指定します。この変数はセッションの間有効です。

PREFERENCE_IMPLICIT_COMMIT変数は、次の表に示すプロシージャに対して設定できます。

プロシージャ名

プロシージャ名

ADD_ATTR_SECTION

CREATE_INDEX_SET

ADD_FIELD_SECTION

CREATE_PREFERENCE

ADD_INDEX

CREATE_SECTION_GROUP

ADD_MDATA_COLUMN

CREATE_STOPLIST

ADD_MDATA_SECTION

DROP_PREFERENCE

ADD_SDATA_COLUMN

DROP_SECTION_GROUP

ADD_SDATA_SECTION

DROP_STOPLIST

ADD_SPECIAL_SECTION

REMOVE_INDEX

ADD_STOPCLASS

REMOVE_SECTION

ADD_STOP_SECTION

REMOVE_SUB_LEXER

ADD_STOPTHEME

SET_ATTRIBUTE

ADD_STOPWORD

UNSET_ATTRIBUTE

ADD_SUB_LEXER

UPDATE_SUB_LEXER

ADD_ZONE_SECTION

注意:

REMOVE_STOPCLASS、REMOVE_STOPTHEME、REMOVE_STOPWORDの各プロシージャは暗黙的なコミットを発行しません。したがって、PREFERENCE_IMPLICIT_COMMITフラグを使用しません。

構文

exec CTX_DDL.PREFERENCE_IMPLICIT_COMMIT := TRUE|FALSE ;

PREFERENCE_IMPLICIT_COMMIT変数のデフォルト値はTRUEです。この変数をFALSEに設定すると、CTX_DDLプリファレンスに関係するプロシージャは暗黙的なコミットを発行しなくなります。こうすると、プリファレンスを複数回変更した場合でもロールバックが容易です。この変数はセッションの間有効です。

例

次の例は、暗黙的なコミットを無効にします。

exec CTX_DDL.PREFERENCE_IMPLICIT_COMMIT : update_sub_lexer = FALSE;

8.36 RECREATE_INDEX_ONLINE

指定した索引を再作成します。あるいは、索引がローカル・パーティション索引の場合は、受け取った索引パーティションを再作成します。パーティション化されていないグローバル索引の場合、この手順は1ステップで実行できます。ローカル・パーティション索引の場合は、最初にCREATE_SHADOW_INDEXを使用してシャドウ・ポリシー(またはメタデータ)を作成した後で、すべてのパーティションに対してこのプロシージャを個別に実行する必要があります。このプロシージャは、Oracle DatabaseのEnterprise Editionのみでサポートされています。

次の変更はサポートされていません。

- 非コンポジット・ドメイン索引からコンポジット・ドメイン索引の変換、またはコンポジット・ドメイン索引の列の変更

- 索引表がパーティション化されている索引($I、$P、$Kなど)の再構築

構文

CTX_DDL.RECREATE_INDEX_ONLINE(
idx_name          IN VARCHAR2,
parameter_string  IN VARCHAR2 default NULL,
parallel_degree   IN NUMBER default 1,
partition_name    IN VARCHAR2 default NULL
);

idx_name

有効なCONTEXT索引タイプの名前。

parameter_string

索引がグローバル非パーティション索引である場合は、ALTER INDEXの場合と同様に、同じ索引レベルのパラメータ文字列を指定します。NULL以外の場合、パラメータ文字列はREPLACEで開始する必要があります。必要に応じてSWAPまたはNOSWAPを指定します。デフォルトはSWAPです。

parallel_degree

予備。並列度を指定します。現在のリリースでは、パラレル操作はサポートされていません。

partition_name

ローカル・パーティション索引に対して有効な索引パーティション名を指定します。名前を指定しない場合、デフォルトはNULLです。索引がパーティション化されている場合は、最初にパーティション名を渡し、次にALTER INDEX REBUILD PARTITIONのパーティション・レベルのパラメータ文字列を指定します。

例

例8-5 単純なグローバル索引の再作成

次の例は、BASIC_LEXERベースのプリファレンスus_lexerを使用して索引idxを作成します。次に、新しいMULTI_LEXERベースのプリファレンスm_lexerを使用して索引をワンステップで再作成します。このワンステップ・アプローチは、時間枠が小さいために問合せが操作終了時に失敗する可能性があり、最初と最後の短い時間帯にDMLがブロックされる可能性があります。

/* create lexer and original index */
exec ctx_ddl.create_preference('us_lexer','basic_lexer');
create index idx on tbl(text) indextype is ctxsys.context
parameters('lexer us_lexer');

/* create a new lexer */
begin
ctx_ddl.create_preference('e_lexer','basic_lexer');
ctx_ddl.set_attribute('e_lexer','base_letter','yes');
ctx_ddl.create_preference('m_lexer','multi_lexer');
ctx_ddl.add_sub_lexer('m_lexer','default','us_lexer');
ctx_ddl.add_sub_lexer('m_lexer','e','e_lexer');
end;
/

/* add new language column to the table for multi-lexer */
alter table tbl add(lang varchar2(10) default 'us');

/* recreate index online with the new multip-lexer */
exec ctx_ddl.recreate_index_online('idx',
'replace lexer m_lexer language column lang');

例8-6 一斉スワップによるローカル索引の再作成

次の例は、基本レクサーus_lexerを使用してローカル・パーティション索引idxpを作成します。このローカル・パーティション索引には、idx_p1とidx_p2の2つの索引パーティションがあります。パーティションidx_p1を使用してローカル・パーティション索引idxpをオンラインで再作成します。この索引には、新しい記憶域プリファレンスnew_storeが指定されます。パーティション・メタデータと索引パーティション・データのスワッピングは最後に発生します。この例にある複数パーティションにわたる問合せでは、再作成の処理中(EXCHANGE_SHADOW_INDEXの実行終了時を除く)に、パーティション全体で一貫した結果が戻ります。余分に必要な領域は、パーティションidx_p1とidx_p2を合せた索引サイズです。

/* create a basic lexer and a local partition index with the lexer*/
exec ctx_ddl.create_preference('us_lexer','basic_lexer');
create index idxp on tblp(text) indextype is ctxsys.context local
(partition idx_p1,
partition idx_p2)
parameters('lexer us_lexer');

/* create new preferences  */
begin
ctx_ddl.create_preference('my_store','basic_storage');
ctx_ddl.set_attribute('my_store','i_table_clause','tablespace tbs');
end;
/
begin
ctx_ddl.create_preference('e_lexer','basic_lexer');
ctx_ddl.set_attribute('e_lexer','base_letter','yes');
ctx_ddl.create_preference('m_lexer','multi_lexer');
ctx_ddl.add_sub_lexer('m_lexer','default','us_lexer');
ctx_ddl.add_sub_lexer('m_lexer','e','e_lexer');
end;
/

/* add new language column */
alter table tblp add column (lang varchar2(10) default 'us');

/* create a shadow policy with a new lexer */
exec ctx_ddl.create_shadow_index('idxp', null,
'replace lexer m_lexer language column lang');

/* recreate every index partition online without swapping */
exec ctx_ddl.recreate_index_online('idxp',
'replace storage my_store NOSWAP', 1, 'idx_p1');
exec ctx_ddl.recreate_index_online('idxp','replace NOSWAP',1,'idx_p2');

/* exchange in shadow index partition all at once */
exec ctx_ddl.exchange_shadow_index('idxp',
'idx_p1') /* exchange index partition data*/
exec ctx_ddl.exchange_shadow_index('idxp',
'idx_p2') /* exchange index partition data*/

/* exchange in shadow index metadata */
exec ctx_ddl.exchange_shadow_index('idxp')

例8-7 パーティション単位のスワップによるローカル索引の再作成

この例は、各索引パーティションが作成完了時点でスワップされること以外は、例8-6と同じタスクを実行します。この例では、すべてのパーティションにわたる問合せに対して一貫性のない結果が戻る可能性があります。

/* create a basic lexer and a local partition index with the lexer*/
exec ctx_ddl.create_preference('us_lexer','basic_lexer');
create index idxp on tblp(text) indextype is ctxsys.context local
(partition idx_p1,
partition idx_p2)
parameters('lexer us_lexer');

/* create new preferences  */
begin
ctx_ddl.create_preference('my_store','basic_storage');
ctx_ddl.set_attribute('my_store','i_table_clause','tablespace tbs');
end;
/
begin
ctx_ddl.create_preference('e_lexer','basic_lexer');
ctx_ddl.set_attribute('e_lexer','base_letter','yes');
ctx_ddl.create_preference('m_lexer','multi_lexer');
ctx_ddl.add_sub_lexer('m_lexer','default','us_lexer');
ctx_ddl.add_sub_lexer('m_lexer','e','e_lexer');
end;
/

/* add new language column */
alter table tblp add column (lang varchar2(10) default 'us');

/* create a shadow policy with a new lexer *
exec ctx_ddl.create_shadow_index('idxp',
'replace lexer m_lexer language column lang');

/* recreate every index partition online and swap (default) */
exec ctx_ddl.recreate_index_online('idxp',
'replace storage my_store', 1, 'idx_p1');
exec ctx_ddl.recreate_index_online('idxp', 'replace SWAP', 1, 'idx_p2',

/* exchange in shadow index metadata */
exec ctx_ddl.exchange_shadow_index('idxp')

例8-8 一斉スワップによるローカル索引の計画的な再作成

この例は、ローカル・パーティション索引の増分再作成を示しています。すべてのパーティションは最後にスワップされます。

/* create a basic lexer and a local partition index with the lexer*/
exec ctx_ddl.create_preference('us_lexer','basic_lexer');
create index idxp on tblp(text) indextype is ctxsys.context local
(partition idx_p1,
partition idx_p2)
parameters('lexer us_lexer');

/* create new preferences  */
begin
ctx_ddl.create_preference('my_store','basic_storage');
ctx_ddl.set_attribute('my_store','i_table_clause','tablespace tbs');
end;
/
begin
ctx_ddl.create_preference('e_lexer','basic_lexer');
ctx_ddl.set_attribute('e_lexer','base_letter','yes');
ctx_ddl.create_preference('m_lexer','multi_lexer');
ctx_ddl.add_sub_lexer('m_lexer','default','us_lexer');
ctx_ddl.add_sub_lexer('m_lexer','e','e_lexer');
end;
/

/* add new language column */
alter table tblp add column (lang varchar2(10) default 'us');

/* create a shadow policy with a new lexer *
exec ctx_ddl.create_shadow_index('idxp',
'replace lexer m_lexer language column lang');
/* create shadow partition with new storage preference */
exec ctx_ddl.recreate_index_online('idxp', 'replace storage ctxsys.default_storage nopopulate',1,'idx_p1');
exec ctx_ddl.recreate_index_online('idxp', 'replace storage ctxsys.default_storage nopopulate',1,'idx_p2');

declare
idxid integer;
ixpid integer;
begin
select idx_id into idxid from ctx_user_indexes
where idx_name = 'IDXP';
select ixp_id into ixpid from ctx_user_index_partitions
where ixp_index_name = 'IDXP'
and ixp_index_partition_name = 'IDX_P1';
/* populate pending */
ctx_ddl.populate_pending('RIO$'||idxid, 'RIO$'||idxid||'#'||ixpid);
/* incremental sync
ctx_ddl.sync_index('RIO$'||idxid, null, 'RIO$'||idxid||'#'||ixpid,
maxtime=>400);
/* more incremental sync until no more pending rows */

select ixp_id into ixpid from ctx_user_index_partitions
where ixp_index_name = 'IDXP'
and ixp_index_partition_name = 'IDX_P2';
/* populate pending */
ctx_ddl.populate_pending('RIO$'||idxid, 'RIO$'||idxid||'#'||ixpid);
/* incremental sync
ctx_ddl.sync_index('RIO$'||idxid, null, 'RIO$'||idxid||'#'||ixpid,
maxtime=>400);
/* more incremental sync until no more pending rows */
end;
/

exec ctx_ddl.exchange_shadow_index('idxp','idx_p1');
exec ctx_ddl.exchange_shadow_index('idxp','idx_p2');
exec ctx_ddl.exchange_shadow_index('idxp');

例8-9 パーティション単位のスワップによるローカル索引の計画的な再作成

この例は、パーティションが使用可能になり次第スワップされる増分再作成を示しています。すべての同期化が終了するまで待機してからシャドウ索引の交換を開始するのではなく、1つの同期化が終了した直後に各パーティションに対してEXCHANGE_SHADOW_INDEXが実行されること以外は、例8-8の手順と同じです。

注意

グローバル非パーティション索引でのRECREATE_INDEX_ONLINEの使用

このプロシージャには、グローバル索引を対象にして、索引をオンラインで再作成するワンステップ・プロセスが用意されています。このプロセスでは、索引を新しいプリファレンス値で再作成し、再作成の間も元表DMLと問合せ機能を維持します。

注意:

新しい索引は既存の索引と並行して作成されるため、この操作には、既存の索引とほぼ等しいサイズの追加の記憶域が必要です。

DMLの動作

このプロシージャはオンラインで実行されるため、この操作の間も元表に対するDMLは許可され、通常どおりに処理されます。RECREATE_INDEX_ONLINE中に発生するDML文はすべて、オンライン保留キューにロギングされます。

再作成操作の終了間際には、索引の進捗状態を示すエラーによって、DMLが失敗となる短い時間帯があります。処理中にDMLが再度ハング状態になる場合があり、その長さは再作成処理の開始以降にオンライン保留キューにロギングされたDMLの数によって異なります。

索引の再作成操作が完了した後は、RECREATE_INDEX_ONLINEの開始以降に保留となったすべてのDMLから、新しい情報が即時に反映されない場合があることに注意してください。INDEXTYPE IS ctxsys.context ONLINEを使用した索引の作成と同様に、索引の再作成操作が完了した後は、その索引を同期化して最新の状態にする必要があります。

関連項目:

- 再作成の各段階を手動で実行し、各手順を必要な時期に実行するようにスケジュールする方法は、「CTX_DDL.CREATE_SHADOW_INDEX」および「CTX_DDL.EXCHANGE_SHADOW_INDEX」を参照してください。

- 「CONTEXT索引タイプの構文」のONLINEパラメータ"

同期化と最適化の動作

再作成操作の過程で索引に対して発行された同期化は、古い既存のデータと照合して処理されます。問合せでエラーが戻る時間帯と同じ時間帯には、同期化もブロックされます。再作成操作の過程で索引に対して発行された最適化コマンドは、なにも実行されずにエラーなしで即時に戻ります。

問合せの動作

再作成操作の間、索引は、ほぼ通常どおりに問い合せることができます。問合せでは、最後のスワップが終わるまで、既存の索引とポリシー(またはメタデータ)に基づいて結果が戻ります。

RECREATE_INDEX_ONLINE終了間際には、問合せに対して、列が索引付けされていないことを示すエラーが戻る短い時間帯があります。この時間帯は通常の問合せにとっては十分な時間ではありません。この時間は、主にシャドウ索引表と索引表のデータ・セグメントのスワッピングに要する時間と、保留キュー内のすべての行を削除する時間を加算した時間です。これは、DMLが失敗となる時間帯と同じ時間枠です。

RECREATE_INDEX_ONLINEの間にDML文を発行して同期化した場合は、既存の索引を問い合せるときに新しい行を表示できます。ただし、RECREATE_INDEX_ONLINEが終了し(スワッピングが完了し、新しい索引に対して問合せがある)、同期化が実行される前は、新しい行に対して問合せを実行できない可能性があります。これは、この新しい行には古い索引で1回問合せが実行される可能性があるためです。

注意:

トランザクション問合せはサポートされていません。

ローカル・パーティション索引でのRECREATE_INDEX_ONLINEの使用

索引がローカル・パーティション化されている場合、索引はワンステップで再作成できません。最初にシャドウ・ポリシーを作成し、次にすべてのパーティションに対してこのプロシージャを実行する必要があります。SWAPまたはNOSWAPを設定して、RECREATE_INDEX_ONLINEで索引パーティション・データと索引パーティション・メタデータをスワップするかどうかを指定できます。パーティションがNOSWAPで構築されている場合は、このパーティションに対して別のEXCHANGE_SHADOW_INDEXコールを後で起動する必要があります。

また、パラメータ文字列にNOPOPULATEを指定した場合は、このプロシージャを使用して各パーティションのメタデータ(記憶域プリファレンスなど)を更新できます。これは、時間に制限がある同期化を介してシャドウ索引を増分構築する場合に便利です。

NOPOPULATEを指定すると、暗黙的にNOSWAPが実施されます。

NOSWAPの動作

索引パーティションの再作成中はスワッピングが実行されないため、パーティションに対する問合せは通常どおりに処理されます。スワッピング段階に到達するまで、複数のパーティションにわたる問合せでは、パーティション全体で一貫した結果が戻ります。

DMLと同期化は通常どおりに処理されます。再作成中または構築済(ただし、スワップは未処理)のパーティションに対する最適化の実行では、なにも処理されずに単純に戻ります。再構築されていないパーティションに対する最適化の実行は、通常どおりに処理されます。

グローバル索引と同様に、すべてのパーティションでNOSWAPが使用されている場合は、既存の索引とほぼ等しいサイズの追加の記憶域が必要です。

SWAPの動作

索引パーティションのデータとメタデータは索引の再作成後にスワップされるため、複数のパーティションにわたる問合せでは、すべてのパーティションで一貫した結果が戻るわけではありません。しかし、各索引パーティションに関しては常に適切になります。また、パーティションの再作成の終了間際には、索引パーティションのスワップ時に発行した問合せに対して、列が索引付けされていないことを示すエラーが戻る短い時間帯があります。

SWAPを使用してパーティションが再作成するときは、既存の索引パーティションと等しいサイズの記憶域がさらに必要です。

パーティションに対するDMLはブロックされます。スワッピング中は同期化もブロックされます。

関連項目

CREATE_SHADOW_INDEX

DROP_SHADOW_INDEX

EXCHANGE_SHADOW_INDEX

『Oracle Textアプリケーション開発者ガイド』

8.37 REM_SEC_GRP_ATTR_VAL

既存のセクション・グループ属性の値のリストから、特定のセクション・グループ属性値を削除します。

構文

CTX_DDL.REM_SEC_GRP_ATTR_VAL(group_name IN VARCHAR2,
attribute_name  IN VARCHAR2,
attribute_value IN VARCHAR2);

group_name

セクション・グループ名を指定します。

attribute_name

セクション・グループ属性の名前を指定します。

attribute_value

セクション・グループ属性値を指定します。

8.38 REMOVE_AUTO_OPTIMIZE

自動最適化の対象である索引のリストから、索引またはパーティションを削除します。この索引に対して、新しい自動最適化はコールされません。削除は、即座に反映されます。

指定した索引が既存の索引リストにない場合は、エラーが発生します。パーティション索引の場合は、パーティション名を指定しないとエラーが発生します。

構文

CTX_DDL.REMOVE_AUTO_OPTIMIZE(

idx_name       IN VARCHAR2,
part_name      IN VARCHAR2 default NULL
);

idx_name

削除する索引の名前を指定します。

part_name

削除するパーティションの名前を指定します。

関連項目

"ADD_AUTO_OPTIMIZE"

8.39 REMOVE_INDEX

CTXCAT索引セット・プリファレンスから、指定した列リストを持つ索引を削除します。

注意:

このプロシージャは、既存の索引からCTXCATサブ索引を削除しません。削除するには、索引を削除し、変更した索引セット・プリファレンスを使用して再索引付けする必要があります。

構文

CTX_DDL.REMOVE_INDEX(

set_name       IN VARCHAR2,
column_list    IN VARCHAR2
language       IN VARCHAR2 default NULL
);

set_name

索引セットの名前を指定します。

column_list

削除する列リストの名前を指定します。

8.40 REMOVE_MDATA

ドキュメントから、MDATAセクションに関連付けられているメタデータ値を削除します。ADD_MDATAおよびREMOVE_MDATAをコールできるのは、索引の所有者のみです。

CTX_DDL.REMOVE_MDATAはトランザクション型であり、コールするセッションで即時に機能します。このプロシージャはそのコールするセッションでのみ表示でき、永続的に機能させるにはコミットが必要です。ROLLBACKコマンドを使用してこのプロシージャを逆にすることができます。

構文

CTX_DDL.REMOVE_MDATA(
idx_name           IN VARCHAR2,
section_name       IN VARCHAR2,
values             SYS.ODCIVARCHAR2LIST,
rowids             SYS.ODCIRIDLIST,
[part_name]        IN VARCHAR2
);

idx_name

名前が付けられたrowidsを含むテキスト索引の名前。

section_name

MDATAセクションの名前。

values

メタデータ値のリスト。メタデータ値にカンマが含まれている場合は、円記号でカンマをエスケープする必要があります。

rowids

メタデータ値を削除するRowids。

[part_name]

索引パーティションの名前(ある場合)。ローカル・パーティション索引に指定する必要があり、グローバルの非パーティション索引ではNULLである必要があります。

例

この例では、MDATAセクションBGCOLORからMDATA値blueを削除します。

ctx_ddl.remove_mdata('idx_docs', 'bgcolor', 'blue', 'rows');

注意

これらの更新は、元表に格納されている実際の内容ではなく索引自体に直接反映されます。したがって、テキスト索引が再構築されると存続しません。

関連項目

"ADD_MDATA"

"ADD_MDATA_SECTION"

"MDATA"

『Oracle Textアプリケーション開発者ガイド』の「セクション検索」

8.41 REMOVE_SECTION

REMOVE_SECTIONプロシージャは、指定したセクションを指定のセクション・グループから削除します。セクションは、名前またはIDで指定できます。セクションIDは、CTX_USER_SECTIONSビューを使用して表示できます。

構文1

次の構文を使用して、セクション名によるセクションの削除を行います。

CTX_DDL.REMOVE_SECTION(
group_name       IN    VARCHAR2,
section_name     IN    VARCHAR2
);

group_name

section_nameを削除するセクション・グループの名前を指定します。

section_name

group_nameから削除するセクションの名前を指定します。

構文2

次の構文を使用して、セクションIDでセクションを削除します。

CTX_DDL.REMOVE_SECTION(
group_name     IN    VARCHAR2,
section_id     IN    NUMBER
);

group_name

section_idを削除するセクション・グループの名前を指定します。

section_id

group_nameから削除するセクションのセクションIDを指定します。

例

次の例は、Titleというセクションをhtmgroupから削除します。

begin
ctx_ddl.remove_section('htmgroup', 'Title');
end;

関連項目

"ADD_FIELD_SECTION"

"ADD_SPECIAL_SECTION "

"ADD_ZONE_SECTION "

8.42 REMOVE_STOPCLASS

ストップクラスをストップリストから削除します。

構文

CTX_DDL.REMOVE_STOPCLASS(
stoplist_name  IN   VARCHAR2,
stopclass      IN   VARCHAR2
);

stoplist_name

ストップリストの名前を指定します。

ストップクラス

削除するストップクラスの名前を指定します。

例

次の例は、ストップクラスNUMBERSをストップリストmystopから削除します。

begin
ctx_ddl.remove_stopclass('mystop', 'NUMBERS');
end;

関連項目

"ADD_STOPCLASS "

8.43 REMOVE_STOPTHEME

ストップテーマをストップリストから削除します。

構文

CTX_DDL.REMOVE_STOPTHEME(
stoplist_name   IN   VARCHAR2,
stoptheme       IN   VARCHAR2
);

stoplist_name

ストップリストの名前を指定します。

stoptheme

stoplist_nameから削除するストップテーマを指定します。

例

次の例は、ストップテーマbankingをストップリストmystopから削除します。

begin
ctx_ddl.remove_stoptheme('mystop', 'banking');
end;

関連項目

"ADD_STOPTHEME "

8.44 REMOVE_STOPWORD

ストップワードをストップリストから削除します。ストップワードの削除を索引に反映させる場合は、索引を再構築する必要があります。言語に依存しないストップワードも削除できます。

構文

CTX_DDL.REMOVE_STOPWORD(

stoplist_name  IN   VARCHAR2,
stopword       IN   VARCHAR2,
language       IN   VARCHAR2 default NULL

);

stoplist_name

ストップリストの名前を指定します。

stopword

stoplist_nameから削除するストップワードを指定します。

language

stoplist_nameで指定するストップリストがMULTI_STOPLIST型の場合は、削除するstopwordの言語を指定します。Oracle Textがサポートしている言語のグローバリゼーション・サポート名または略称を指定する必要があります。また、ALLストップワードも削除できます。

例

次の例は、ストップワードbecauseをストップリストmystopから削除します。

begin

ctx_ddl.remove_stopword('mystop','because');

end;

関連項目

"ADD_STOPWORD "

8.45 REMOVE_SUB_LEXER

サブレクサーをマルチレクサー・プリファレンスから削除します。DEFAULTのレクサーは削除できません。言語に依存しないサブレクサーも削除できます。

構文

CTX_DDL.REMOVE_SUB_LEXER(

lexer_name  IN   VARCHAR2,
language    IN   VARCHAR2 default NULL

);

lexer_name

マルチレクサー・プリファレンスの名前、または言語に依存しないサブレクサーの名前を指定します。

language

削除するサブレクサーの言語を指定します。Oracle Textがサポートしている言語のグローバリゼーション・サポート名または略称を指定する必要があります。

例

次の例は、言語germanのサブレクサーgerman_lexerを削除します。

begin

ctx_ddl.remove_sub_lexer('german_lexer','german');

end;

関連項目

"ADD_SUB_LEXER "

8.46 REPLACE_INDEX_METADATA

ローカル・ドメイン索引内のメタデータをグローバル(索引)レベルで置換します。

注意:

ALTER INDEX PARAMETERSコマンドはこのプロシージャと同じ機能を実行し、メタデータ以外も置換できます。このため、グローバル(索引)レベルでメタデータを置換する場合には、できるだけこのプロシージャのかわりにALTER INDEX PARAMETERSを使用するようにしてください。詳細は、「ALTER INDEX PARAMETERS構文」を参照してください。

CTX_REPLACE_INDEX_METADATAは、Oracle Textの将来のリリースでは非推奨になる可能性があります。

構文

CTX_DDL.REPLACE_INDEX_METADATA(
idx_name         IN VARCHAR2,
parameter_string IN VARCHAR2
);

idx_name

メタデータを置換する索引の名前を指定します。

parameter_string

ALTER INDEXに渡すパラメータ文字列を指定します。これは、'REPLACE METADATA'で始まる必要があります。

注意

ALTER INDEX REBUILD PARAMETERS ('REPLACE METADATA')は、索引(グローバル)レベルのローカル・パーティション索引では機能しません。たとえば、索引を再構築せずにフィルタまたはレクサー型などのグローバル・プリファレンスを変更する場合は、ALTER INDEX構文を使用できません。そのため、ALTER INDEXのこの制限を補うメソッドとしてCTX_DDL.REPLACE_INDEX_METADATAが提供されています。また、forward_indexに対してもALTER INDEX REBUILD PARAMETERS ('REPLACE METADATA')は機能しないので、かわりに'REPLACE STORAGE'を使用してください。

CTX_DDL.REPLACE_INDEX_METADATAはローカル・パーティション索引のメタデータの置換を目的としていますが、グローバル非パーティション索引にも使用できます。

パーティション・レベルの同期化のタイプの変更に、REPLACE_INDEX_METADATAは使用できません。つまり、parameter_stringには'REPLACE METADATA SYNC'を指定できません。パーティション・レベルで同期化のタイプを変更するには、ALTER INDEX REBUILD PARTITIONを使用してください。

関連項目

"「ALTER INDEX PARAMETERS Syntax」"

"「ALTER INDEX REBUILD Syntax」"

8.47 SET_ATTRIBUTE

プリファレンスの属性を設定します。このプロシージャは、CTX_DDL.CREATE_PREFERENCE を使用してプリファレンスを作成した後で使用します。

構文

CTX_DDL.SET_ATTRIBUTE(
preference_name IN VARCHAR2,
attribute_name  IN VARCHAR2,
attribute_value IN VARCHAR2
);

preference_name

プリファレンスの名前を指定します。

attribute_name

属性の名前を指定します。

attribute_value

属性の値を指定します。ブール値は、TRUEまたはFALSE、TまたはF、YESまたはNO、YまたはN、ONまたはOFF、あるいは1または0(ゼロ)で指定します。

例

ファイル・データ記憶域の指定

次の例では、索引付けするファイルがオペレーティング・システムに格納されていることをシステムに知らせるfileprefというデータ記憶域プリファレンスを作成します。その後、CTX_DDL.SET_ATTRIBUTE を使用し、PATH属性をディレクトリ/docsに設定します。

begin
ctx_ddl.create_preference('filepref', 'FILE_DATASTORE');
ctx_ddl.set_attribute('filepref', 'PATH', '/docs');
end;

関連項目:

データ記憶域の詳細は、「データストア型」 を参照してください"

SET_ATTRIBUTEの使用例は、「CREATE_PREFERENCE」 を参照してください"

8.48 SET_SEC_GRP_ATTR

名前で指定したセクション・グループに、セクション・グループ固有の属性を追加します。

XML対応をサポートするxml_enableの設定にも使用されます。

構文

CTX_DDL.SET_SEC_GRP_ATTR(
group_name      IN VARCHAR2,
attribute_name  IN VARCHAR2,
attribute_value IN VARCHAR2
);

group_name

セクション・グループ名を指定します。

attribute_name

セクション・グループ属性の名前を指定します。

attribute_value

セクション・グループ属性値を指定します。ブール値は、TRUEまたはFALSE、TまたはF、YESまたはNO、YまたはN、ONまたはOFF、あるいは1または0(ゼロ)で指定します。

例

exec ctx_ddl.create_section_group('secgroup', 'PATH_SECTION_GROUP');
exec ctx_ddl.set_sec_grp_attr('secgroup', 'xml_enable', 'TRUE');
exec ctx_ddl.set_sec_grp_attr('json_group', 'json_enable', 'TRUE';

例8-10 JSON対応例

exec ctx_ddl.create_section_group('json_group', 'PA
TH_SECTION_GROUP');
/*A new 'json_enable' section attribute will be ava
ilable in 12.1.0.2 to enable json mode of context index*/
exec ctx_ddl.set_sec_grp_attr('json_group', 'json_enable', 't');
create table jtab2(j varchar2(4000) check (j is json));
insert into jtab2 values(
'{"person" : {"id" : ''124'', "name" : ''John Smith''}}');
insert into jtab2 values(
'{"person" : {"id" : ''125'', "name" : ''JennifierHwang'',
"college_majors" : [''cs'', ''literature'', ''english '']}}');
insert into jtab2 values(
'{"person" : {"id" : ''126'', "name" : ''Mark Dwight'',
"likeFootBall" : ''Y''}}');
insert into jtab2 values(
'{"person" : {"id" : ''127'', "name" : ''Zhen Hua Liu'',
"MachineLearning" : ''Y''}}');
insert into jtab2 values(
'{"person" : {"id" : ''128'', "name" : ''Jeffery Tang'',
"address" : {"city" : ''San Francisco''}}}');
insert into jtab2 values(
'{"person" : {"id" : ''129'', "name" : ''Cecilia Sutton'',
"address" : {"city" : ''San Mateo''}}}');

commit;

drop index jsn_ctx_idx ;
/* create json enabled text index */
create index jsn2_ctx_idx on jtab2 (j) indextype is
ctxsys.context parameters
(' section group json_group');

関連項目

"CREATE_SECTION_GROUP "

8.49 SET_SECTION_ATTRIBUTE

特定のセクションの属性またはプロパティを指定するには、SET_SECTION_ATTRIBUTEを使用します。

「構文」に示した属性名がサポートされます。属性によっては、トークン化されたセクションにしか適用されません。トークン化されるセクション・タイプは次のとおりです。

- フィールド・セクション

- ゾーン・セクション

- SDATAセクション

構文

CTX_DDL.SET_SECTION_ATTRIBUTE(
group_name   IN VARCHAR2,
section_name IN VARCHAR2,
attribute    IN VARCHAR2,
value        IN VARCHAR2
);

group_name

セクション・グループの名前を指定します。

section_name

セクションの名前を指定します。

attribute

SDATAセクションにこの属性を指定します。

- Visibleセクション属性
この属性が機能するのは、フィールド・セクションのみです。フィールド・セクションに関する注意:

ドキュメントの残りの部分でテキストを参照できるようにするには、TRUEを指定します。デフォルトでは、visibleフラグはFALSEです。これは、フィールド・セクション内のテキストがドキュメントの残りの部分とは別のサブドキュメントとしてOracle Textにより索引付けされることを意味します。ただし、フィールド・セクション内のテキストをドキュメント全体の一部として索引付けする場合は、visibleフラグをTRUEに設定できます。

フィールド・セクションの場合、attributeが、CTX_DDL.ADD_FIELD_SECTIONで指定された値より優先されます。

visible属性をゾーン・セクションに設定しようとすると、エラーがスローされます。

visible属性をトークン化されていないセクションに設定すると、エラーがスローされます。

- save_copy.TrueまたはFalseに設定します。save_copyオプションはどのタイプのセクションでも有効ですが、$DからフェッチされるのはSDATA属性のみです。その他のセクションは、表示の目的でのみ格納されます(save_copyの値によって異なる)。SDATAセクションは、表示の目的では格納されず、フェッチを効率化するために独立して($D表の別の列に)格納されます(save_copyの値によって異なる)。すべてのセクションに共通(SDATAセクションを除く): save_copyの値に応じて、セクションはドキュメント・サービス・プロシージャ(スニペット、マークアップ、ハイライト)で表示または破棄されます。

value

属性の値を指定します。ブール値は、TRUEまたはFALSE、TまたはF、YESまたはNO、YまたはN、ONまたはOFF、あるいは1または0(ゼロ)で指定します。

例

次の例は、フィールド・セクションのvisible属性を有効にします。

begin
ctx_ddl.create_section_group('fieldgroup', 'BASIC_SECTION_GROUP');
ctx_ddl.add_field_section('fieldgroup', 'author', 'AUTHOR');
ctx_ddl.set_section_attribute('fieldgroup', 'author', 'visible', 'true');
end;

注意

CTX_DDL.SET_ATTRIBUTE と同様、このプロシージャもコミットを発行します。

関連項目

『Oracle Textアプリケーション開発者ガイド』の「Oracle Textでのドキュメント・セクションの検索」の章も参照してください。

8.50 SYNC_INDEX

索引を同期化し、元表に対する挿入、更新および削除を実行します。

注意:

CTX_DDL.SYNC_INDEXは暗黙的なコミットを発行するため、CTX_DDL.SYNC_INDEXをトリガーでコールすることはお薦めしません。これを行うと、SYNC_INDEXとコミット後の$R LOBのメンテナンスとの両方で同じ$R LOBを更新しようとするため、エラーが発生する場合があります。

構文

CTX_DDL.SYNC_INDEX(

idx_name       IN  VARCHAR2 DEFAULT NULL
memory          IN VARCHAR2 DEFAULT NULL,
part_name       IN VARCHAR2 DEFAULT NULL,
parallel_degree IN NUMBER DEFAULT 1
maxtime         IN NUMBER DEFAULT NULL,
locking         IN NUMBER DEFAULT LOCK_WAIT
);

idx_name

同期化する索引の名前を指定します。

注意:

idx_nameがnullの場合、変更を保留中のCONTEXTおよびCTXRULE索引はすべて同期されます。この操作を実行するには、ctxsysとして接続する必要があります。各索引または索引パーティションは、順に従って同期化されます。そのため、個々の同期化は、lockingをNOWAITに設定し、maxtimeを0に設定した状態で実行されます。SYNC_INDEXのコール時にlockingまたはmaxtimeパラメータに指定した値は無視されます。ただし、memoryおよびparallel_degreeパラメータは、個々の同期化ごとに渡されます。

memory

同期化に使用するランタイム・メモリー容量を指定します。この値は、DEFAULT_INDEX_MEMORYシステム・パラメータをオーバーライドします。

memoryパラメータは、索引をディスクにフラッシュする前に、Oracle Textが同期化操作に使用するメモリー量を指定します。大きいメモリー量を指定すると、次のような効果が得られます。

- I/Oが削減されるため索引付けのパフォーマンスが向上します。

- 断片化が削減されるため問合せのパフォーマンスとメンテナンスが向上します。

- 2つ目の引数に指定される索引付けのメモリー・サイズは、各パラレル・スレーブに適用されます。たとえば、memory引数が500M、parallel_degreeが2に設定される場合は、パラレルSYNC_INDEXのために少なくとも1GBのメモリーをシステムに用意してください。

小さいメモリー量を指定すると、ディスクI/Oおよび索引の断片化が増加しますが、ランタイム・メモリー容量が不足している場合に有効なことがあります。

part_name

使用している索引がローカル索引の場合は、同期化する索引パーティションの名前を指定します。指定しない場合はエラーが戻されます。

使用している索引がグローバルで、非パーティション索引の場合は、NULLを指定します。これはデフォルトです。

parallel_degree

パラレル同期化に対する並列度を指定します。1より大きい数値を指定すると、パラレル同期化が実行されます。実際の並列度は、リソースによっては多少低くなります。

maxtime

操作に対する提案制限時間を分単位で示します。SYNC_INDEXは、制限時間内でキュー内のドキュメントを可能なかぎり多数処理します。NULLのmaxtime値はCTX_DDL.MAXTIME_UNLIMITEDと同等です。このパラメータは、SYNC_INDEXが索引名なしで起動された場合は無視されます。その場合は、かわりに0のmaxtime値が使用されます。自動同期化(つまり、SYNC ON COMMITまたはSYNC EVERY)では、lockingパラメータは無視されます。

指定した制限時間は概算として処理されます。実際の時間は、指定した時間よりも若干短くまたは長くなることがあります。maxtimeのタイマーは、SYNCロックを取得したときに開始します。

locking

同じ索引または索引パーティションに対して別の同期化がすでに実行されている場合のSYNC_INDEXの対応を構成します。SYNC_INDEXが索引名なしで起動されてlockingが無視される場合は、かわりにLOCK_NOWAITのlocking値が使用されます。自動同期化(つまり、SYNC ON COMMITまたはSYNC EVERY)では、lockingパラメータは無視されます。

lockingのオプションは、次のとおりです。

lockingパラメータ

説明

CTX_DDL.LOCK_WAIT

別の同期化が実行されている場合は、実行中の同期が完了するまで待機してから同期化を開始します。(ロックを取得できない場合は無制限に待機し、maxtime設定は無視されます。)

CTX_DDL.LOCK_NOWAIT

別の同期化が実行されている場合は、エラーなしで即時に戻ります。

CTX_DDL.LOCK_NOWAIT_ERROR

別の同期化が実行されている場合は、「DRG-51313: DMLまたは最適化ロックを待機中にタイムアウトになりました」というエラーが発生します。

例

次の例は、2MBのメモリーで索引myindexを同期化します。

begin

ctx_ddl.sync_index('myindex', '2M');

end;

次の例は、2MBのメモリーでpart1索引パーティションを同期化します。

begin

ctx_ddl.sync_index('myindex', '2M', 'part1');

end;

注意

CTX_DDL.SYNC_INDEXおよびCTX_DDL.OPTIMIZE_INDEXは同時に実行できます。並列度が指定されたCTX_DDL.SYNC_INDEXおよびCTX_DDL.OPTIMIZE_INDEXも同時に実行できます。ただし、並列度が指定されたCTX_DDL.SYNC_INDEXをCTX_DDL.OPTIMIZE_INDEXと同時に実行したり、並列度が指定されたCTX_DDL.SYNC_INDEXを並列度が指定されたCTX_DDL.OPTIMIZE_INDEXと同時に実行しないでください。これらのいずれかの組合せを実行する必要がある場合、エラーは生成されませんが、一方の処理が完了してからもう一方の処理が行われます。

関連項目

"ALTER INDEX "

8.51 UNSET_ATTRIBUTE

プリファレンスから属性の設定を削除します。

構文

CTX_DDL.UNSET_ATTRIBUTE(preference_name varchar2,
attribute_name  varchar2);

preference_name

プリファレンスの名前を指定します。

attribute_name

属性の名前を指定します。

例

代替スペルの使用可能/使用禁止

次の例では、ドイツ語の代替スペルを使用可能にする方法およびCTX_DDL.UNSET_ATTRIBUTEを使用して代替スペルを使用禁止にする方法を示します。

begin
ctx_ddl.create_preference('GERMAN_LEX', 'BASIC_LEXER');
ctx_ddl.set_attribute('GERMAN_LEX', 'ALTERNATE_SPELLING', 'GERMAN');
end;

代替スペルを使用禁止にするには、次のようにCTX_DDL.UNSET_ATTRIBUTEプロシージャを使用します。

begin
ctx_ddl.unset_attribute('GERMAN_LEX', 'ALTERNATE_SPELLING');
end;

関連項目

"SET_ATTRIBUTE "

8.52 UNSET_SEC_GRP_ATTR

セクション・グループ固有の属性を削除します。

構文

CTX_DDL.UNSET_SEC_GRP_ATTR(group_name varchar2,
attribute_name  varchar2);

group_name

セクション・グループの名前を指定します。

attribute_name

属性の名前を指定します。

関連項目

"UNSET_ATTRIBUTE "

8.53 UPDATE_SUB_LEXER

サブレクサーを更新し、そのマルチレクサー・プリファレンス、言語またはサブレクサーを変更します。このプロシージャで、デフォルトのサブレクサーを更新することもできます。このプロシージャは、CTX_DDL.PREFERENCE_IMPLICIT_COMMIT変数と組み合せて使用できます。

関連項目:

"この変数の設定については、「PREFERENCE_IMPLICIT_COMMIT」を参照してください。

構文

UPDATE_SUB_LEXER (
lexer_name     IN   VARCHAR2,
language       IN   VARCHAR2,
sub_lexer      IN   VARCHAR2
);

lexer_name

更新が必要なマルチレクサー・プリファレンスの名前を指定します。

language

サブレクサーの言語名を指定します。デフォルトのサブレクサーにはDEFAULTを使用します。

グローバリゼーション・サポートの言語名、またはサブレクサーの略称を指定する方法は、「言語」を参照してください。

sub_lexer

この言語に対して使用するサブレクサーの名前を指定します。

関連項目

"ADD_SUB_LEXER "

"REMOVE_SUB_LEXER"

8.54 UPDATE_POLICY

CREATE_POLICYを使用して作成されたポリシーを更新します。ポリシーのプリファレンスを置換します。NULLの引数は置換されません。

構文

CTX_DDL.UPDATE_POLICY(
policy_name     IN VARCHAR2,
filter          IN VARCHAR2 DEFAULT NULL,
section_group   IN VARCHAR2 DEFAULT NULL,
lexer           IN VARCHAR2 DEFAULT NULL,
stoplist        IN VARCHAR2 DEFAULT NULL,
wordlist        IN VARCHAR2 DEFAULT NULL);

policy_name

更新するポリシーの名前を指定します。

filter

使用するフィルタ・プリファレンスを指定します。

section_group

使用するセクション・グループを指定します。

lexer

使用するレクサー・プリファレンスを指定します。

stoplist

使用するストップリストを指定します。

wordlist

使用するワードリストを指定します。

8.55 UPDATE_SDATA

UPDATE_SDATAは、索引の指定したSDATA値を変更する索引APIです。元表の列がSDATAセクションとして使用された可能性がある場合、元表の列値を保存または変更できません。

エクスポート/インポート操作では、指定したプリファレンスを使用して元表から索引を再構築します。UPDATE_SDATA APIを使用して行われた変更が元表に存在しないため、エクスポート/インポート操作でこれらの変更は保持されません。

UPDATE_SDATAでは元表ではなく、索引表に追加された一時メタデータを変更します。これは直接メタデータの追加には使用できません。永続的なメタデータのエクスポート/インポートの場合、メタデータ値を含む元表の列を作成します。さらに、元表の列を通じてメタデータを更新します。

構文

CTX_DDL.UPDATE_SDATA(
idx_name     IN VARCHAR2 DEFAULT NULL,
section_name IN VARCHAR2 DEFAULT NULL,
sdata_value  IN sys.anydata,
sdata_rowid  IN rowid,
part_name    IN VARCHAR2 DEFAULT NULL);

idx_name

索引の名前を指定します。

section_name

SDATAセクションの名前を指定します。

sdata_value

新しいSDATA値を指定します。

sdata_rowid

SDATA値の更新が必要なROWIDを指定します。

part_name

該当する場合に、ローカル・パーティション索引の名前を指定します。グローバル索引の場合は、NULLを指定します。

関連項目

"SDATA"

"ADD_SDATA_COLUMN"

"ADD_SDATA_SECTION"

関連項目:

『Oracle Textアプリケーション開発者ガイド』の第8章「Oracle Textでのドキュメント・セクションの検索」

9 CTX_DOCパッケージ

CTX_DOC PL/SQLパッケージには、抽出したテキストのハイライトまたはドキュメントのテーマ・リストの生成など、ドキュメント・サービスを要求するためのプロシージャとファンクションが用意されています。

- CTX_DOCパッケージのプロシージャについて

CTX_DOCパッケージには、次のプロシージャおよびファンクションが含まれています。

名前

説明

FILTER

プレーン・テキストまたはHTML形式のドキュメントを生成します。

GIST

ドキュメントの要点またはテーマ・サマリーを生成します。

HIGHLIGHT

ドキュメントのオフセット情報をハイライト表示するプレーン・テキストまたはHTML形式を生成します。

IFILTER

プレーン・テキスト形式のバイナリ・データを生成します。USER_DATASTOREプロシージャからコールできます。

MARKUP

問合せ語句がハイライト表示されているドキュメントのプレーン・テキストまたはHTML形式を生成します。

PKENCODE

他のCTX_DOCプロシージャで使用するコンポジット・テキストキー文字列(値)をコード化します。

POLICY_FILTER

プレーン・テキストまたはHTML形式のドキュメントを、索引なしで生成します。

POLICY_GIST

ドキュメントの要点またはテーマ・サマリーを、索引なしで生成します。

POLICY_HIGHLIGHT

プレーン・テキストまたはHTML形式のドキュメントをハイライト表示するオフセット情報を、索引なしで生成します。

POLICY_LANGUAGES

テキストのセクションについて言語をフェッチします。

POLICY_MARKUP

プレーン・テキストまたはHTML形式のドキュメントを、索引なしで問合せ語句をハイライト表示して生成します。

POLICY_NOUN_PHRASES

ドキュメントの名詞句を抽出します。

POLICY_PART_OF_SPEECH

ドキュメント内の各単語の品詞を抽出します。

POLICY_SNIPPET

ドキュメントの用語索引を、問合せ語句に基づいて索引なしで生成します。

POLICY_STEMS

テキスト本文にある各単語の語幹を抽出します。

POLICY_THEMES

ドキュメントのテーマのリストを、索引なしで生成します。

POLICY_TOKENS

ドキュメントのすべての索引トークンを、索引なしで生成します。

SET_KEY_TYPE

CTX_DOCプロシージャを設定し、ROWIDまたは主キーのドキュメント識別子を受け取ります。

SNIPPET

ドキュメントの用語索引を問合せ語句に基づいて生成します。

THEMES

ドキュメントのテーマのリストを生成します。

TOKENS

ドキュメントのすべての索引トークンを生成します。

正引き索引の機能を使用して、プロシージャSNIPPET、HIGHLIGHT およびMARKUP のパフォーマンスを向上できます。プロシージャFILTER 、GIST、THEMESTOKENSのパフォーマンスは、Oracle Textのコピーの保存機能を使用して向上できます。

関連項目:

正引き索引およびコピーの保存機能の詳細は、『Oracle Textアプリケーション開発者ガイド』を参照してください。

9.1 CTX_DOCパッケージのプロシージャについて

CTX_DOC PL/SQLパッケージ・プロシージャの多くには2つの種類があります。索引を使用するプロシージャと、索引を使用しないプロシージャです。索引を使用しないプロシージャは、ポリシーベースのプロシージャと呼ばれます。これらのプロシージャは、CONTEXT索引を事前作成せずに単一のドキュメント上でドキュメント・サービスを使用する場合があるために、提供されています。ポリシーベースのプロシージャを使用することで、このような処理を実行できます。

policy_*プロシージャは従来のインメモリー・ドキュメント・サービスをミラー化し、index_nameをpolicy_nameに、textkeyをドキュメントのデータ型であるVARCHAR2、CLOB、BLOBまたはBFILEに置き換えて使用されます。このため、これらのプロシージャを使用してドキュメント・サービス出力を取得するために索引を作成する必要はありません。

文字オフセットおよび長さを生成するプロシージャ(HIGHLIGHT、TOKENSなど)について、Oracle TextはUSC-2コードポイント・セマンティクスに準拠します。

9.2 FILTER

CTX_DOC.FILTERプロシージャを使用して、プレーン・テキストまたはHTML形式のいずれかのドキュメントを生成します。表示されたドキュメントは、結果表またはメモリーのいずれかに格納できます。このプロシージャは、通常、問合せの後でフィルタ処理するドキュメントを決定してから使用します。

注意:

生成されたHTML形式のドキュメントには、図形は含まれていません。

構文1: インメモリーの結果記憶域

exec CTX_DOC.FILTER(
index_name  IN VARCHAR2,
textkey     IN VARCHAR2,
restab      IN OUT NOCOPY CLOB,
plaintext   IN BOOLEAN DEFAULT FALSE,
use_saved_copy IN NUMBER DEFAULT CTX_DOC.SAVE_COPY_FALLBACK);

exec  CTX_DOC.HIGHLIGHT_CLOB_QUERY(
index_name IN VARCHAR2,
textkey IN VARCHAR2,
text_query IN CLOB,
restab IN OUT NOCOPY HIGHLIGHT_TAB,
plaintext IN BOOLEAN DEFAULT FALSE,
use_saved_copy IN NUMBER DEFAULT CTX_DOC.SAVE_COPY_FALLBACK);

構文2: 結果表記憶域

exec CTX_DOC.FILTER(
index_name  IN VARCHAR2,
textkey     IN VARCHAR2,
restab      IN VARCHAR2,
query_id    IN NUMBER DEFAULT 0,
plaintext   IN BOOLEAN DEFAULT FALSE,
use_saved_copy IN NUMBER DEFAULT CTX_DOC.SAVE_COPY_FALLBACK);

exec  CTX_DOC.HIGHLIGHT_CLOB_QUERY(
index_name IN VARCHAR2,
textkey IN VARCHAR2,
text_query IN CLOB,
restab IN VARCHAR2,
query_id IN NUMBER DEFAULT 0,
plaintext IN BOOLEAN DEFAULT FALSE,
use_saved_copy IN NUMBER DEFAULT CTX_DOC.SAVE_COPY_FALLBACK);

index_name

textkeyで識別されるドキュメントを含むテキスト列に関連する索引の名前を指定します。

textkey

一意のドキュメントのID(通常は主キー)を指定します。

textkeyパラメータは、次のいずれかです。

- 単一列の主キーの値。

- コンポジット(複数列)主キーのコード化された仕様。CTX_DOC.PKENCODE を使用します。

- ドキュメントを含む行のROWID。

主キーとROWIDの識別を切り替えるには、CTX_DOC.SET_KEY_TYPEを使用します。

restab

このプロシージャで、マークアップされたテキストを表またはインメモリーCLOBのどちらに格納するかを指定できます。

結果を表に格納するには、表の名前を指定します。このコールの実行前に、結果を格納する表が存在している必要があります。

関連項目:

フィルタ結果表の構造の詳細は、「Oracle Text結果表」の「フィルタ表」を参照してください。

結果をメモリーに格納するには、CLOBロケータの名前を指定します。restabがNULLの場合は、一時CLOBが割り当てられて戻ります。使用後は、DBMS_LOB.FREETEMPORARY()でロケータの割当てを解除する必要があります。

restabがNULLでない場合は、操作の前にCLOBが切り捨てられます。

query_id

restabに挿入した行の識別に使用する識別子を指定します。

query_idが指定されていないか、またはNULLに設定されている場合、デフォルトは0(ゼロ)です。restabに指定されている表を手動で切り捨てる必要があります。

plaintext

プレーン・テキスト形式のドキュメントを生成するには、TRUEを指定します。AUTO_FILTERフィルタを使用している場合またはHTMLドキュメントを索引付けしている場合は、FALSEを指定してHTML形式のドキュメントを生成します。

use_saved_copy

$D表を参照してドキュメントのコピーをフェッチするかどうかと、$D表でドキュメントのコピーが取得できないときにどんなアクションを実行するかを指定します。

use_saved_copyパラメータに指定できる値は、次のいずれかです。

- CTX_DOC.SAVE_COPY_FALLBACK: $D表からドキュメントのコピーをフェッチします。ドキュメントのコピーが$D表に存在しない場合は、データストアからドキュメントをフェッチします。

- CTX_DOC.SAVE_COPY_ERROR: $D表からドキュメントのコピーをフェッチします。ドキュメントのコピーが$D表に存在しない場合は、エラー・メッセージを表示します。$D表でドキュメントのコピーが取得できないときに特定のフォールバック・ロジックを実装する場合には、この値を指定してください。

- CTX_DOC.SAVE_COPY_IGNORE: ドキュメントを常にデータストアからフェッチします。

デフォルト値はCTX_DOC.SAVE_COPY_FALLBACKです。

例

インメモリー・フィルタ

次のコードは、ドキュメントをメモリー内のHTMLにフィルタ処理する方法を示しています。

declare
mklob clob;
amt number := 40;
line varchar2(80);

begin
ctx_doc.filter('myindex','1', mklob, FALSE);
-- mklob is NULL when passed-in, so ctx-doc.filter will allocate a temporary
-- CLOB for us and place the results there.
dbms_lob.read(mklob, amt, 1, line);
dbms_output.put_line('FIRST 40 CHARS ARE:'||line);
-- have to de-allocate the temp lob
dbms_lob.freetemporary(mklob);
end;

フィルタ処理されたドキュメントを格納するために、次のようにフィルタ結果表を作成します。

create table filtertab (query_id  number,
document  clob);

テキストキー20でプレーン・テキスト形式のドキュメントを取得するには、次の文を入力します。

begin
ctx_doc.filter('newsindex', '20', 'filtertab', '0', TRUE);
end;

9.3 GIST

ドキュメントの要点およびテーマ・サマリーを生成するには、CTX_DOC.GISTプロシージャを使用します。段落レベルまたは文レベルの要点またはテーマ・サマリーを生成できます。

構文1: インメモリー記憶域

CTX_DOC.GIST(

index_name    IN VARCHAR2,
textkey       IN VARCHAR2,
restab        IN OUT CLOB,
glevel        IN VARCHAR2 DEFAULT 'P',
pov           IN VARCHAR2 DEFAULT 'GENERIC',
numParagraphs IN NUMBER DEFAULT 16,
maxPercent    IN NUMBER DEFAULT 10,
num_themes    IN NUMBER DEFAULT 50,
use_saved_copy IN NUMBER DEFAULT CTX_DOC.SAVE_COPY_FALLBACK);

構文2: 結果表記憶域

CTX_DOC.GIST(

index_name    IN VARCHAR2,
textkey       IN VARCHAR2,
restab        IN VARCHAR2,
query_id      IN NUMBER DEFAULT 0,
glevel        IN VARCHAR2 DEFAULT 'P',
pov           IN VARCHAR2 DEFAULT NULL,
numParagraphs IN NUMBER DEFAULT 16,
maxPercent    IN NUMBER DEFAULT 10,
num_themes    IN NUMBER DEFAULT 50,
use_saved_copy IN NUMBER DEFAULT CTX_DOC.SAVE_COPY_FALLBACK);

index_name

textkeyで識別されるドキュメントを含むテキスト列に関連する索引の名前を指定します。

textkey

一意のドキュメントのID(通常は主キー)を指定します。

textkeyパラメータは、次のいずれかです。

- 単一列の主キーの値。

- コンポジット(複数列)主キーのコード化された仕様。コンポジット・テキストキーをコード化するには、CTX_DOC.PKENCODEプロシージャを使用します。

- ドキュメントを含む行のROWID。

主キーとROWIDの識別を切り替えるには、CTX_DOC.SET_KEY_TYPEを使用します。

restab

このプロシージャで、要点およびテーマ・サマリーを表またはインメモリーCLOBのどちらに格納するかを指定します。

結果を表に格納するには、既存の表の名前を指定します。

関連項目:

「Oracle Text結果表」の「要点表」

結果をメモリーに格納するには、CLOBロケータの名前を指定します。restabがNULLの場合は、一時CLOBが割り当てられて戻ります。使用後は、ロケータの割当てを解除する必要があります。

restabがNULLでない場合は、操作の前にCLOBが切り捨てられます。

query_id

restabに挿入した行の識別に使用する識別子を指定します。

glevel

生成する要点またはテーマ・サマリーのタイプを指定します。有効な値は、次のとおりです。

- 段落の場合はP

- 文の場合はS

デフォルトはPです。

pov

要点または単一のテーマ・サマリーを生成するかどうかを指定します。生成される要点またはテーマ・サマリーのタイプ(文レベルまたは段落レベル)は、glevelに指定した値によって決まります。

ドキュメント全体の要点を生成するには、povに値GENERICを指定します。ドキュメントの単一のテーマに対するテーマ・サマリーを生成するには、そのテーマをpovの値として指定します。

結果表記憶域を使用しているときに、povの値を指定しない場合、このプロシージャはドキュメントに対して、全体の要点に加えて最大50個までのテーマ・サマリーを戻します。

インメモリーの結果記憶域をCLOBに対して使用する場合は、povを指定する必要があります。ただし、povを指定しない場合、このプロシージャはドキュメントの全体の要点のみを生成します。

注意:

povパラメータでは、大/小文字が区別されます。ドキュメントの要点を戻すには、すべて大文字で「GENERIC」を指定します。テーマ・サマリーを戻すには、ドキュメントに対して生成されたとおりのテーマを正確に指定します。

ドキュメントに対してTHEMESで生成されたテーマのみを、povの入力として使用できます。

numParagraphs

ドキュメントの要点またはテーマ・サマリーに対して選択されたドキュメントの段落(または文)の最大数を指定します。デフォルトは16です。

注意:

numParagraphsパラメータが使用されるのは、このパラメータによって生成される要点またはテーマ・サマリーのサイズが、maxPercentパラメータによって生成される要点またはテーマ・サマリーのサイズよりも小さいときのみです。

つまり、システムは、常に最小サイズの要点またはテーマ・サマリーを戻します。

maxPercent

ドキュメントの要点またはテーマ・サマリーに対して選択されたドキュメントの段落(または文)の最大数を、ドキュメントの合計段落数(または合計文数)に対する割合で指定します。デフォルトは10です。

注意:

numParagraphsパラメータが使用されるのは、このパラメータによって生成される要点またはテーマ・サマリーのサイズが、maxPercentパラメータによって生成される要点またはテーマ・サマリーのサイズよりも小さいときのみです。

つまり、システムは、常に最小サイズの要点またはテーマ・サマリーを戻します。

num_themes

povの値を指定しない場合は、生成するテーマ・サマリーの数を指定します。たとえば、10を指定すると、トップ10のテーマ・サマリーが戻ります。デフォルトは50です。

0(ゼロ)またはNULLを指定すると、ドキュメント内の全テーマが戻ります。51以上のテーマがドキュメントに格納されている場合、概念階層が表示されるのは、トップ50のテーマのみです。

use_saved_copy

$D表を参照してドキュメントのコピーをフェッチするかどうかと、$D表でドキュメントのコピーが取得できないときにどんなアクションを実行するかを指定します。

use_saved_copyパラメータに指定できる値は、次のいずれかです。

- CTX_DOC.SAVE_COPY_FALLBACK: $D表からドキュメントのコピーをフェッチします。ドキュメントのコピーが$D表に存在しない場合は、データストアからドキュメントをフェッチします。

- CTX_DOC.SAVE_COPY_ERROR: $D表からドキュメントのコピーをフェッチします。ドキュメントのコピーが$D表に存在しない場合は、エラー・メッセージを表示します。$D表でドキュメントのコピーが取得できないときに特定のフォールバック・ロジックを実装する場合には、この値を指定してください。

- CTX_DOC.SAVE_COPY_IGNORE: ドキュメントを常にデータストアからフェッチします。

デフォルト値はCTX_DOC.SAVE_COPY_FALLBACKです。

例

インメモリー要点

次の例では、10個以内の段落のデフォルト・サイズでない全体の要点表を生成します。結果はCLOBロケータの中のメモリーに格納されます。使用後、コードは戻されたCLOBロケータの割当てを解除します。

set serveroutput on;
declare
gklob clob;
amt number := 40;
line varchar2(80);

begin
ctx_doc.gist('newsindex','34',gklob, pov => 'GENERIC',numParagraphs => 10);
-- gklob is NULL when passed-in, so ctx-doc.gist will allocate a temporary
-- CLOB for us and place the results there.

dbms_lob.read(gklob, amt, 1, line);
dbms_output.put_line('FIRST 40 CHARS ARE:'||line);
-- have to de-allocate the temp lob
dbms_lob.freetemporary(gklob);
end;

結果表の要点

次の例では、要点表CTX_GISTを作成します。

create table CTX_GIST (query_id  number,
pov       varchar2(80),
gist      CLOB);

要点およびテーマ・サマリー

次の例では、ドキュメント34に対するデフォルト・サイズの段落レベルの要点と、ドキュメント内の全テーマに対するトップ10のテーマ・サマリーを戻します。

begin
ctx_doc.gist('newsindex','34','CTX_GIST', 1, num_themes=>10);
end;

次の例では、10個以内の段落のデフォルト・サイズでない要点表を生成します。

begin
ctx_doc.gist('newsindex','34','CTX_GIST',1,pov =>'GENERIC',numParagraphs=>10);
end;

次の例では、段落数がドキュメントの合計段落数の10パーセント以下である要点表を生成します。

begin
ctx_doc.gist('newsindex','34','CTX_GIST',1,pov => 'GENERIC',  maxPercent => 10);
end;

テーマ・サマリー

次の例では、ドキュメント34のinsectsに対する段落レベルのテーマ・サマリーを戻します。デフォルト・サイズのテーマ・サマリーが戻されます。

begin
ctx_doc.gist('newsindex','34','CTX_GIST',1, pov => 'insects');
end;

9.4 HIGHLIGHT

CTX_DOC.HIGHLIGHTプロシージャを使用して、ドキュメントのハイライト・オフセットを生成します。オフセット情報は、指定する問合せを満たすドキュメント内の語句に対して生成されます。これらのハイライト表示される語句は、ワード問合せを満たすワードまたはABOUT問合せを満たすテーマのいずれかです。

プレーン・テキスト形式またはHTML形式のいずれかのドキュメントに対して、ハイライト・オフセットを生成できます。CTX_DOC.HIGHLIGHTが戻す表には、元のドキュメントにあった図形は含まれていません。オフセット情報は、CTX_DOC.FILTER でフィルタ処理された同じドキュメントに適用します。

このプロシージャは、通常、問合せの後で処理するドキュメントを決めてから使用します。ハイライト・オフセットは、インメモリーPL/SQL表または結果表のいずれかに格納できます。

問合せ時に主にドキュメントのフィルタ処理に使用される述語が含まれる問合せの場合、ハイライト中に述語は無視されることに注意してください。これはSNIPPET、MARKUPおよびHIGHLIGHTプロシージャに適用されます。次の述語は、この目的でフィルタ述語として扱われ、XML属性内を検索します。SDATA、HASPATHおよびWITHIN/INPATH。

索引が不要なこのプロシージャの形式は、「CTX_DOC.POLICY_HIGHLIGHT」を参照してください。

Oracle Textの正引き索引の機能を使用して、プロシージャSNIPPET、HIGHLIGHTおよびMARKUP のパフォーマンスを向上できます。

関連項目:

正引き索引の詳細は、『Oracle Textアプリケーション開発者ガイド』を参照してください。

構文1: インメモリーの結果記憶域

exec CTX_DOC.HIGHLIGHT(
index_name  IN VARCHAR2,
textkey     IN VARCHAR2,
text_query  IN VARCHAR2,
restab      IN OUT NOCOPY HIGHLIGHT_TAB,
plaintext   IN BOOLEAN  DEFAULT FALSE,
use_saved_copy IN NUMBER DEFAULT CTX_DOC.SAVE_COPY_FALLBACK);

exec CTX_DOC.HIGHLIGHT_CLOB_QUERY(
index_name  IN VARCHAR2,
textkey     IN VARCHAR2,
text_query  IN CLOB,
restab      IN OUT NOCOPY HIGHLIGHT_TAB,
plaintext   IN BOOLEAN DEFAULT FALSE,
use_saved_copy IN NUMBER DEFAULT CTX_DOC.SAVE_COPY_FALLBACK);

構文2: 結果表記憶域

exec CTX_DOC.HIGHLIGHT(
index_name  IN VARCHAR2,
textkey     IN VARCHAR2,
text_query  IN VARCHAR2,
restab      IN VARCHAR2,
query_id    IN NUMBER   DEFAULT 0,
plaintext   IN BOOLEAN  DEFAULT FALSE,
use_saved_copy IN NUMBER DEFAULT CTX_DOC.SAVE_COPY_FALLBACK);

exec CTX_DOC.HIGHLIGHT_CLOB_QUERY(
index_name  IN VARCHAR2,
textkey     IN VARCHAR2,
text_query  IN CLOB,
restab      IN VARCHAR2,
query_id    IN NUMBER DEFAULT 0,
plaintext   IN BOOLEAN DEFAULT FALSE,
use_saved_copy IN NUMBER DEFAULT CTX_DOC.SAVE_COPY_FALLBACK);

index_name

textkeyで識別されるドキュメントを含むテキスト列に関連する索引の名前を指定します。

textkey

一意のドキュメントのID(通常は主キー)を指定します。

textkeyパラメータは、次のいずれかです。

- 単一列の主キーの値。

- コンポジット(複数列)主キーのコード化された仕様。CTX_DOC.PKENCODE プロシージャを使用します。

- ドキュメントを含む行のROWID。

主キーとROWIDの識別を切り替えるには、CTX_DOC.SET_KEY_TYPEを使用します。

text_query

ドキュメントを取り出すために使用された元の問合せ式を指定します。NULLの場合、ハイライトは生成されません。

text_queryにワイルド・カード、ステミング、ファジー・マッチングが指定されていて、結果としてストップワードが戻る場合、HIGHLIGHTはストップワードをハイライト表示しません。

text_queryにTHRESHOLD演算子がある場合、その演算子は無視されます。HIGHLIGHTプロシージャは、常に結果セット全体に対するハイライト情報を戻します。

restab

このプロシージャが、ハイライト・オフセットを表またはインメモリーPL/SQL表のいずれかに格納することを指定できます。

結果を表に格納するには、表の名前を指定します。このプロシージャのコール前に、表が存在している必要があります。

関連項目:

ハイライト結果表の構造の詳細は、「Oracle Text結果表」の「ハイライト表」を参照してください。

結果をインメモリー表に格納するには、CTX_DOC.HIGHLIGHT_TAB型のインメモリー表の名前を指定します。HIGHLIGHT_TABデータ型は、次のように定義されます。

type highlight_rec is record (
offset number,
length number
);
type highlight_tab is table of highlight_rec index by binary_integer;

CTX_DOC.HIGHLIGHTは、操作の前にHIGHLIGHT_TABを消去します。

query_id

restabに挿入した行の識別に使用する識別子を指定します。query_idが指定されていないか、またはNULLに設定されている場合、デフォルトは0(ゼロ)です。restabに指定されている表を手動で切り捨てる必要があります。

plaintext

プレーン・テキスト・オフセットのドキュメントを生成するには、TRUEを指定します。AUTO_FILTERフィルタを使用している場合またはHTMLドキュメントを索引付けしている場合は、FALSEを指定してドキュメントのHTMLオフセットを生成します。

use_saved_copy

$D表を参照してドキュメントのコピーをフェッチするかどうかと、$D表でドキュメントのコピーが取得できないときにどんなアクションを実行するかを指定します。デフォルト値はCTX_DOC.SAVE_COPY_FALLBACKです。

use_saved_copyパラメータに指定できる値は、次のいずれかです。

- CTX_DOC.SAVE_COPY_FALLBACK: $D表からドキュメントのコピーをフェッチします。ドキュメントのコピーが$D表に存在しない場合は、データストアからドキュメントをフェッチします。

- CTX_DOC.SAVE_COPY_ERROR: $D表からドキュメントのコピーをフェッチします。ドキュメントのコピーが$D表に存在しない場合は、エラー・メッセージを表示します。$D表でドキュメントのコピーが取得できないときに特定のフォールバック・ロジックを実装する場合には、この値を指定してください。

- CTX_DOC.SAVE_COPY_IGNORE: ドキュメントを常にデータストアからフェッチします。

例

ハイライト表の作成

ハイライト・オフセット情報を格納するために、ハイライト表を作成します。

create table hightab(query_id number,
offset number,
length number);

フィルタが存在する状態でのワード・ハイライト

次のような問合せでハイライトを実行すると、キーワード(この例では「dog」)のみハイライトされます。AND演算子の後のフィルタ述語は無視されます。

begin
ctx_doc.highlight('newsindex', '20', 'dog AND cat WITHIN titlesection@name', 'hightab', 0, FALSE);
end;
begin
ctx_doc.highlight('newsindex', '20', 'dog AND SDATA(price > 100)', 'hightab', 0, FALSE);
end;

ワード・ハイライト・オフセット

ドキュメント20のdogという語句に対するHTMLハイライト・オフセット情報を取得するには、次の問合せを発行します。

begin
ctx_doc.highlight('newsindex', '20', 'dog', 'hightab', 0, FALSE);
end;

begin
ctx_doc.highlight('newsindex', '20', 'dog AND cat WITHIN titlesection', 'hightab', 0, FALSE);
end;

テーマ・ハイライト・オフセット

索引newsindexにテーマ・コンポーネントがある場合は、次の問合せを発行することによって、politicsというテーマ問合せに関するHTMLハイライト・オフセット情報を取得します。

begin
ctx_doc.highlight('newsindex', '20', 'about(politics)', 'hightab', 0, FALSE);
end;

この文に対する出力は、ドキュメントのpoliticsのテーマを表すハイライト表示されたワードおよび句に対するオフセットです。

制限事項

CTX_DOC.HIGHLIGHTでは、問合せテンプレートの使用やXML属性値のハイライト表示はサポートされていません。

関連項目

"POLICY_HIGHLIGHT"

"MARKUP "

"SNIPPET"

9.5 IFILTER

バイナリ・データをテキストにフィルタ処理します。

このプロシージャは、バイナリ・データ(BLOB IN)を取り出し、そのデータをAUTO_FILTERフィルタでフィルタ処理し、そのテキスト形式データをCLOBに書き込みます。(元のドキュメント内の図形はすべて無視されます。)CTX_DOC.IFILTERではセーフ・コールアウトを使用しており、索引は不要です。CTX_DOC.FILTERの場合は、索引が必要です。

注意:

このプロシージャは、将来のリリースではサポートされません。かわりに、CTX_DOC.POLICY_FILTERを使用する必要があります。

要件

CTX_DOC.IFILTERでは、セーフ・コールアウト・メカニズムを使用しているため、extprocエージェントの起動には、SQL*Netリスナーの実行と構成が必要です。

構文

CTX_DOC.IFILTER(data IN BLOB, text IN OUT NOCOPY CLOB);

data

フィルタ処理するバイナリ・データを指定します。

text

宛先のCLOBを指定します。CLOBには、フィルタ処理済のデータが置かれます。このパラメータは、書込み可能な有効なCLOBロケータであることが必要です。NULLまたは書込み禁止のCLOBを渡すと、エラーになります。フィルタ処理済のテキストは、既存のデータがある場合、その末尾に追加されます。

例

MATCHES問合せでは、VARCHAR2またはCLOBのドキュメント・テキストを使用できます。BLOB入力は使用できないため、フィルタ処理済のドキュメントに直接一致させることはできません。かわりに、AUTO_FILTERフィルタを使用してバイナリ・コンテンツをCLOBにフィルタ処理する必要があります。次の例は、ドキュメント・データがバインド変数:doc_blob内にあることを前提としています。

declare
doc_text clob;
begin
-- create a temporary CLOB to hold the document text
dbms_lob.createtemporary(doc_text, TRUE, DBMS_LOB.SESSION);

-- call ctx_doc.ifilter to filter the BLOB to CLOB data
ctx_doc.ifilter(:doc_blob, doc_text);

-- now do the matches query using the CLOB version
for c1 in (select * from queries where matches(query_string, doc_text)>0)
loop
-- do what you need to do here
end loop;

dbms_lob.freetemporary(doc_text);
end;

9.6 MARKUP

CTX_DOC.MARKUPプロシージャは、問合せ指定およびドキュメントのテキストキーを取り出し、問合せ語句がマークアップされた形式のドキュメントを戻します。これらのマークアップされた語句は、ワード問合せを満たすワードまたはABOUT問合せを満たすテーマのいずれかです。

マークアップされた出力は、プレーン・テキストまたはHTMLのいずれかに設定できます。CTX_DOC.MARKUPが戻すマークアップ・ドキュメントには、元のドキュメントにあった図形は含まれていません。

ハイライト表示された語句をマークするには、事前定義済のタグセットの1つ(HTMLナビゲーションを可能にするタグ順序を含む)を使用できます。

CTX_DOC.MARKUPは、通常、問合せの後で処理するドキュメントを決めてから使用します。

マークアップされたドキュメントは、メモリーまたは結果表のいずれかに格納できます。

問合せ時に主にドキュメントのフィルタ処理に使用される述語が含まれる問合せの場合、MARKUP中に述語は無視されることに注意してください。次の述語は、この目的でフィルタ述語として扱われ、XML属性内を検索します。SDATA、HASPATHおよびWITHIN/INPATH。

索引が不要なこのプロシージャの形式は、「CTX_DOC.POLICY_MARKUP」を参照してください。

Oracle Textの正引き索引の機能を使用して、プロシージャSNIPPET、HIGHLIGHT およびMARKUPのパフォーマンスを向上できます。

関連項目:

正引き索引の詳細は、『Oracle Textアプリケーション開発者ガイド』を参照してください。

注意:

Oracle TextによってCTX.DOC.MARKUPから戻される出力は、常に整形式であるとはかぎりません。特に、すでにHTMLまたはXMLを使用してマークアップされている語句については保証できません。特に、マークアップ・タグに予期しないネストが存在する場合、このようになることがあります。

構文1: インメモリーの結果記憶域

exec CTX_DOC.MARKUP(

index_name     IN VARCHAR2,
textkey        IN VARCHAR2,
text_query     IN VARCHAR2,
restab         IN OUT NOCOPY CLOB,
plaintext      IN BOOLEAN   DEFAULT FALSE,
tagset         IN VARCHAR2  DEFAULT 'TEXT_DEFAULT',
starttag       IN VARCHAR2  DEFAULT NULL,
endtag         IN VARCHAR2  DEFAULT NULL,
prevtag        IN VARCHAR2  DEFAULT NULL,
nexttag        IN VARCHAR2  DEFAULT NULL,
use_saved_copy IN NUMBER DEFAULT CTX_DOC.SAVE_COPY_FALLBACK);

exec CTX_DOC.MARKUP_CLOB_QUERY(
index_name     IN VARCHAR2,
textkey        IN VARCHAR2,
text_query     IN CLOB,
restab         IN OUT NOCOPY CLOB,
plaintext      IN BOOLEAN DEFAULT FALSE,
tagset         IN VARCHAR2 DEFAULT 'TEXT_DEFAULT',
starttag       IN VARCHAR2 DEFAULT NULL,
endtag         IN VARCHAR2 DEFAULT NULL,
prevtag        IN VARCHAR2 DEFAULT NULL,
nexttag        IN VARCHAR2 DEFAULT NULL,
use_saved_copy IN NUMBER DEFAULT CTX_DOC.SAVE_COPY_FALLBACK);

構文2: 結果表記憶域

exec CTX_DOC.MARKUP(

index_name     IN VARCHAR2,
textkey        IN VARCHAR2,
text_query     IN VARCHAR2,
restab         IN VARCHAR2,
query_id       IN NUMBER    DEFAULT 0,
plaintext      IN BOOLEAN   DEFAULT FALSE,
tagset         IN VARCHAR2  DEFAULT 'TEXT_DEFAULT',
starttag       IN VARCHAR2  DEFAULT NULL,
endtag         IN VARCHAR2  DEFAULT NULL,
prevtag        IN VARCHAR2  DEFAULT NULL,
nexttag        IN VARCHAR2  DEFAULT NULL,
use_saved_copy IN NUMBER DEFAULT CTX_DOC.SAVE_COPY_FALLBACK);

exec CTX_DOC.MARKUP_CLOB_QUERY(
index_name     IN VARCHAR2,
textkey        IN CLOB,
text_query     IN VARCHAR2,
restab         IN VARCHAR2,
query_id       IN NUMBER DEFAULT 0,
plaintext      IN BOOLEAN DEFAULT FALSE,
tagset         IN VARCHAR2 DEFAULT 'TEXT_DEFAULT',
starttag       IN VARCHAR2 DEFAULT NULL,
endtag         IN VARCHAR2 DEFAULT NULL,
prevtag        IN VARCHAR2 DEFAULT NULL,
nexttag        IN VARCHAR2 DEFAULT NULL,
use_saved_copy IN NUMBER DEFAULT CTX_DOC.SAVE_COPY_FALLBACK);

index_name

textkeyで識別されるドキュメントを含むテキスト列に関連する索引の名前を指定します。

textkey

一意のドキュメントのID(通常は主キー)を指定します。

textkeyパラメータは、次のいずれかです。

- 単一列の主キーの値。

- コンポジット(複数列)主キーのコード化された仕様。CTX_DOC.PKENCODE プロシージャを使用します。

- ドキュメントを含む行のROWID。

主キーとROWIDの識別を切り替えるには、CTX_DOC.SET_KEY_TYPEを使用します。

text_query

ドキュメントを取り出すために使用された元の問合せ式を指定します。

text_queryにワイルド・カード、ステミング、ファジー・マッチングが指定されていて、結果としてストップワードが戻る場合、MARKUPはストップワードをハイライト表示しません。

text_queryにTHRESHOLD演算子がある場合、その演算子は無視されます。MARKUPプロシージャは、常に結果セット全体に対するハイライト情報を戻します。

restab

このプロシージャで、マークアップされたテキストを表またはインメモリーCLOBのどちらに格納するかを指定できます。

結果を表に格納するには、表の名前を指定します。このプロシージャのコール前に、結果表が存在している必要があります。

関連項目:

マークアップ結果表の構造の詳細は、「Oracle Text結果表」の「マークアップ表」を参照してください。

結果をメモリーに格納するには、CLOBロケータの名前を指定します。restabがNULLの場合は、一時CLOBが割り当てられて戻ります。使用後は、ロケータの割当てを解除する必要があります。

restabがNULLでない場合は、操作の前にCLOBが切り捨てられます。

query_id

restabに挿入した行の識別に使用する識別子を指定します。

query_idが指定されていないか、またはNULLに設定されている場合、デフォルトは0(ゼロ)です。restabに指定されている表を手動で切り捨てる必要があります。

plaintext

プレーン・テキストのマークアップ・ドキュメントを生成するには、TRUEを指定します。AUTO_FILTERフィルタを使用している場合またはHTMLドキュメントを索引付けしている場合は、FALSEを指定してマークアップされたHTML形式のドキュメントを生成します。

tagset

次の事前定義済のタグセットの1つを指定します。この表の2列目および3列目は、各tagsetに対して定義された4つの異なるタグを示します。

タグセット

タグ

タグ値

TEXT_DEFAULT

starttag

<<<

TEXT_DEFAULT

endtag

>>>

HTML_DEFAULT

starttag

<B>

HTML_DEFAULT

endtag

</B>

HTML_NAVIGATE

starttag

<A NAME=ctx%CURNUM><B>

HTML_NAVIGATE

endtag

</B></A>

HTML_NAVIGATE

prevtag

<A HREF=#ctx%PREVNUM>&lt;</A>

HTML_NAVIGATE

nexttag

<A HREF=#ctx%NEXTNUM>&gt;</A>

starttag

ハイライト表示された語句の開始を示すために、MARKUPによって挿入された文字を指定します。

ハイライト表示されたワードに対するstarttag、endtag、prevtagおよびnexttagの順序は、次のとおりです。

... prevtag starttag word endtag nexttag...

endtag

ハイライト表示された語句の終了を示すために、MARKUPによって挿入された文字を指定します。

prevtag

前のハイライト表示された部分にユーザーをナビゲートするタグを定義するマークアップ順序を指定します。

マークアップ順序prevtagおよびnexttagで、動的に設定される次のオフセット変数を指定できます。

オフセット変数

値

%CURNUM

現在のオフセット番号

%PREVNUM

前のオフセット番号

%NEXTNUM

次のオフセット番号

例については、HTML_NAVIGATE ""タグセット""の記述を参照してください。

nexttag

次のハイライト表示された部分にユーザーをナビゲートするタグを定義するマークアップ順序を指定します。

マークアップ順序内で、prevtagに使用するものと同じオフセット変数を使用できます。例については、""prevtag""およびHTML_NAVIGATE""タグセット""の記述を参照してください。

use_saved_copy

$D表を参照してドキュメントのコピーをフェッチするかどうかと、$D表でドキュメントのコピーが取得できないときにどんなアクションを実行するかを指定します。

use_saved_copyパラメータに指定できる値は、次のいずれかです。

- CTX_DOC.SAVE_COPY_FALLBACK: $D表からドキュメントのコピーをフェッチします。ドキュメントのコピーが$D表に存在しない場合は、データストアからドキュメントをフェッチします。

- CTX_DOC.SAVE_COPY_ERROR: $D表からドキュメントのコピーをフェッチします。ドキュメントのコピーが$D表に存在しない場合は、エラー・メッセージを表示します。$D表でドキュメントのコピーが取得できないときに特定のフォールバック・ロジックを実装する場合には、この値を指定してください。

- CTX_DOC.SAVE_COPY_IGNORE: ドキュメントを常にデータストアからフェッチします。

デフォルト値はCTX_DOC.SAVE_COPY_FALLBACKです。

例

インメモリー・マークアップ

次のコードは、ドキュメント(the dog chases the cat)を取り出し、割り当てられたマークアップを実行し、結果をメモリーに格納します。

set serveroutput on

drop table mark_tab;
create table mark_tab (id number primary key, text varchar2(80) );
insert into mark_tab values ('1', 'The dog chases the cat.');

create index mark_tab_idx on mark_tab(text)
indextype is ctxsys.context parameters
('filter ctxsys.null_filter');

declare
mklob clob;
amt number := 40;
line varchar2(80);

begin
ctx_doc.markup('mark_tab_idx','1','dog AND cat', mklob);
-- mklob is NULL when passed-in, so ctx_doc.markup will
-- allocate a temporary CLOB for us and place the results there.
dbms_lob.read(mklob, amt, 1, line);
dbms_output.put_line('FIRST 40 CHARS ARE:'||line);
-- have to de-allocate the temp lob
dbms_lob.freetemporary(mklob);
end;
/

この例の出力には、マークアップ・ドキュメントの外観が示されます。

FIRST 40 CHARS ARE:  The <<<dog>>> chases the <<<cat>>>.

マークアップ表

マークアップされたドキュメントを格納するために、次のようにハイライト・マークアップ表を作成します。

create table markuptab (query_id  number,
document  clob);

HTMLのワード・ハイライト

MARKUPの結果を表に格納することもできます。ドキュメント23のdogまたはcatというワードに対するHTMLハイライト・マークアップを作成するには、次の例を入力します。

begin
ctx_doc.markup(index_name => 'my_index',
textkey => '23',
text_query => 'dog|cat',
restab => 'markuptab',
query_id => '1',
tagset => 'HTML_DEFAULT');
end;

begin
ctx_doc.markup(index_name => 'my_index',
textkey => '23',
text_query => 'dog AND cat WITHIN titlesection@name',
restab => 'markuptab',
query_id => '1',
tagset => 'HTML_DEFAULT');
end;

フィルタが存在する状態でのワード・ハイライト

次のような問合せでマークアップを実行すると、キーワード(この例では「dog」)のみマークアップされます。AND演算子の後のフィルタ述語は無視されます。

begin
ctx_doc.markup(index_name => 'my_index',
textkey => '23',
text_query => 'dog AND cat WITHIN titlesection@name',
restab => 'markuptab',
query_id => '1',
tagset => 'HTML_DEFAULT');
end;

begin
ctx_doc.markup(index_name => 'my_index',
textkey => '23',
text_query => 'dog AND SDATA(price > 100)',
restab => 'markuptab',
query_id => '1',
tagset => 'HTML_DEFAULT');
end;

HTMLのテーマ・ハイライト

ドキュメント23のpoliticsというテーマに対するHTMLハイライト・マークアップを作成するには、次の文を入力します。

begin
ctx_doc.markup(index_name => 'my_index',
textkey => '23',
text_query => 'about(politics)',
restab => 'markuptab',
query_id => '1',
tagset => 'HTML_DEFAULT');
end;

制限事項

CTX_DOC.MARKUPでは、問合せテンプレートの使用はサポートされていません。

関連項目

"POLICY_MARKUP"

"SNIPPET"

9.7 PKENCODE

CTX_DOC.PKENCODEファンクションは、コンポジット・テキストキーのリストを1つの文字列に変換し、文字列を戻します。

PKENCODEによって作成された文字列は、CTX_DOC.THEMESやCTX_DOC.GISTなどの他のCTX_DOCプロシージャで、主キー・パラメータtextkeyiとして使用できます。

構文

CTX_DOC.PKENCODE(
pk1    IN VARCHAR2,
pk2    IN VARCHAR2 DEFAULT NULL,
pk4    IN VARCHAR2 DEFAULT NULL,
pk5    IN VARCHAR2 DEFAULT NULL,
pk6    IN VARCHAR2 DEFAULT NULL,
pk7    IN VARCHAR2 DEFAULT NULL,
pk8    IN VARCHAR2 DEFAULT NULL,
pk9    IN VARCHAR2 DEFAULT NULL,
pk10   IN VARCHAR2 DEFAULT NULL,
pk11   IN VARCHAR2 DEFAULT NULL,
pk12   IN VARCHAR2 DEFAULT NULL,
pk13   IN VARCHAR2 DEFAULT NULL,
pk14   IN VARCHAR2 DEFAULT NULL,
pk15   IN VARCHAR2 DEFAULT NULL,
pk16   IN VARCHAR2 DEFAULT NULL)
RETURN VARCHAR2;

pk1-pk16

各PK引数はコンポジット・テキストキー・リストの列要素を指定します。最大16列の要素をコード化できます。

戻り値

コンポジット・テキストキーのコード化された値を表す文字列です。

例

begin
ctx_doc.gist('newsindex',CTX_DOC.PKENCODE('smith', 14), 'CTX_GIST');
end;

この例のsmithおよび14は、ドキュメントのコンポジット・テキストキーの値を構成します。

9.8 POLICY_FILTER

プレーン・テキストまたはHTML形式のドキュメントを生成します。このプロシージャでは、CONTEXT索引は不要です。

このプロシージャでは、信頼できるコールアウトを使用しています。

構文

ctx_doc.policy_filter(policy_name    in  VARCHAR2,
document       in [VARCHAR2|CLOB|BLOB|BFILE],
restab         in out nocopy CLOB,
plaintext      in BOOLEAN default FALSE,
language       in VARCHAR2 default NULL,
format         in VARCHAR2 default NULL,
charset        in VARCHAR2 default NULL);

policy_name

CTX_DDL.CREATE_POLICYを使用して作成されたポリシーの名前を指定します。

document

フィルタ処理するドキュメントを指定します。

restab

CLOBロケータの名前を指定します。

plaintext

プレーン・テキスト形式のドキュメントを生成するには、TRUEを指定します。AUTO_FILTERフィルタを使用している場合またはHTMLドキュメントを索引付けしている場合は、FALSEを指定してHTML形式のドキュメントを生成します。

language

ドキュメントの言語を指定します。元表の言語列で使用する、Oracle Textでサポートされている言語の値を使用します。「Oracle Text索引付けの要素」の「BASIC_LEXER」を参照してください。

format

ドキュメントの形式を指定します。元表のフォーマット列で指定する、Oracle Textでサポートされているフォーマットの値(TEXT、BINARYまたはIGNOREのいずれか)を使用します。詳細は、「Oracle TextのSQL文と演算子」の「CREATE INDEX」のフォーマット列の説明を参照してください。

charset

ドキュメントのキャラクタ・セットを指定します。元表のキャラクタ・セット列で指定する、Oracle Textでサポートされている値を使用します。「フィルタ型」を参照してください。

9.9 POLICY_GIST

ドキュメントの要点またはテーマ・サマリーを生成します。段落レベルまたは文レベルの要点またはテーマ・サマリーを生成できます。このプロシージャでは、CONTEXT索引は不要です。

構文

ctx_doc.policy_gist(policy_name      in VARCHAR2,
document         in [VARCHAR2|CLOB|BLOB|BFILE],
restab           in out nocopy CLOB,
glevel           in VARCHAR2 default 'P',
pov              in VARCHAR2 default 'GENERIC',
numParagraphs    in VARCHAR2 default NULL,
maxPercent       in NUMBER default NULL,
num_themes       in NUMBER default 50
language         in VARCHAR2 default NULL,
format           in VARCHAR2 default NULL,
charset          in VARCHAR2 default NULL
);

policy_name

CTX_DDL.CREATE_POLICYを使用して作成されたポリシーの名前を指定します。

document

要点またはテーマ・サマリーを生成するドキュメントを指定します。

restab

CLOBロケータの名前を指定します。

glevel

生成する要点またはテーマ・サマリーのタイプを指定します。有効な値は、次のとおりです。

- 段落の場合はP

- 文の場合はS

デフォルトはPです。

pov

要点または単一のテーマ・サマリーを生成するかどうかを指定します。生成される要点またはテーマ・サマリーのタイプ(文レベルまたは段落レベル)は、glevelに指定した値によって決まります。

ドキュメント全体の要点を生成するには、povに値GENERICを指定します。ドキュメントの単一のテーマに対するテーマ・サマリーを生成するには、そのテーマをpovの値として指定します。

結果表記憶域を使用し、povの値を指定しない場合、このプロシージャはドキュメントに対して、全体の要点に加えて最大50個までのテーマ・サマリーを戻します。

注意:

povパラメータでは、大/小文字が区別されます。ドキュメントの要点を戻すには、すべて大文字で「GENERIC」を指定します。テーマ・サマリーを戻すには、ドキュメントに対して生成されたとおりのテーマを正確に指定します。

ドキュメントに対してTHEMESで生成されたテーマのみを、povの入力として使用できます。

numParagraphs

ドキュメントの要点またはテーマ・サマリーに対して選択されたドキュメントの段落(または文)の最大数を指定します。デフォルトは16です。

注意:

numParagraphsパラメータが使用されるのは、このパラメータによって生成される要点またはテーマ・サマリーのサイズが、maxPercentパラメータによって生成される要点またはテーマ・サマリーのサイズよりも小さいときのみです。

つまり、システムは、常に最小サイズの要点またはテーマ・サマリーを戻します。

maxPercent

ドキュメントの要点またはテーマ・サマリーに対して選択されたドキュメントの段落(または文)の最大数を、ドキュメントの合計段落数(または合計文数)に対する割合で指定します。デフォルトは10です。

注意:

numParagraphsパラメータが使用されるのは、このパラメータによって生成される要点またはテーマ・サマリーのサイズが、maxPercentパラメータによって生成される要点またはテーマ・サマリーのサイズよりも小さいときのみです。

つまり、システムは、常に最小サイズの要点またはテーマ・サマリーを戻します。

num_themes

povの値を指定しない場合は、生成するテーマ・サマリーの数を指定します。たとえば、10を指定すると、トップ10のテーマ・サマリーが戻ります。デフォルトは50です。

0(ゼロ)またはNULLを指定すると、ドキュメント内の全テーマが戻ります。51以上のテーマがドキュメントに格納されている場合、概念階層が表示されるのは、トップ50のテーマのみです。

language

ドキュメントの言語を指定します。元表の言語列で使用する、Oracle Textでサポートされている言語の値を使用します。「MULTI_LEXER」を参照してください。

format

ドキュメントの形式を指定します。元表のフォーマット列で指定する、Oracle Textでサポートされているフォーマットの値(TEXT、BINARYまたはIGNOREのいずれか)を使用します。詳細は、「CREATE INDEX」のフォーマット列の説明を参照してください。

charset

ドキュメントのキャラクタ・セットを指定します。元表のキャラクタ・セット列で指定する、Oracle Textでサポートされている値を使用します。

9.10 POLICY_HIGHLIGHT

プレーン・テキストまたはHTML形式のドキュメントをハイライト表示するオフセット情報を生成します。このプロシージャでは、CONTEXT索引は不要です。

オフセット情報は、指定する問合せを満たすドキュメント内の語句に対して生成されます。これらのハイライト表示される語句は、ワード問合せを満たすワードまたはABOUT問合せを満たすテーマのいずれかです。

プレーン・テキスト形式またはHTML形式のいずれかのドキュメントに対して、ハイライト・オフセットを生成できます。オフセット情報は、CTX_DOC.FILTER でフィルタ処理された同じドキュメントに適用します。

構文

exec ctx_doc.policy_highlight(
policy_name  in  VARCHAR2,
document     in  [VARCHAR2|CLOB|BLOB|BFILE],
text_query   in VARCHAR2,
restab       in out nocopy highlight_tab,
plaintext    in boolean FALSE
language     in VARCHAR2 default NULL,
format       in VARCHAR2 default NULL,
charset      in VARCHAR2 default NULL
);

exec ctx_doc.policy_highlight_clob_query(
policy_name  in VARCHAR2,
document     in [VARCHAR2|CLOB|BLOB|BFILE],
text_query   in CLOB,
restab       in out nocopy highlight_tab,
plaintext    in boolean FALSE
language     in VARCHAR2 default NULL,
format       in VARCHAR2 default NULL,
charset      in VARCHAR2 default NULL
);

policy_name

CTX_DDL.CREATE_POLICYを使用して作成されたポリシーの名前を指定します。

document

ハイライト表示するオフセット情報を生成するドキュメントを指定します。

text_query

ドキュメントを取り出すために使用された元の問合せ式を指定します。NULLの場合、ハイライトは生成されません。

text_queryにワイルド・カード、ステミング、ファジー・マッチングが指定されていて、結果としてストップワードが戻る場合、このプロシージャはストップワードをハイライト表示しません。

text_queryにTHRESHOLD演算子がある場合、その演算子は無視されます。このプロシージャは、常に結果セット全体に対するハイライト情報を戻します。

restab

highlight_tab PL/SQL索引付き表型の名前を指定します。

関連項目:

highlight_tab表型の構造の詳細は、"HIGHLIGHT"を参照してください

plaintext

プレーン・テキスト・オフセットのドキュメントを生成するには、TRUEを指定します。

AUTO_FILTERフィルタを使用している場合またはHTMLドキュメントを索引付けしている場合は、FALSEを指定してドキュメントのHTMLオフセットを生成します。

language

ドキュメントの言語を指定します。元表の言語列で使用する、Oracle Textでサポートされている言語の値を使用します。「Oracle Text索引付けの要素」の「MULTI_LEXER」を参照してください。

format

ドキュメントの形式を指定します。元表のフォーマット列で指定する、Oracle Textでサポートされているフォーマットの値(TEXT、BINARYまたはIGNOREのいずれか)を使用します。詳細は、「CREATE INDEX」のフォーマット列の説明を参照してください。

charset

ドキュメントのキャラクタ・セットを指定します。元表のキャラクタ・セット列で指定する、Oracle Textでサポートされている値を使用します。

制限事項

CTX_DOC.POLICY_HIGHLIGHTでは、問合せテンプレートの使用はサポートされていません。

9.11 POLICY_LANGUAGES

テキストのセクションについて言語をフェッチします。

言語の説明とスコアの表を戻します。スコアは、指定したテキストが特定の言語であることをシステムが確定できる信頼度です。

構文

CTX_DOC.POLICY_LANGUAGES (
policy_name    IN VARCHAR2 | CLOB,
document       IN VARCHAR2,
restab         IN OUT NOCOPY CTX_DOC.LANGUAGE_TAB
);

policy_name

CTX_DDL.CREATE_POLICYメソッドを使用して以前に作成されたポリシー。指定したポリシーにセクション化プリファレンスが含まれている場合、APIはそのセクション化プリファレンスを優先します。たとえばHTMLセクション化が指定されている場合、入力ドキュメントを処理する前にHTMLタグが削除されます。

document

言語を抽出するテキストの本文。テキストは、UTF-8文字エンコーディングのプレーン・テキストとみなされます。

restab

言語抽出プロセスの結果。結果は、レコードの表です。各レコードには、言語文字列と、言語文字列ごとのスコアの2つの属性があります。スコアは、0から100の範囲で、指定したテキストが特定の言語であることをシステムが確定できる信頼度です。生成される言語は、信頼度が最も高い言語を先頭にソートして戻されます。

restabの表レイアウトは、HIGHLIGHTの表レイアウトと類似しています。

関連項目:

restabレイアウトの詳細は、「HIGHLIGHT」 を参照してください

CTX_DOC.POLICY_LANGUAGESとPOLICY_STEMSでサポートされる言語

言語の抽出は、AUTO_LEXERでサポートされている言語のテキストでサポートされます。このリリースのCTX_DOC.POLICY_LANGUAGESとCTX_DOC.POLICY_STEMSでサポートされている言語は、次のとおりです。

アラビア語

ノルウェー語(ブークモール)

カタロニア語

クロアチア語

チェコ語

デンマーク語

オランダ語

英語

フィンランド語

フランス語

ドイツ語

ギリシャ語

ヘブライ語

ハンガリー語

イタリア語

日本語

韓国語

ポーランド語

ノルウェー語(ニーノシュク)

ペルシア語

ポルトガル語

ルーマニア語

ロシア語

セルビア語

スロバキア語

スロベニア語

中国語(簡体字)

スペイン語

スウェーデン語

タイ語

中国語(繁体字)

トルコ語

関連項目

"POLICY_STEMS"

"AUTO_LEXER"

9.12 POLICY_MARKUP

問合せ語句がハイライト表示されているドキュメントのプレーン・テキストまたはHTML形式を生成します。このプロシージャでは、CONTEXT索引は不要です。

CTX_DOC.POLICY_MARKUPプロシージャは、問合せ指定およびドキュメントを取り出し、問合せ語句がマークアップされた形式のドキュメントを戻します。これらのマークアップされた語句は、ワード問合せを満たすワードまたはABOUT問合せを満たすテーマのいずれかです。

マークアップされた出力は、プレーン・テキストまたはHTMLのいずれかに設定できます。

ハイライト表示された語句をマークするには、事前定義済のタグセットの1つ(HTMLナビゲーションを可能にするタグ順序を含む)を使用できます。

構文

ctx_doc.policy_markup(policy_name     in VARCHAR2,
document        in [VARCHAR2|CLOB|BLOB|BFILE],
text_query      in VARCHAR2,
restab          in out nocopy CLOB,
plaintext       in BOOLEAN default FALSE,
tagset          in VARCHAR2 default 'TEXT_DEFAULT',
starttag        in VARCHAR2 default NULL,
endtag          in VARCHAR2 default NULL,
prevtag         in VARCHAR2 default NULL,
nexttag         in VARCHAR2 default NULL
language        in VARCHAR2 default NULL,
format          in VARCHAR2 default NULL,
charset         in VARCHAR2 default NULL
);

ctx_doc.policy_markup_clob_query(
policy_name     in VARCHAR2,
document        in [VARCHAR2|CLOB|BLOB|BFILE],
text_query      in CLOB,
restab          in out nocopy CLOB,
plaintext       in BOOLEAN default FALSE,
tagset          in VARCHAR2 default 'TEXT_DEFAULT',
starttag        in VARCHAR2 default NULL,
endtag          in VARCHAR2 default NULL,
prevtag         in VARCHAR2 default NULL,
nexttag         in VARCHAR2 default NULL
language        in VARCHAR2 default NULL,
format          in VARCHAR2 default NULL,
charset         in VARCHAR2 default NULL
);

policy_name

CTX_DDL.CREATE_POLICYを使用して作成されたポリシーの名前を指定します。

document

ハイライト表示するオフセット情報を生成するドキュメントを指定します。

text_query

ドキュメントを取り出すために使用された元の問合せ式を指定します。

text_queryにNULLが含まれている場合、このプロシージャは失敗し、エラーが生成されます。

text_queryにワイルド・カード、ステミング、ファジー・マッチングが指定されていて、結果としてストップワードが戻る場合、このプロシージャはストップワードをハイライト表示しません。

text_queryにTHRESHOLD演算子がある場合、その演算子は無視されます。このプロシージャは、常に結果セット全体に対するハイライト情報を戻します。

restab

CLOBロケータの名前を指定します。

plaintext

プレーン・テキストのマークアップ・ドキュメントを生成するには、TRUEを指定します。AUTO_FILTERフィルタを使用している場合またはHTMLドキュメントを索引付けしている場合は、FALSEを指定してマークアップされたHTML形式のドキュメントを生成します。

tagset

次の事前定義済のタグセットの1つを指定します。この表の2列目および3列目は、各タグセットに対して定義された4つの異なるタグを示します。

タグセット

タグ

タグ値

TEXT_DEFAULT

starttag

<<<

TEXT_DEFAULT

endtag

>>>

HTML_DEFAULT

starttag

<B>

HTML_DEFAULT

endtag

</B>

HTML_NAVIGATE

starttag

<A NAME=ctx%CURNUM><B>

HTML_NAVIGATE

endtag

</B></A>

HTML_NAVIGATE

prevtag

<A HREF=#ctx%PREVNUM>&lt;</A>

HTML_NAVIGATE

nexttag

<A HREF=#ctx%NEXTNUM>&gt;</A>

starttag

ハイライト表示された語句の開始を示すために、MARKUPによって挿入された文字を指定します。

ハイライト表示されたワードに対するstarttag、endtag、prevtagおよびnexttagの順序は、次のとおりです。

... prevtag starttag word endtag nexttag...

endtag

ハイライト表示された語句の終了を示すために、MARKUPによって挿入された文字を指定します。

prevtag

前のハイライト表示された部分にユーザーをナビゲートするタグを定義するマークアップ順序を指定します。

マークアップ順序prevtagおよびnexttagで、動的に設定される次のオフセット変数を指定できます。

オフセット変数

値

%CURNUM

現在のオフセット番号

%PREVNUM

前のオフセット番号

%NEXTNUM

次のオフセット番号

""タグセット""の例は、HTML_NAVIGATEタグセットの説明を参照してください。

nexttag

次のハイライト表示された部分にユーザーをナビゲートするタグを定義するマークアップ順序を指定します。

マークアップ順序内で、prevtagに使用するものと同じオフセット変数を使用できます。例については、prevtagおよびHTML_NAVIGATE""タグセット""の記述を参照してください。

language

ドキュメントの言語を指定します。元表の言語列で使用する、Oracle Textでサポートされている言語の値を使用します。「Oracle Text索引付けの要素」の「MULTI_LEXER」を参照してください。

format

ドキュメントの形式を指定します。元表のフォーマット列で指定する、Oracle Textでサポートされているフォーマットの値(TEXT、BINARYまたはIGNOREのいずれか)を使用します。詳細は、「CREATE INDEX」のフォーマット列の説明を参照してください。

charset

ドキュメントのキャラクタ・セットを指定します。元表のキャラクタ・セット列で指定する、Oracle Textでサポートされている値を使用します。「フィルタ型」を参照してください。

制限事項

CTX_DOC.POLICY_MARKUPでは、問合せテンプレートの使用はサポートされていません。

9.13 POLICY_NOUN_PHRASES

指定したドキュメントの各名詞句内の各単語の品詞情報とともに名詞句を抽出できる機能を提供します。

たとえば、次の文について考えてみます。

「The mayor of Chicago is giving a brief press conference.」

この入力の名詞句は「mayor of Chicago」と「brief press conference」です。入力テキストのサブグループは戻されません。たとえば、前述の例で、「mayor」、「Chicago」、「brief press」、「press conference」、「press」、「conference」は戻されません。

POLICY_NOUN_PHRASES (POLICY_PART_OF_SPEECH)は次の言語をサポートします。

- オランダ語

- 英語

- ドイツ語

- フランス語

- イタリア語

- 日本語

- 韓国語

- 中国語(簡体字)

- スペイン語

- 中国語(繁体字)

構文

ctx_doc.policy_noun_phrases (
policy_name    in varchar2,
document       in varchar2 | CLOB,
restab         in out nocopy noun_phrase_tab,
language       in varchar2  default NULL,
format         in varchar2  default NULL,
charset        in varchar2  default NULL
);

policy_name

CTX_DDL.CREATE_POLICYを使用して作成されたポリシーの名前を指定します。

document

言語を抽出するテキストの本文。テキストは、UTF-8文字エンコーディングのプレーン・テキストとみなされます。

restab

CLOBロケータの名前を指定します。

language

言語を指定します。この項のサポートされている言語のリストを参照してください。このパラメータがnullの場合、言語は自動的に検出されます。言語の検出には負荷が伴います。

format

入力テキストのフォーマット。

charset

入力テキストのキャラクタ・セット。

POLICY_NOUN_PHRASESおよびPOLICY_PART_OF_SPEECHで使用される略称

表9-1にPOLICY_NOUN_PHRASESおよびPOLICY_PART_OF_SPEECHの問合せで使用する略称のリストを示します。例ではこれらの略称を使用します。

表9-1 品詞の略称

略称

品詞

N

noun

propN

nounProper

V

動詞

Adj

adjective

Adv

adverb

Prep

preposition

Part

不変化詞

Punct

句読

Pro

代名詞

Wh

疑問詞

Det

限定詞

Conj

接続詞

Card

基数

Ord

序数

Suf

接尾辞

Pre

接頭辞

Acr

頭字語

Poss

所有格

Unk

不明

POLICY__NOUN_PHRASESの例

この項の例では、表9-1に示す略称を使用します。

set serverout on
create or replace function toString(b boolean) return varchar2 is
begin
if (b) then
return 'TRUE';
end if;
return 'FALSE';
end;
/

declare
the_nps ctx_doc.noun_phrase_tab;
begin
ctx_ddl.create_preference('rvlex', 'AUTO_LEXER');
ctx_ddl.set_attribute('rvlex','mixed_case','YES');
ctx_ddl.set_attribute('rvlex','timeout',0);

ctx_ddl.create_policy(policy_name => 'rv_policy_21',lexer => 'rvlex');

ctx_doc.policy_noun_phrases('rv_policy_21','The mayor of Chicago is giving a
brief press conference',the_nps);
dbms_output.put_line(the_nps.count);

for i in 1..the_nps.count loop
if (the_nps(i).is_phrase_start) then
if (i>1) then
dbms_output.put(']');
dbms_output.new_line;
end if;
dbms_output.put('Phrase{term,POS,is_in_lex,offset,len,is_phrase_
start}:[');
else
dbms_output.put(',');
end if;
dbms_output.put('{' || the_nps(i).term || ',' || the_nps(i).pos_tag || ','
|| toString(the_nps(i).is_in_lexicon) || ',' || the_nps(i).offset
|| ',' || the_nps(i).length || ',' || toString(the_nps(i).is_phrase_start)
|| '}');
end loop;
dbms_output.put(']');
dbms_output.new_line;
end;
/

この例の出力:

Phrase{term,POS,is_in_lex,offset,len,is_phrase_start}:
[{The,Det,TRUE,1,3,TRUE},{mayor,N,TRUE,5,5,FALSE},
{of,Prep,TRUE,11,2,FALSE},{Chicago,propN,TRUE,14,7,FALSE}

Phrase{term,POS,is_in_lex,offset,len,is_phrase_start}:
[{a,Det,TRUE,32,1,TRUE},{brief,N,TRUE,34,5,FALSE},
{press,N,TRUE,40,5,FALSE},{conference,N,TRUE,46,10,FALSE}]

関連項目

"POLICY_PART_OF_SPEECH"

9.14 POLICY_PART_OF_SPEECH

テキスト本文にある各単語の品詞を抽出します。

POLICY_NOUN_PHRASESは、サポートされる言語のリストを持っています。

構文

ctx_doc.policy_part_of_speech (
policy_name       in varchar2,
document          in varchar2 | CLOB,
restab            in out nocopy noun_phrase_tab,
language          in varchar2  default NULL,
format            in varchar2  default NULL,
charset           in varchar2  default NULL
disambiguate_tags in boolean default TRUE
);

policy_name

CTX_DDL.CREATE_POLICYを使用して作成されたポリシーの名前を指定します。指定したポリシーにセクション化プリファレンスが含まれている場合、APIはそのセクション化プリファレンスを優先します。たとえばHTMLセクション化が指定されている場合、入力ドキュメントを処理する前にHTMLタグが削除されます。

document

言語を抽出するテキストの本文。テキストは、UTF-8文字エンコーディングのプレーン・テキストとみなされます。

restab

CLOBロケータの名前を指定します。この問合せでは名詞句の抽出の結果を含む表を戻します。各単語に対し、次の属性も戻されます。

- pos_tags: この単語の品詞タグ。最初にリストされている最も可能性の高いタグを含む、複数の品詞タグがある場合があります。

- offset: 入力文字列での単語のオフセット

- length: 入力文字列での単語の長さ。

- is_in_lexicon: 単語がレキシコン内にあるかどうかを示します。

language

言語を指定します。この項のサポートされている言語のリストを参照してください。このパラメータがnullの場合、言語は自動的に検出されます。言語の検出には負荷が伴います。

format

入力テキストのフォーマット。

charset

入力テキストのキャラクタ・セット。

POLICY_PART_OF_SPEECHの例

この項の例では、表9-1に示す略称を使用します。

set serveroutput on;
declare
the_nps ctx_doc.part_of_speech_tab;
begin
ctx_doc.policy_part_of_speech(policy_name => 'rv_policy_21',
document => 'The mayor of Chicago is giving
a brief press conference',
restab => the_nps,
disambiguate_tags => false,
language => 'english');
for i in 1..the_nps.count loop
dbms_output.put('word:' || the_nps(i).word || ',pos:[');
for j in 1..the_nps(i).pos_tags.count loop
dbms_output.put(the_nps(i).pos_tags(j) || ',');
end loop;
dbms_output.put_line(']');
end loop;
end;
/

この例の出力:

word:The,pos:[Det,]
word:mayor,pos:[N,]
word:of,pos:[Prep,]
word:Chicago,pos:[propN,]
word:is,pos:[V,]
word:giving,pos:[N,V,Adj,]
word:a,pos:[Det,]
word:brief,pos:[N,V,Adj,]
word:press,pos:[N,V,]
word:conference,pos:[N,V,]

関連項目

"POLICY_NOUN_PHRASES"

"表6-1"

9.15 POLICY_SNIPPET

コンテキスト内のマークアップ・キーワードを表示します。戻されたテキストに含まれるのは、ワード問合せを満たすワードまたはABOUT問合せを満たすテーマのいずれかです。このバージョンのCTX_DOC.SNIPPETプロシージャでは、索引は不要です。

構文

構文1

exec CTX_DOC.POLICY_SNIPPET(

policy_name              IN VARCHAR2,
document                 IN [VARCHAR2|CLOB|BLOB|BFILE],
text_query               IN VARCHAR2,
language                 IN VARCHAR2 default NULL,
format                   IN VARCHAR2 default NULL,
charset                  IN VARCHAR2 default NULL,
starttag                 IN VARCHAR2 DEFAULT '<b>',
endtag                   IN VARCHAR2 DEFAULT '</b>',
entity_translation       IN BOOLEAN  DEFAULT TRUE,
separator                IN VARCHAR2 DEFAULT '<b>...</b>'
radius                      IN INTEGER DEFAULT 25,
max_length               IN INTEGER DEFAULT 250
)
return varchar2;

構文2

exec CTX_DOC.POLICY_SNIPPET_CLOB_QUERY(
policy_name              IN VARCHAR2,
document                 IN [VARCHAR2|CLOB|BLOB|BFILE],
text_query               IN CLOB,
language                 IN VARCHAR2 default NULL,
format                   IN VARCHAR2 default NULL,
charset                  IN VARCHAR2 default NULL,
starttag                 IN VARCHAR2 DEFAULT '<b>',
endtag                   IN VARCHAR2 DEFAULT '</b>',
entity_translation       IN BOOLEAN DEFAULT TRUE,
separator                IN VARCHAR2 DEFAULT '<b>...</b>'
radius                      IN INTEGER DEFAULT 25,
max_length               IN INTEGER DEFAULT 250
)
return varchar2;

policy_name

CTX_DDL.CREATE_POLICYを使用して作成されたポリシーの名前を指定します。

document

キーワード検索の対象となるドキュメントを指定します。

text_query

ドキュメントを取り出すために使用された元の問合せ式を指定します。NULLの場合、ハイライトは生成されません。

text_queryにワイルド・カード、ステミング、ファジー・マッチングが指定されていて、結果としてストップワードが戻る場合、POLICY_SNIPPETはストップワードをハイライト表示しません。

text_queryにTHRESHOLD演算子がある場合、その演算子は無視されます。

language

ドキュメントの言語を指定します。元表の言語列で使用する、Oracle Textでサポートされている言語の値を使用します。「Oracle Text索引付けの要素」の「MULTI_LEXER」を参照してください。

format

ドキュメントの形式を指定します。元表のフォーマット列で指定する、Oracle Textでサポートされているフォーマットの値(TEXT、BINARYまたはIGNOREのいずれか)を使用します。詳細は、「CREATE INDEX」のフォーマット列の説明を参照してください。

charset

ドキュメントのキャラクタ・セットを指定します。元表のキャラクタ・セット列で指定する、Oracle Textでサポートされている値を使用します。「フィルタ型」を参照してください。

starttag

問合せキーワードのマークアップ用の開始タグを指定します。デフォルトは<b>です。

endtag

問合せキーワードのマークアップ用の終了タグを指定します。デフォルトは</b>です。

entity_translation

HTMLエンティティを変換させるかどうかを指定します。デフォルトはTRUEで、プロシージャによって出力される際、特殊エンティティ(<、>、&)が代替形式(&lt;、&gt;、&amp;)に変換されます。ただし、CTX_DOC.POLICY_SNIPPETによって生成されたマークアップ・タグ内の特殊文字は変換されません。

separator

戻される複数の異なるフラグメントを区切る文字列を指定します。デフォルトは<b>...</b>です。

radius

セグメントでヒットした問合せのいずれかの側に表示される文字の数を指定します。ヒット問合せより前の文字数カウントは、セグメントに表示される最初のヒット問合せの最初の文字で始まります。同様に、ヒット問合せより後の文字数カウントは、特定のセグメントに表示される最後のヒット問合せの最後の文字で始まります。半径が重なる場合には、2つのセグメントが1つのマージされます。両側に表示される文字の数は、文または単語の最初と最後に一致するように、+/-10文字単位で変更できます。

値を0にするときは、特に注意が必要です。指定した半径は自動的に設定され、文によって異なります。結果の最適予測が表示され、これは文全体への一致を試みます。ヒット問合せの両側の半径は、大きく異なるのが普通です。

デフォルト値は25です。

max_length

スニペット出力の最大長を、文字単位で指定します。この値には現在、CTX_DOC.SNIPPETとCTX_DOC.POLICY_SNIPPET (VARCHAR2)の現在の戻り型によって上限が設定されます。出力が戻り型VARCHAR2より長くなる場合は、結果が切り捨てられます。

max_lengthのデフォルト値は250です。

注意:

max_length値を極端に小さい値に設定すると、スニペットが生成されない場合があります。たとえば、max_lengthを0に設定した場合や、max_lengthを問合せトークン自体の長さより小さく設定した場合、スニペットはまったく生成されません。

制限事項

CTX_DOC.POLICY_SNIPPETでは、問合せテンプレートの使用はサポートされていません。

CTX_DOC.POLICY_SNIPPETをNULL_SECTION_GROUPで使用すると、コンテキスト内のマークアップ・キーワードが表示されます。ただし、XMLドキュメントでこのプロシージャを使用する場合は制限があります。XML_SECTION_GROUPまたはAUTO_SECTION_GROUPで使用すると、XML構造は無視され、ユーザーが指定したタグは外されます。したがって、戻される結果には、テキストの前後の部分が含まれることになります。

関連項目

"SNIPPET"

"MARKUP "

9.16 POLICY_STEMS

テキスト本文にある各単語の語幹を抽出します。このプロシージャはAUTO_LEXERで使用されます。このプロシージャは、「POLICY_LANGUAGES」に示されたAUTO_LEXERによってサポートされる言語のみ使用できます。

構文

exec CTX_DOC.POLICY_STEMS (
policy_name   in varchar2,
document      in varchar2 | CLOB,
restab        in out nocopy ctx_doc.stem_group_tab,
language      in varchar2  default NULL,
format        in varchar2  default NULL,
charset       in varchar2  default NULL
);

policy_name

CTX_DDL.CREATE_POLICYメソッドを使用して以前に作成されたポリシー。指定したポリシーにHTML_SECTION_GROUPセクション化プリファレンスが含まれている場合、APIはそのセクション化プリファレンスを優先します。たとえばHTMLセクション化が指定されている場合、入力ドキュメントを処理する前にHTMLタグが削除されます。

ポリシーはAUTO_LEXERしか使用できません。

document

言語を抽出するテキストの本文。テキストは、UTF-8文字エンコーディングのプレーン・テキストとみなされます。

restab

語幹抽出プロセスの結果。PL/SQL表で戻される値は、入力文字列ドキュメントの単語ごとに1つのセルを持ちます。各単語は、レクサーで定義される複数ワードでもかまいません。単語ごとに、すべての語幹(すべての代替語幹も含む)が戻されます。語幹ごとに、語幹である単語のオフセットと長さ(入力文字列の)が戻されます。さらに、語幹ごとに、その語幹がレキシコンで見つかったかどうかを示すブール値が戻されます。

stem_group_tabはstem_group_recordsの表です。

language

入力テキストの言語。言語文字列は、言語抽出の前のセクションで指定した値のいずれかです。このパラメータがnullの場合、言語は自動的に検出されます。言語の検出には負荷が伴います。したがって、言語がわかっている場合には言語の値を指定するようにしてください。言語のリストは、「POLICY_LANGUAGES」を参照してください。

format

入力テキストのフォーマット。

charset

入力テキストのキャラクタ・セット。

制限事項と注意

語幹抽出プロセスは、一定の非標準のワード形式(大文字表記エラーなど)にも標準形式にも対応しています。したがって、非公式または不正確なテキスト(電子メール、オンライン・ドキュメント、問合せなど)の処理にも使用できます。また、大/小文字の変動、ハイフン、アクセント指定のない文字などの差異も処理されます。

語幹抽出プロセスで、複合語は分割されませんが、かわりに#文字で複合語が区切られます。このような複合語は、ドイツ語で一般的です。たとえば、ドイツ語の複合語Bildungsroman (「教養」の意のBildungと「小説」の意のRomanから成る)は、Bildungsとromanの2つの語幹ではなく、Bildungs#romanという1つの語幹になります。

関連項目

"POLICY_LANGUAGES"

"AUTO_LEXER"

"CREATE_POLICY"

9.17 POLICY_THEMES

ドキュメントのテーマのリストを生成します。このプロシージャでは、CONTEXT索引は不要です。

構文

ctx_doc.policy_themes(policy_name    in VARCHAR2,
document       in [VARCHAR2|CLOB|BLOB|BFILE],
restab         in out nocopy theme_tab,
full_themes    in BOOLEAN default FALSE,
num_themes     in number    default 50
language       in VARCHAR2 default NULL,
format         in VARCHAR2 default NULL,
charset        in VARCHAR2 default NULL
);

policy_name

CTX_DDL.CREATE_POLICYを使用して作成されたポリシーを指定します。

document

テーマのリストを生成するドキュメントを指定します。

restab

theme_tab PL/SQL索引付き表型の名前を指定します。

関連項目:

theme_tab型の構造の詳細は、「THEMES」を参照してください。

full_themes

このプロシージャが、各ドキュメント・テーマに対して単一のテーマを作成するか、親テーマ(全テーマ)の階層型リストを作成するかを指定します。

TRUEを指定すると、このプロシージャは全テーマを結果表のTHEME列に書き込みます。

FALSEを指定すると、このプロシージャは単一テーマ情報を結果表のTHEME列に書き込みます。これはデフォルトです。

num_themes

取り出すテーマの最大数を指定します。たとえば、10を指定すると、ドキュメントのテーマが最初の10個まで戻ります。デフォルトは50です。

0(ゼロ)またはNULLを指定すると、ドキュメント内の全テーマが戻ります。51以上のテーマがドキュメントに格納されている場合、概念階層が表示されるのは、最初の50テーマのみです。

language

ドキュメントの言語を指定します。元表の言語列で使用する、Oracle Textでサポートされている言語の値を使用します。「Oracle Text索引付けの要素」の「MULTI_LEXER」を参照してください。

format

ドキュメントの形式を指定します。元表のフォーマット列で指定する、Oracle Textでサポートされているフォーマットの値(TEXT、BINARYまたはIGNOREのいずれか)を使用します。詳細は、「Oracle TextのSQL文と演算子」の「CREATE INDEX」のフォーマット列の説明を参照してください。

charset

ドキュメントのキャラクタ・セットを指定します。元表のキャラクタ・セット列で指定する、Oracle Textでサポートされている値を使用します。「フィルタ型」を参照してください。

例

ポリシーを作成します。

exec ctx_ddl.create_policy('mypolicy');

テーマを実行します。

declare
la      varchar2(200);
rtab    ctx_doc.theme_tab;
begin
ctx_doc.policy_themes('mypolicy',
'To define true madness, What is''t but to be nothing but mad?', rtab);
for i in 1..rtab.count loop
dbms_output.put_line(rtab(i).theme||':'||rtab(i).weight);
end loop;
end;

9.18 POLICY_TOKENS

ドキュメントのすべての索引トークンを生成します。このプロシージャでは、CONTEXT索引は不要です。

構文

ctx_doc.policy_tokens(policy_name    in  VARCHAR2,
document       in  [VARCHAR2|CLOB|BLOB|BFILE],
restab         in  out nocopy token_tab,
language       in  VARCHAR2 default NULL,
format         in  VARCHAR2 default NULL,
charset        in  VARCHAR2 default NULL);

policy_name

CTX_DDL.CREATE_POLICYを使用して作成されたポリシーの名前を指定します。

document

トークンを生成するドキュメントを指定します。

restab

token_tab PL/SQL索引付き表型の名前を指定します。

戻されるトークンは、ドキュメントの索引に挿入されるトークンです。ストップワードは戻されません。セクション・タグは、テキスト・トークンではないため、戻されません。

関連項目:

token_tab型の構造の詳細は、この章の"「TOKENS」を参照してください。

language

ドキュメントの言語を指定します。元表の言語列で使用する、Oracle Textでサポートされている言語の値を使用します。「Oracle Text索引付けの要素」の「MULTI_LEXER」を参照してください。

format

ドキュメントの形式を指定します。元表のフォーマット列で指定する、Oracle Textでサポートされているフォーマットの値(TEXT、BINARYまたはIGNOREのいずれか)を使用します。詳細は、「CREATE INDEX」のフォーマット列の説明を参照してください。

charset

ドキュメントのキャラクタ・セットを指定します。元表のキャラクタ・セット列で指定する、Oracle Textでサポートされている値を使用します。「フィルタ型」を参照してください。

例

トークンを取得します。

declare
la     varchar2(200);
rtab   ctx_doc.token_tab;
begin
ctx_doc.policy_tokens('mypolicy',
'To define true madness, What is''t but to be nothing but mad?',rtab);
for i in 1..rtab.count loop
dbms_output.put_line(rtab(i).offset||':'||rtab(i).token);
end loop;
end;

9.19 SET_KEY_TYPE

このプロシージャを使用してCTX_DOCプロシージャを設定し、ROWIDまたはPRIMARY_KEYのドキュメントの識別子を受け取ります。この設定は、セッションの起動にのみ影響を与えます。

構文

ctx_doc.set_key_type(key_type in varchar2);

key_type

ROWIDまたはPRIMARY_KEYのいずれかを、CTX_DOCプロシージャに対する入力キー・タイプ(ドキュメント識別子)として指定します。

このパラメータのデフォルトは、CTX_DOC_KEY_TYPEシステム・パラメータの値です。

注意:

元表に主キーがない場合は、PRIMARY_KEYにkey_typeを指定しても無視されます。CTX_DOCプロシージャに指定するtextkeyパラメータは、ROWIDとして解釈されます。

例

次の例では、CTX_DOCプロシージャを設定して、主キーのドキュメント識別子を受け取ります。

begin
ctx_doc.set_key_type('PRIMARY_KEY');
end

9.20 SNIPPET

ドキュメントの用語索引を作成するには、CTX_DOC.SNIPPETプロシージャを使用します。スニペットの出力は、セグメントのコレクションです。用語索引とは、問合せ語句とその前後のテキストを含むテキストの断片(フラグメント)です。この用語索引は、マークアップされた問合せキーワードを前後のテキストと一緒に戻すため、文脈付きキーワード(KWIC)としても知られており、ユーザーは問合せキーワードを文脈で評価できます。戻されたテキストには、ABOUT問合せを満たすテーマが含まれていることもあります。

たとえば、brilligとslitheyの検索では、ドキュメントの関連フラグメントが戻される場合もあります。

'Twas <b>brillig</b>, and the <b>slithey</b> toves did gyre and

CTX_DOC.SNIPPETは、問合せ語句を含んでいるドキュメントを対象として、関連性の最も高い1つ以上のフラグメントを戻します。CTX_DOC.SNIPPETは前後のテキストも含めて戻すため、ユーザーは戻された語句の有用性を即時に評価できます。CTX_DOC.SNIPPETは、戻されたテキストのワードがマークアップされていない場合に全体のドキュメントを戻します。

問合せ時に主にドキュメントのフィルタ処理に使用される述語が含まれる問合せの場合、SNIPPET生成中に述語は無視されることに注意してください。次の述語は、この目的でフィルタ述語として扱われ、xml属性内を検索します。SDATA、HASPATHおよびWITHIN/INPATH。

関連項目:

このプロシージャのポリシーベースのバージョンは、「CTX_DOC.POLICY_SNIPPET」を参照してください。

構文

構文1

exec CTX_DOC.SNIPPET(

index_name               IN VARCHAR2,
textkey                  IN VARCHAR2,
text_query               IN VARCHAR2,
starttag                 IN VARCHAR2 DEFAULT '<b>',
endtag                   IN VARCHAR2 DEFAULT '</b>',
entity_translation       IN BOOLEAN  DEFAULT TRUE,
separator                IN VARCHAR2 DEFAULT '<b>...</b>',
radius                      IN INTEGER DEFAULT 25,
max_length               IN INTEGER DEFAULT 250
use_saved_copy           IN NUMBER DEFAULT CTX_DOC.SAVE_COPY_FALLBACK
return varchar2
);

構文2

exec CTX_DOC.SNIPPET_CLOB_QUERY(
index_name               IN VARCHAR2,
textkey                  IN VARCHAR2,
text_query               IN CLOB,
starttag                 IN VARCHAR2 DEFAULT '<b>',
endtag                   IN VARCHAR2 DEFAULT '</b>',
entity_translation       IN BOOLEAN DEFAULT TRUE,
separator                IN VARCHAR2 DEFAULT '<b>...</b>',
radius                      IN INTEGER DEFAULT 25,
max_length               IN INTEGER DEFAULT 250
use_saved_copy           IN NUMBER DEFAULT CTX_DOC.SAVE_COPY_FALLBACK
return varchar2
);

index_name

テキスト列の索引名を指定します。

textkey

一意のドキュメントのID(通常は主キー)を指定します。

textkeyパラメータは、次のいずれかです。

- 単一列の主キーの値。

- コンポジット(複数列)主キーのコード化された仕様。テキストキーがコンポジット・キーの場合は、CTX_DOC.PKENCODEプロシージャを使用して、コンポジット・テキストキー文字列をコード化する必要があります。

- ドキュメントを含む行のROWID。

主キーとROWIDの識別を切り替えるには、CTX_DOC.SET_KEY_TYPEを使用します。

text_query

ドキュメントを取り出すために使用された元の問合せ式を指定します。NULLの場合、ハイライトは生成されません。

text_queryにワイルド・カード、ステミング、ファジー・マッチングが指定されていて、結果としてストップワードが戻る場合、SNIPPETはストップワードをハイライト表示しません。

text_queryにTHRESHOLD演算子がある場合、その演算子は無視されます。

starttag

問合せキーワードのマークアップ用の開始タグを指定します。デフォルトは<b>です。

endtag

問合せキーワードのマークアップ用の終了タグを指定します。デフォルトは</b>です。

entity_translation

HTMLエンティティを変換させるかどうかを指定します。デフォルトはTRUEで、プロシージャによって出力される際、特殊エンティティ(<、>、&)が代替形式(&lt;、&gt;、&amp;)に変換されます。ただし、CTX_DOC.SNIPPETによって生成されたマークアップ・タグ内の特殊文字は変換されません。

separator

戻される複数の異なるフラグメントを区切る文字列を指定します。デフォルトは<b>...</b>です。

radius

セグメントでヒットした問合せのいずれかの側に表示される文字の数を指定します。ヒット問合せより前の文字数カウントは、セグメントに表示される最初のヒット問合せの最初の文字で始まります。同様に、ヒット問合せより後の文字数カウントは、特定のセグメントに表示される最後のヒット問合せの最後の文字で始まります。半径が重なる場合には、2つのセグメントが1つのマージされます。両側に表示される文字の数は、文または単語の最初と最後に一致するように、+/-10文字単位で変更できます。

値を0にするときは、特に注意が必要です。指定した半径は自動的に設定され、文によって異なります。結果の最適予測が表示され、これは文全体への一致を試みます。ヒット問合せの両側の半径は、大きく異なるのが普通です。

デフォルト値は25です。

max_length

スニペット出力の最大長を、文字単位で指定します。この値には現在、CTX_DOC.SNIPPET and CTX_DOC.POLICY_SNIPPET (VARCHAR2)の現在の戻り型によって上限が設定されます。出力が戻り型VARCHAR2より長くなる場合は、結果が切り捨てられます。max_lengthのデフォルト値は250です。

max_length値を極端に小さい値に設定すると、スニペットが生成されない場合があります。たとえば、max_lengthを0に設定した場合や、max_lengthを問合せトークン自体の長さより小さく設定した場合、スニペットはまったく生成されません。

use_saved_copy

$D表を参照してドキュメントのコピーをフェッチするかどうかと、$D表でドキュメントのコピーが取得できないときにどんなアクションを実行するかを指定します。デフォルト値はCTX_DOC.SAVE_COPY_FALLBACKです。

use_saved_copyパラメータに指定できる値は、次のいずれかです。

- CTX_DOC.SAVE_COPY_FALLBACK: $D表からドキュメントのコピーをフェッチします。ドキュメントのコピーが$D表に存在しない場合は、データストアからドキュメントをフェッチします。

- CTX_DOC.SAVE_COPY_ERROR: $D表からドキュメントのコピーをフェッチします。ドキュメントのコピーが$D表に存在しない場合は、エラー・メッセージを表示します。$D表でドキュメントのコピーが取得できないときに特定のフォールバック・ロジックを実装する場合には、この値を指定してください。

- CTX_DOC.SAVE_COPY_IGNORE: ドキュメントを常にデータストアからフェッチします。

例

create table tdrbhk01 (id number primary key, text varchar2(4000));

insert into tdrbhk01 values (1, 'Oracle Text adds powerful search
and intelligent text management to the Oracle
database.  Complete.  You can search and manage documents, web pages,
catalog entries in more than 150 formats in any language.  Provides a
complete text query language and complete character support.  Simple.  You
can index and search text using SQL. Oracle Text Management can be done
using Oracle Enterprise Manager - a GUI tool.  Fast.  You can search
millions of documents, document,web pages, catalog entries using the
power and scalability of the database.  Intelligent.  Oracle Text''s
unique knowledge-base enables you to search, classify, manage
documents, clusters and summarize text based on its meaning as well as
its content. ');

create index tdrbhk01x on tdrbhk01(text) indextype is ctxsys.context;

create or replace function my_snippet_wrapper(
key in varchar2,
query in varchar2,
radius in number,
max_length in number) return varchar2 is
buff varchar2(4000);
begin
buff := ctx_doc.snippet('tdrbhk01x', key, query, '<b>', '<b>', true, '<b>..<b>', radius, max_length);
return buff;
end;
/
show errors;

select my_snippet_wrapper('1','Oracle', 10, 100) from dual;

次のような結果になります。

CTX_DOC.SNIPPET('TDRBHK01X','1','SEARCH|CLASSIFY')
------------------------------------------------------------------------

Text's unique knowledge-base enables you to <b>search</b>,
<b>classify</b>, manage documents, clusters and summarize

制限事項

CTX_DOC.SNIPPETでは、問合せテンプレートの使用はサポートされていません。

CTX_DOC.SNIPPETをNULL_SECTION_GROUPで使用すると、コンテキスト内のマークアップ・キーワードが表示されます。ただし、XMLドキュメントでこのプロシージャを使用する場合は制限があります。XML_SECTION_GROUPまたはAUTO_SECTION_GROUPで使用すると、XML構造は無視され、ユーザーが指定したタグは外されます。したがって、戻される結果には、テキストの前後の部分が含まれることになります。

関連項目

"POLICY_SNIPPET"

"HIGHLIGHT "

"MARKUP "

9.21 THEMES

CTX_DOC.THEMESプロシージャを使用して、1つのドキュメントに対してテーマ・リストを1つ生成します。各テーマは、指定した結果表またはインメモリーPL/SQL表のいずれかに行として格納できます。

構文1: インメモリー表記憶域

CTX_DOC.THEMES(

index_name      IN VARCHAR2,
textkey         IN VARCHAR2,
restab          IN OUT NOCOPY THEME_TAB,
full_themes     IN BOOLEAN DEFAULT FALSE,
num_themes      IN NUMBER DEFAULT 50,
use_saved_copy  IN NUMBER DEFAULT CTX_DOC.SAVE_COPY_FALLBACK);

構文2: 結果表記憶域

CTX_DOC.THEMES(

index_name      IN VARCHAR2,
textkey         IN VARCHAR2,
restab          IN VARCHAR2,
query_id        IN NUMBER DEFAULT 0,
full_themes     IN BOOLEAN DEFAULT FALSE,
num_themes      IN NUMBER DEFAULT 50,
use_saved_copy  IN NUMBER DEFAULT CTX_DOC.SAVE_COPY_FALLBACK);

index_name

テキスト列の索引名を指定します。

textkey

一意のドキュメントのID(通常は主キー)を指定します。

textkeyパラメータは、次のいずれかです。

- 単一列の主キーの値。

- コンポジット(複数列)主キーのコード化された仕様。テキストキーがコンポジット・キーの場合は、CTX_DOC.PKENCODEプロシージャを使用して、コンポジットtextkey文字列をコード化する必要があります。

- ドキュメントを含む行のROWID。

主キーとROWIDの識別を切り替えるには、CTX_DOC.SET_KEY_TYPEを使用します。

restab

このプロシージャが、結果を表またはインメモリーPL/SQL表のいずれかに格納することを指定できます。

結果を表に格納するには、表の名前を指定します。

関連項目:

「Oracle Text結果表」の「テーマ表」

結果をインメモリー表に格納するには、THEME_TAB型のインメモリー表の名前を指定します。THEME_TABデータ型は、次のように定義されます。

type theme_rec is record (
theme varchar2(2000),
weight number
);

type theme_tab is table of theme_rec index by binary_integer;

操作の前に、CTX_DOC.THEMESは、ユーザーが指定したTHEME_TABを消去します。

query_id

restabに挿入した行の識別に使用する識別子を指定します。

full_themes

このプロシージャが、各ドキュメント・テーマに対して単一のテーマを作成するか、親テーマ(全テーマ)の階層型リストを作成するかを指定します。

TRUEを指定すると、このプロシージャは全テーマを結果表のTHEME列に書き込みます。

FALSEを指定すると、このプロシージャは単一テーマ情報を結果表のTHEME列に書き込みます。これはデフォルトです。

num_themes

取り出すテーマの最大数を指定します。たとえば、10を指定すると、ドキュメントのテーマが最初の10個まで戻ります。デフォルトは50です。

0(ゼロ)またはNULLを指定すると、ドキュメント内の全テーマが戻ります。50を超えるテーマがドキュメントに格納されている場合、概念階層が表示されるのは、最初の50テーマのみです。

use_saved_copy

$D表を参照してドキュメントのコピーをフェッチするかどうかと、$D表でドキュメントのコピーが取得できないときにどんなアクションを実行するかを指定します。

use_saved_copyパラメータに指定できる値は、次のいずれかです。

- CTX_DOC.SAVE_COPY_FALLBACK: $D表からドキュメントのコピーをフェッチします。ドキュメントのコピーが$D表に存在しない場合は、データストアからドキュメントをフェッチします。

- CTX_DOC.SAVE_COPY_ERROR: $D表からドキュメントのコピーをフェッチします。ドキュメントのコピーが$D表に存在しない場合は、エラー・メッセージを表示します。$D表でドキュメントのコピーが取得できないときに特定のフォールバック・ロジックを実装する場合には、この値を指定してください。

- CTX_DOC.SAVE_COPY_IGNORE: ドキュメントを常にデータストアからフェッチします。

デフォルト値はCTX_DOC.SAVE_COPY_FALLBACKです。

例

インメモリー・テーマ

次の例では、ドキュメント1の最初の10テーマを生成し、それをthe_themesというインメモリー表に格納します。その後、表全体をループし、ドキュメントのテーマを表示します。

declare
the_themes ctx_doc.theme_tab;

begin
ctx_doc.themes('myindex','1',the_themes, num_themes=>10);
for i in 1..the_themes.count loop
dbms_output.put_line(the_themes(i).theme||':'||the_themes(i).weight);
end loop;
end;

テーマ表

次の例では、テーマ表CTX_THEMESを作成します。

create table CTX_THEMES (query_id number,
theme varchar2(2000),
weight number);

単一テーマ

リストの各要素が単一テーマである場合、最初の20テーマまでのリストを取得するには、次の文を入力します。

begin

ctx_doc.themes('newsindex','34','CTX_THEMES',1,full_themes => FALSE,
num_themes=> 20);

end;

全テーマ

リストの各要素が親テーマの階層リストの場合、トップ20のテーマのリストを取得するには、次の文を入力します。

begin

ctx_doc.themes('newsindex','34','CTX_THEMES',1,full_themes => TRUE, num_
themes=>20);

end;

9.22 TOKENS

このプロシージャを使用して、ドキュメント内のすべてのテキスト・トークンを識別します。戻されるトークンは、索引に挿入されるトークンです。この機能は、ドキュメントの分類、ルーティングまたはクラスタ化を行う場合に有効です。

ストップワードは戻されません。セクション・タグは、テキスト・トークンではないため、戻されません。

構文1: インメモリー表記憶域

CTX_DOC.TOKENS(index_name      IN VARCHAR2,
textkey         IN VARCHAR2,
restab          IN OUT NOCOPY TOKEN_TAB,
use_saved_copy  IN NUMBER DEFAULT CTX_DOC.SAVE_COPY_FALLBACK);

構文2: 結果表記憶域

CTX_DOC.TOKENS(index_name      IN VARCHAR2,
textkey         IN VARCHAR2,
restab          IN VARCHAR2,
query_id        IN NUMBER DEFAULT 0,
use_saved_copy  IN NUMBER DEFAULT CTX_DOC.SAVE_COPY_FALLBACK);

index_name

テキスト列の索引名を指定します。

textkey

一意のドキュメントのID(通常は主キー)を指定します。

textkeyパラメータは、次のいずれかです。

- 単一列の主キーの値。

- コンポジット(複数列)主キーのコード化された仕様。コンポジットtextkeyをコード化するには、CTX_DOC.PKENCODE プロシージャを使用します。

- ドキュメントを含む行のROWID。

主キーとROWIDの識別を切り替えるには、CTX_DOC.SET_KEY_TYPEを使用します。

restab

このプロシージャが、結果を表またはインメモリーPL/SQL表のいずれかに格納することを指定できます。

戻されるトークンは、textkeyで指定したドキュメント(または行)の索引に挿入されるトークンです。ストップワードは戻されません。セクション・タグは、テキスト・トークンではないため、戻されません。

トークン表の指定

結果を表に格納するには、表の名前を指定します。トークン表には自由に名前を付けることができますが、次の表に示す名前およびデータ型を持つ列が組み込まれている必要があります。

表9-2 トークン表に必要な列

列名

データ型

説明

QUERY_ID

NUMBER

CTX_DOC.TOKENSへの特定のコールで生成された結果の識別子(複数のTOKENコールの結果を表に格納するときのみ移入されます)。

TOKEN

VARCHAR2(64)

テキスト内のトークン文字列。

OFFSET

NUMBER

ドキュメント内のトークンの位置(ドキュメントの開始位置1との相対的な位置)。

LENGTH

NUMBER

トークンの文字の長さ。

インメモリー表の指定

結果をインメモリー表に格納するには、TOKEN_TAB型のインメモリー表の名前を指定します。TOKEN_TABデータ型は、次のように定義されます。

type token_rec is record (

token varchar2(64),
offset number,
length number

);

type token_tab is table of token_rec index by binary_integer;

操作の前に、CTX_DOC.TOKENSは、ユーザーが指定したTOKEN_TABを消去します。

query_id

restabに挿入した行の識別に使用する識別子を指定します。

use_saved_copy

$D表を参照してドキュメントのコピーをフェッチするかどうかと、$D表でドキュメントのコピーが取得できないときにどんなアクションを実行するかを指定します。

use_saved_copyパラメータに指定できる値は、次のいずれかです。

- CTX_DOC.SAVE_COPY_FALLBACK: $D表からドキュメントのコピーをフェッチします。ドキュメントのコピーが$D表に存在しない場合は、データストアからドキュメントをフェッチします。

- CTX_DOC.SAVE_COPY_ERROR: $D表からドキュメントのコピーをフェッチします。ドキュメントのコピーが$D表に存在しない場合は、エラー・メッセージを表示します。$D表でドキュメントのコピーが取得できないときに特定のフォールバック・ロジックを実装する場合には、この値を指定してください。

- CTX_DOC.SAVE_COPY_IGNORE: ドキュメントを常にデータストアからフェッチします。

デフォルト値はCTX_DOC.SAVE_COPY_FALLBACKです。

例

インメモリー・トークン

次の例では、ドキュメント1のトークンを生成し、それをインメモリー表に格納して、the_tokensとして宣言します。その後、表全体をループし、ドキュメントのトークンを表示します。

declare
the_tokens ctx_doc.token_tab;

begin
ctx_doc.tokens('myindex','1',the_tokens);
for i in 1..the_tokens.count loop
dbms_output.put_line(the_tokens(i).token);
end loop;
end;

10 CTX_ENTITYパッケージ

CTX_ENTITY PL/SQL パッケージを使用し、ワードおよび句を検索して個人や企業などのカテゴリに分類します。

CTX_ENTITYには、次のストアド・プロシージャおよびファンクションが含まれています。

名前

説明

ADD_EXTRACT_RULE

単一の抽出ルールを抽出ポリシーに追加します。

ADD_STOP_ENTITY

抽出されない特定のエンティティ参照またはエンティティ・タイプをマークします。

COMPILE

追加された抽出ルールを抽出ポリシーにコンパイルします。

CREATE_EXTRACT_POLICY

使用する抽出ポリシーを作成します。

DROP_EXTRACT_POLICY

抽出ポリシーを削除します。

EXTRACT

入力ドキュメントで検出されたエンティティを示すXMLドキュメントを生成します。

REMOVE_EXTRACT_RULE

抽出ポリシーから単一の抽出ルールを削除します。

REMOVE_STOP_ENTITY

抽出ポリシーからストップ・エンティティを削除します。

10.1 ADD_EXTRACT_RULE

ADD_EXTRACT_RULEプロシージャは、単一の抽出ルールを抽出ポリシーに追加します。インボーカは、ルールを独自の抽出ポリシーに追加します。抽出ルールは、文全体のスコープを含みます。抽出ルールでは、ルール式のエンティティ・タイプおよびルール演算子を除いて大/小文字を区別する必要があります。ルール追加の順序は重要ではありません。ルールの追加は、CTX_ENTITY.COMPILEが実行されるまで有効ではありません。このプロシージャは、コミットを発行します。

構文

CTX_ENTITY.ADD_EXTRACT_RULE(
policy_name                 IN VARCHAR2,
rule_id                     IN INTEGER,
extraction_rule             IN VARCHAR2);

policy_name

ポリシーの名前を指定します。

rule_id

抽出ポリシー内の一意のルールIDを指定します。ルールIDは0(ゼロ)より大きくする必要があります。

extraction_rule

XML形式のルール・テキストは、言語、式、および抽出するエンティティを指定します。ルール・テキストは、次のXMLスキーマに準拠します。

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="rule">
<xsd:sequence>
<xsd:element name="expression" type="xsd:string"/>
<xsd:complexType>
<xsd:attribute name="refid" type="xsd:positiveInteger"/>
</xsd:complexType>
<xsd:element name="comments type="xsd:string" default="\0"/>
</xsd:sequence>
</xsd:attribute name="language" type="xsd:string" default="ALL"/>
</xsd:element>
</xsd:schema>

詳細は次のとおりです。

- ルール・タグの言語属性は、ルールに適用される言語を指定します。ルールは、指定された言語のドキュメントにのみ適用されます。言語属性は、省略することも、ルールがすべてのドキュメントに一致する場合には「ALL」に設定することもできます。

- 式タグには、マッチングで使用されるposix正規表現が含まれます。

- コメント・タグを使用すると、ユーザーはコメントをこのユーザー・ルールと関連付けることができます。

- タイプ・タグは、抽出されたエンティティ・テキストを所定のエンティティ・タイプに割り当てます。タイプ・タグのrefid属性は、正規表現のどの逆参照が実際のエンティティに対応するかを指定します。エンティティ・タイプはOracleが提供するタイプのいずれか、これは表10-1にリストされています。または、ユーザー定義のタイプでもかまいません。その場合は、文字xを接頭辞として指定する必要があります。

表10-1 提供されるエンティティ・タイプ

提供されるエンティティ・タイプ

説明

例

building

特定の建物

ホワイトハウス

city

ニューヨーク

company

オラクル社

country

米国

currency

ドル

date

7月4日

day

月曜日、火曜日

email_address

person@example.com

geo_political

政治組織または戦略組織

国際連合

holiday

国別の休日の名前

労働者の日

location_other

他のタイプの場所

大西洋

month

6月、7月

non_profit

非営利組織

赤十字社

organization_other

他のタイプの組織

最高裁判所

percent

数字と%で表される

10%

person_jobtitle

肩書で参照される個人

社長、教授

person_name

名前で参照される個人

John Doe

person_other

他のタイプの個人

他のタイプの個人(犯罪者など)

phone_number

(123)-456-7890

postal_address

Redwood Shores, CA

product

Oracle Text

北アメリカ

ssn

社会保障番号

123-45-6789

state

州や県

カリフォルニア

time_duration

時間の長さ

10秒

tod

時刻

午前8時

url

Webアドレス

www.example.com

zip_code

郵便番号

CA 94065

例1

次の例は、抽出ルールの定義方法およびエンティティ抽出ポリシーへの関連付け方法を示しています。次に、ドキュメントの電子メール・アドレスを検索する簡単な抽出ルールを定義します。

begin
ctx_entity.add_extract_rule('pol1', 1,
'<rule>
<expression>email is (\w+@\w+\.\w+)</expression>
<type refid = "1">email_address</type>
</rule>');
end;
/

詳細は次のとおりです。

- 「My email address is jdoe@company.com」という文の場合、この抽出ルールはemail_addressエンティティ・タイプとして「jdoe@company.com」を抽出します。

- ルールがpol1という抽出ポリシーに追加されます。

- ルールIDに1が使用されて、ルールが追加されます。

- このルールのXMLの説明は、次のとおりです。

- ルール・タグの言語属性は空のままです。このため、ルールがすべての言語に適用されます。

- 式タグは、抽出で使用する正規表現を含みます。

- タイプ要素の値とタイプ・タグのrefid属性は、最初の逆参照とエンティティのテキストの対応を指定します。

例2

次に、ドキュメントの電話番号を検索する簡単な抽出ルールを定義します。

begin
ctx_entity.add_extract_rule('pol1', 2,
'<rule language="english">
<expression>(\(d{3}\) \d{3}-\d{3}-\d{4})</expression>
<comments>Rule for phone numbers</comments>
<type refid="1">email_address</type>
</rule>';
end;
/

詳細は次のとおりです。

- 「I can be contacted at (123) 456-7890」という文の場合、この抽出ルールはphone_numberエンティティ・タイプとして「(123) 456-7890」を抽出します。

- ルールがpol1という抽出ポリシーに追加されます。

- ルールIDに2が使用されて、ルールが追加されます。

- ルールのXMLの説明は、次のとおりです。

- ルール・タグの言語属性はenglishに設定されます。このため、ルールが英語のドキュメントにのみ適用されます。

- 式タグは、抽出で使用する正規表現を含みます。

- タイプ要素の値とタイプ・タグのrefid属性は、最初の逆参照とエンティティのテキストの対応を指定します。

- 説明のコメントがこのルールと関連付けられます。

10.2 ADD_STOP_ENTITY

このプロシージャを使用して、抽出されない特定のエンティティ参照またはエンティティ・タイプをマークします。インボーカは、独自の抽出ポリシーにストップ・エンティティを追加します。CTX_ENTITY.COMPILEを実行するまで有効になりません。entity_nameとentity_typeのいずれか一方をNULLにできますが、両方をそう設定することはできません。あるストップ・エンティティ別のストップ・エンティティのサブセットである場合、CTX_ENTITY.COMPILEの後にサブセットとしてマークされ、抽出には使用されません。このプロシージャは、コミットを発行します。

構文

CTX_ENTITY.ADD_STOP_ENTITY(
policy_name                 IN VARCHAR2,
entity_name                 IN INTEGER,
entity_type                 IN VARCHAR2 DEFAULT NULL,
comments                    IN VARCHAR2 DEFAULT NULL);

policy_name

追加されるストップ・エンティティのポリシー名を指定します。

entity_name

ストップ・エンティティとしてリストするエンティティ名を指定します。entity_typeがNULLの場合、このentity_nameのすべての参照がストップ・エンティティとしてリストされます。大/小文字が区別されます。

entity_type

entity_nameがNULLの場合、エンティティ・タイプ全体をストップ・エンティティとしてリストするように指定されます。entity_nameがNULLでない場合、<entity_type, entity_name>のみがストップ・エンティティとして指定されます。大文字と小文字は区別されません。最大バイト長は、4000バイトです。

comments

最大バイト長は、4000バイトです。

例

次の例は、すべての個人に対応するストップ・エンティティを追加します。コンパイル後、抽出でpersonエンティティ・タイプの参照はレポートされません。

exec ctx_entity.add_stop_entity('pol1', NULL, 'person');

次の例は、<'person', 'john doe'>に対応するストップ・エンティティを追加します。コンパイル後、抽出で<'person', 'john doe'>のペアはレポートされなくなります。このストップ・エンティティは、実際には最初に追加されたストップ・エンティティのサブセットです。CTX_USER_EXTRACT_STOP_ENTITIESビューでサブセットとマークされ、抽出では使用されません。

exec ctx_entity.add_stop_entity('pol1', 'john doe', 'person');

次の例は、fordのすべての参照に対応するストップ・エンティティを追加します。コンパイル後、エンティティ・タイプの参照に関係なく、抽出でfordエンティティの参照がレポートされません。たとえば、fordと個人が対応するルールの場合、抽出でこの一致はレポートされません。fordと企業が対応するルールの場合も、抽出でこの一致はレポートされません。

exec ctx_entity.add_stop_entity('pol1', 'ford', NULL);

関連項目

"COMPILE"

"CTX_USER_EXTRACT_STOP_ENTITIES"

10.3 COMPILE

このプロシージャは、追加された抽出ルールを抽出ポリシーにコンパイルします。これを使用して、追加されたストップ・エンティティを抽出ポリシーにコンパイルすることもできます。ポリシーにルールまたはストップ・エンティティを追加した場合は、このプロシージャを呼び出す必要があります。

インボーカは、ルールおよびストップ・エンティティを独自の抽出ポリシーにコンパイルします。ユーザーは、追加されたルールまたはストップ・エンティティおよび両方のコンパイルを選択できます。

コンパイル後、エンティティ抽出で使用されているルールとストップ・エンティティがCTX_USER_EXTRACT_RULESおよびCTX_USER_EXTRACT_STOP_ENTITIESビューに表示されます。

構文

CTX_ENTITY.COMPILE(
policy_name                 IN VARCHAR2,
compile_choice              IN NUMBER DEFAULT COMPILE_ALL,
locking                     IN NUMBER DEFAULT LOCK_NOWAIT_ERROR);

policy_name

コンパイルされるポリシー名を指定します。

compile_choice

ストップ・エンティティとしてリストするエンティティ名を指定します。entity_typeがNULLの場合、このentity_nameのすべての参照がストップ・エンティティとしてリストされます。大/小文字が区別されます。

オプションは、COMPILE_ALL、COMPILE_RULES、およびCOMPILE_STOP_ENTITIESです。COMPILE_ALLは、ルールおよびストップ・エンティティをコンパイルします。COMPILE_RULESは、ルールのみコンパイルします。COMPILE_STOP_ENTITIESは、ストップ・エンティティのみコンパイルします。

locking

最大バイト長は、4000バイトです。別のCOMPILEが同じポリシーですでに実行されている場合のCOMPILEの対応を構成します。

lockingのオプションは、次のとおりです。

- CTX_ENTITY.LOCK_WAIT
別のコンパイルが実行されている場合は、実行中のコンパイルが完了するまで待機してからコンパイルを開始します。(ロックを取得できない場合は無制限に待機し、maxtime設定は無視されます。)

- CTX_ENTITY.LOCK_NOWAIT
別のコンパイルが実行されている場合は、エラーなしで即時に戻ります。

- CTX_ENTITY.LOCK_NOWAIT_ERROR
別の同期化が実行されている場合は、「DRG-51313: DMLまたは最適化ロックを待機中にタイムアウトになりました」というエラーが発生します。

例

次の例は、デフォルト設定を使用してポリシーをコンパイルします。

exec ctx_entity.compile('pol1');

次の例は、ポリシーのストップ・エンティティのみコンパイルします。

exec ctx_entity.compile('pol1', CTX_ENTITY.COMPILE_STOP_ENTITIES);

次の例は、ルールおよびストップ・エンティティをコンパイルします。ロックが存在する場合、ファンクションが即時に戻されますが、エラーは発生しません。

exec ctx_entity.compile('pol1', CTX_ENTITY.COMPILE_ALL,
CTX_ENTITY.LOCK_NOWAIT);

関連項目

"CTX_USER_EXTRACT_RULES"

"CTX_USER_EXTRACT_STOP_ENTITIES"

10.4 CREATE_EXTRACT_POLICY

CREATE_EXTRACT_POLICYプロシージャは、使用する抽出ポリシーを作成します。ポリシーの所有者のみ、このポリシーを使用できます。

構文

CTX_ENTITY.CREATE_EXTRACT_POLICY(
policy_name                   IN VARCHAR2,
lexer                         IN VARCHAR2 DEFAULT NULL,
include_supplied_rules        IN BOOLEAN DEFAULT TRUE,
include_supplied_dictionary   IN BOOLEAN DEFAULT TRUE
);

policy_name

新しい抽出ポリシーの名前を指定します。

lexer

レクサー・プリファレンスの名前を指定します。AUTO_LEXERのみがサポートされています。指定しない場合、CTXSYS.DEFAULT_EXTRACT_LEXERが使用されます。index_stemsおよびderiv_stems属性は使用できません。

include_supplied_rules

Oracleから提供されるルールがエンティティ抽出に含まれるかどうかを指定します。falseの場合、自動的な頭字語解決がオフになります。デフォルトはtrueです。

include_supplied_dictionary

Oracleから提供されるディクショナリがエンティティ抽出に含まれるかどうかを指定します。デフォルトはtrueです。

例

次の例は、デフォルト設定を使用した抽出ポリシーを作成します。デフォルトでは、ルールとディクショナリなどのOracleから提供される機能が使用可能です。

exec CTX_ENTITY.CREATE_EXTRACT_POLICY('pol1');

次の例は、明示的に特定のパラメータを指定する抽出ポリシーを作成します。使用するレクサーをmylexとして指定しており、それをAUTO_LEXERプリファレンスとして実行する必要があります。Oracleが提供するルールも含まれますが、Oracleが提供するディクショナリは無効化されます。

exec CTX_ENTITY.CREATE_EXTRACT_POLICY('pol2', 'mylex', TRUE, FALSE);

関連項目

"AUTO_LEXER"

"CTXSYS.DEFAULT_EXTRACT_LEXER"

10.5 DROP_EXTRACT_POLICY

DROP_EXTRACT_POLICYプロシージャは、抽出ポリシーを削除します。ポリシーの所有者のみ、これらのポリシーを削除できます。このプロシージャは、コミットを発行します。

構文

CTX_ENTITY.DROP_EXTRACT_POLICY(
policy_name                 IN VARCHAR2
);

policy_name

削除する抽出ポリシーの名前を指定します。

例

次の例は、pol2抽出ポリシーを削除します。

exec ctx_entity.drop_extract_policy('pol2');

10.6 EXTRACT

EXTRACTプロシージャは、指定されたドキュメントのエンティティ抽出を実行し、ドキュメントで検出されたエンティティを示すXMLドキュメントを生成します。XMLドキュメントは、エンティティのテキスト、タイプ、およびドキュメント内の場所を提供します。抽出には、指定された抽出ポリシーで定義された設定(ルール、ストップ・エンティティ、ディクショナリ)を使用します。

エンティティ・タイプ名の結果は大文字になります。インボーカは、独自の抽出ポリシーを使用して抽出を実行できます。

実行前に、CTX_ENTITY.COMPILEを発行する必要があります。

構文

CTX_ENTITY.EXTRACT(
policy_name                 IN VARCHAR2,
document                    IN CLOB,
language                    IN VARCHAR2,
result                      IN OUT NOCOPY CLOB,
entity_type_list            IN CLOB DEFAULT NULL
);

policy_name

指定されたポリシーを使用して、抽出を実行します。

document

抽出を実行する入力ドキュメント。

entity_typeがNULLの場合、このentity_nameのすべての参照がストップ・エンティティとしてリストされます。大/小文字が区別されます。

language

英語のみがサポートされています。

result

ドキュメントから抽出されたエンティティのXMLを含むCLOB。

entity_typeがNULLの場合、このentity_nameのすべての参照がストップ・エンティティとしてリストされます。大/小文字が区別されます。

entity_type_list

抽出にエンティティタイプのサブセットのみを考慮する場合に指定します。entity_type_listは、カンマで区切られたリストです。entity_type_listが指定されない場合、エンティティ抽出にすべてのエンティティタイプが考慮されます。

例

次の例は、サンプルのドキュメントのエンティティ抽出の結果を示しています。pol1という抽出ポリシーを作成した場合、入力ドキュメントは次のようになります。

Sam A. Schwartz retired as executive vice president of Hupplewhite INc. in New York.

次に、ctx_entity.extractプロシージャをコールして、このドキュメントのエンティティを含むXMLドキュメントを生成します。今後の参照のために結果のCLOBをentitiesという表に挿入します。

declare
myresults clob;
begin
select txt into mydoc from docs where id=1;
ctx_entity.extract('p1', mydoc, null, myresults);
insert into entities values(1, myresults);
commit;
end;
/

これで、entities表から抽出されたエンティティを調査できます。エンティティの分類に使用されるソースとともに、各エンティティに入力ドキュメントの場所がタグ付けされます。

<entities>
<entity id="0" offset="75" length="8" source="SuppliedDictionary">
<text>New York</text>
<type>city</type>
</entity>
<entity id="1" offset="55" length="16" source="SuppliedRule">
<text>Hupplewhite Inc.</text>
<type>company</type>
</entity>
<entity id="2" offset="27" length="24" source="SuppliedDictionary">
<text>Sam A. Schwartz</text>
<type>person_name</type>
</entity>
<entity id="4" offset="75" length="8" source="SuppliedDictionary">
<text>New York</text>
<type>state</type>
</entity>
</entities>

10.7 REMOVE_EXTRACT_RULE

REMOVE_EXTRACT_RULEプロシージャは、指定されたポリシーからrule_idの抽出ルールを削除します。指定されたポリシーの所有者のみ、ポリシーから抽出ルールを削除できます。CTX_ENTITY.COMPILEの実行後、抽出ルールの削除が有効になります。

構文

CTX_ENTITY.REMOVE_EXTRACT_RULE(
policy_name                 IN VARCHAR2,
rule_id                     IN INTEGER
);

policy_name

指定されたポリシーから抽出ルールを削除します。

rule_id

削除する抽出ルールのルールIDを指定します。

例

次の例は、pol1ポリシーからIDが1の抽出ルールを削除します。

exec ctx_entity.remove_extract_rule('pol1', 1);

10.8 REMOVE_STOP_ENTITY

REMOVE_STOP_ENTITYプロシージャは、抽出ポリシーからストップ・エンティティを削除します。指定されたポリシーの所有者のみ、ポリシーからストップ・エンティティを削除できます。ストップ・エンティティの削除は、CTX_ENTITY.COMPILEの実行後に有効になります。entity_nameまたはentity_typeにNULLを指定できますが、両方には指定できません。

構文

CTX_ENTITY.REMOVE_STOP_ENTITY(
policy_name                 IN VARCHAR2,
entity_name                 IN INTEGER DEFAULT NULL,
entity_type                 IN VARCHAR2 DEFAULT NULL
);

policy_name

指定されたポリシーからstop_entityを削除します。

entity_name

ストップ・エンティティ・リストから削除される名前を指定します。CTX_ENTITY.ADD_STOP_ENTITYを使用して、あらかじめstop_entityがstop_entityリストに追加されている必要があります。

entity_type

ストップ・エンティティ・リストから削除されるエンティティのタイプを指定します。CTX_ENTITY.ADD_STOP_ENTITYを使用して、あらかじめstop_entityがストップ・エンティティ・リストに追加されている必要があります。

例

exec ctx_entity.remove_stop_entity('pol1', NULL, 'person_name');

例の文は、pol1ポリシーからentity_type person_nameのすべての参照に対応するストップ・エンティティを削除します。実行後、このストップ・エンティティは、CTX_USER_EXTRACT_STOP_ENTITIESビューで「to be deleted」としてマークされます。ユーザーがCTX_ENTITY.COMPILEを実行すると、ストップ・エンティティの削除が有効になります。

関連項目

"COMPILE"

"ADD_STOP_ENTITY"

"CTX_USER_EXTRACT_STOP_ENTITIES"

11 CTX_OUTPUTパッケージ

この章では、PL/SQLパッケージCTX_OUTPUTの使用方法について説明します。

CTX_OUTPUTには、次のストアド・プロシージャが含まれています。

名前

説明

ADD_EVENT

索引ログにイベントを追加します。

ADD_TRACE

トレースを使用可能にします。

DISABLE_QUERY_STATS

索引の問合せ統計の収集をオフに切り替えます。

ENABLE_QUERY_STATS

索引の問合せ統計の収集を使用可能にします。

END_LOG

索引およびドキュメント・サービスの要求のロギングを停止します。

END_QUERY_LOG

ログ・ファイルへの問合せのロギングを停止します。

GET_TRACE_VALUE

トレースの値を戻します。

LOG_TRACES

トレースをログ・ファイルに出力します。

LOGFILENAME

現在のログ・ファイルの名前を戻します。

REMOVE_EVENT

索引ログからイベントを削除します。

REMOVE_TRACE

トレースを使用不可にします。

RESET_TRACE

トレースを消去します。

START_LOG

索引およびドキュメント・サービスの要求のロギングを開始します。

START_QUERY_LOG

問合せのログ・ファイルを作成します。

11.1 ADD_EVENT

詳細なログ出力を表示するためにイベントを索引ログに追加するか、またはOracle Textエラーのエラー・トレースを使用可能にします。

構文

CTX_OUTPUT.ADD_EVENT(event in NUMBER, errnum in NUMBER := null);

event

ロギングする索引イベントの型を指定します。次のイベントを追加できます。

- CTX_OUTPUT.EVENT_INDEX_PRINT_ROWID: 索引付けが終了した各行のROWIDをロギングします。これは、失敗した索引操作のデバッグに有効です。

- CTX_OUTPUT.EVENT_OPT_PRINT_TOKEN: 各トークンが最適化されるたびに出力します。

- CTX_OUTPUT.EVENT_INDEX_PRINT_TOKEN: 各トークンが索引付けされるたびに出力します。

- CTX_OUTPUT.EVENT_DRG_DUMP_ERRORSTACK: ログの指定されたDRGエラーのスタック・トレースを出力します。errnumが指定されないと、エラーが発生します。

errnum

CTX_OUTPUT.EVENT_DRG_DUMP_ERRRORSTACKイベントのDRGエラー番号を指定します。

例

begin
CTX_OUTPUT.ADD_EVENT(CTX_OUTPUT.EVENT_INDEX_PRINT_ROWID);
end;

関連項目

"REMOVE_EVENT"

11.2 ADD_TRACE

トレースを使用可能にします。トレースが使用可能でない場合、このコールにより、トレースがアクティブなトレースのリストに追加され、値が0(ゼロ)にリセットされます。トレースがすでに使用可能になっている場合、エラーが発生します。

構文

CTX_OUTPUT.ADD_TRACE(trace_id BINARY_INTEGER);

trace_id

使用可能にするトレースのIDを指定します。有効なトレース値は、表11-1を参照してください。

注意

表11-1は、有効なトレースを示しています。

表11-1 有効なトレース

記号

ID

メトリック

TRACE_IDX_USER_DATASTORE

1

ユーザー・データストアの実行に要した時間

TRACE_IDX_AUTO_FILTER

2

AUTO_FILTERフィルタの起動に要した時間(非推奨のTRACE_IDX_INSO_FILTERトレースの代替)

TRACE_QRY_XX_TIME

3

$Xカーソルの実行に要した時間

TRACE_QRY_XF_TIME

4

$Xからのフェッチに要した時間

TRACE_QRY_X_ROWS

5

トークン・メタデータが$Xからフェッチされた行の合計数

TRACE_QRY_IF_TIME

6

$IからLOBロケータをフェッチするために要した時間

TRACE_QRY_IR_TIME

7

$I LOB情報の読取りに要した時間

TRACE_QRY_I_ROWS

8

$I token_infoが実際に読み取られた行の数

TRACE_QRY_I_SIZE

9

$I LOBから読み取られたバイト数

TRACE_QRY_R_TIME

10

$R情報のフェッチおよび読取りに要した時間

TRACE_QRY_CON_TIME

11

CONTAINS処理に要した時間(drexrcontains/drexrstart/drexrfetch)

TRACE_QRY_S_TIME

15

$S情報のフェッチおよび読取りに要した時間

TRACE_QRY_O_TIME

19

$O情報の読取りに要した時間

TRACE_QRY_D_TIME

23

$D情報の読取りに要した時間

TRACE_QRY_SNIPPET_TIME

25

ドキュメントからスニペットを抽出する際に費やした時間

TRACE_HIL_DOCSERV_TIME

26

ドキュメント・サービスのプロシージャ(スニペット、ハイライト、マークアップ)によって費やされた時間

トレースはロギングから独立しています。トレースの開始にはロギングがオンになっている必要はなく、その逆も同じです。

トレースはセッションに関連付けられています。1つのセッション内で発生する操作は測定できますが、逆にセッション全体にわたる測定はできません。

パラレル同期化または最適化の際、トレースが現在有効になっている場合にかぎり、トレース・プロファイルはスレーブ・セッションにコピーされます。各スレーブは独自のトレースを蓄積し、終了前にすべてのトレース値をスレーブ・ログ・ファイルに暗黙的に書き込みます。

関連項目

"REMOVE_TRACE"

"GET_TRACE_VALUE"

"LOG_TRACES"

"RESET_TRACE"

『Oracle Textアプリケーション開発者ガイド』

11.3 DISABLE_QUERY_STATS

索引の問合せ統計の収集を使用不可にします。

構文

ctx_output.disable_query_stats(
index_name IN VARCHAR2
);

index_name

問合せ統計の収集を使用不可にする索引の名前。

例

索引myindexの問合せ統計の収集をオフに切り替えます。

CTX_OUTPUT.DISABLE_QUERY_STATS(myindex);

注意

索引の問合せ統計を使用不可にすると、その索引の問合せに関連するメタデータの収集と格納が停止されます。その索引に対応するすべてのエントリは、ディクショナリ表から消去されます。問合せ統計が使用可能でない索引に対してこのプロシージャをコールすると、エラーが戻ります。

関連項目

CTX_OUTPUT."ENABLE_QUERY_STATS"

CTX_REPORT."INDEX_STATS"

11.4 ENABLE_QUERY_STATS

索引の問合せ統計の収集を使用可能にします。索引の問合せに関連するメタデータを保存する場合は、このプロシージャを使用して、その索引に対する統計の収集を使用可能にします。索引のctx_output.enable_query_statsがオンになっている場合にのみ、収集されたメタデータにアクセスできます。

注意:

問合せ統計メタデータへのアクセスは、索引のctx_output.enable_query_statsがオンになっている場合にのみ機能します。収集される問合せ統計メタデータのリストは、「CTX_REPORT.「INDEX_STATS」を参照してください。

構文

ctx_output.enable_query_stats(
index_name IN VARCHAR2
);

index_name

問合せ統計の収集を使用可能にする索引の名前。

例

索引myindexの問合せ統計の収集をオンに切り替えます。

CTX_OUTPUT.ENABLE_QUERY_STATS(myindex);

注意

索引の問合せ統計が使用可能かどうかを示す情報は、CTX_INDEXESビューおよびCTX_USER_INDEXESビューのidx_query_stats_enabled列で確認できます。索引のquery_statsが使用可能な場合は、その列に「YES」が表示され、使用可能でない場合は「NO」が表示されます。

問合せ統計に対応するデータは、永続的なディクショナリ表に格納されます。特定の索引に対してstatisticsが使用可能になると、その索引について全セッションから問合せ統計が収集されます。

問合せ統計がすでに使用可能になっている索引に対してこのプロシージャをコールすると、エラーが発生します。

統計収集は、問合せのパフォーマンスにわずかな影響を与えます。

関連項目

CTX_OUTPUT."DISABLE_QUERY_STATS"

CTX_REPORT."INDEX_STATS"

11.5 END_LOG

索引およびドキュメント・サービスの要求のロギングを停止します。

構文

ctx_output.end_log;

例

begin
CTX_OUTPUT.END_LOG;
end;

11.6 END_QUERY_LOG

CTX_OUTPUT.START_QUERY_LOGで作成されたログ・ファイルへの問合せのロギングを停止します。

構文

ctx_output.end_query_log;

例

begin

CTX_OUTPUT.START_QUERY_LOG('mylog1');
< get queries >
CTX_OUTPUT.END_QUERY_LOG;

end;

11.7 GET_TRACE_VALUE

トレースの現行値をプログラムによって取得します。

構文

CTX_OUTPUT.GET_TRACE_VALUE(trace_id BINARY_INTEGER);

trace_id

値を取得するトレースIDを指定します。有効な値は、表11-1を参照してください。

例

これにより、変数valueの値を設定します。

value := ctx_output.get_trace_value(trace_id);

注意

SQLを使用してもトレース値を取得できます。

select * from ctx_trace_values;

CTX_TRACE_VALUESビューのエントリは、「CTX_TRACE_VALUES」を参照してください。

トレースが使用可能でない場合は、エラーが発生します。

このコールでは、トレースは0(ゼロ)にリセットされません。

トレースはセッションに関連付けられています。1つのセッション内で発生する操作は測定できますが、逆にセッション全体にわたる測定はできません。

関連項目

"REMOVE_TRACE"

"ADD_TRACE"

"LOG_TRACES"

"RESET_TRACE"

『Oracle Textアプリケーション開発者ガイド』

11.8 LOG_TRACES

すべてのアクティブなトレースをログ・ファイルに出力します。

構文

CTX_OUTPUT.LOG_TRACES;

注意

ロギングが開始されていない場合は、エラーが発生します。

このコールでは、トレースは0(ゼロ)にリセットされません。

このプロシージャは、LOG_DIRECTORYシステム・パラメータで指定したディレクトリ(UNIXでは$ORACLE_HOME/ctx/log)の中でログ・ファイルを検索します。現在の設定を確認するにはCTX_PARAMETERSビューを問い合せます。

関連項目

"REMOVE_TRACE"

"GET_TRACE_VALUE"

"ADD_TRACE"

"RESET_TRACE"

『Oracle Textアプリケーション開発者ガイド』

11.9 LOGFILENAME

現在のログのファイル名を戻します。このプロシージャは、LOG_DIRECTORYシステム・パラメータで指定したディレクトリ(UNIXでは$ORACLE_HOME/ctx/log)の中でログ・ファイルを検索します。現在の設定を確認するにはCTX_PARAMETERSビューを問い合せます。

構文

CTX_OUTPUT.LOGFILENAME RETURN VARCHAR2;

戻り値

ログ・ファイル名です。

例

declare
logname varchar2(100);
begin
logname := CTX_OUTPUT.LOGFILENAME;
dbms_output.put_line('The current log file is: '||logname);
end;

11.10 REMOVE_EVENT

索引ログからイベントを削除します。

構文

CTX_OUTPUT.REMOVE_EVENT(event in NUMBER);

event

ログから削除する索引イベントの型を指定します。次のイベントを削除できます。

- CTX_OUTPUT.EVENT_INDEX_PRINT_ROWID: 索引付けが終了した各行のROWIDをロギングします。これは、失敗した索引操作のデバッグに有効です。

- CTX_OUTPUT.EVENT_OPT_PRINT_TOKEN: 各トークンが最適化されるたびに出力します。

- CTX_OUTPUT.EVENT_INDEX_PRINT_TOKEN: 各トークンが索引付けされるたびに出力します。

例

begin

CTX_OUTPUT.REMOVE_EVENT(CTX_OUTPUT.EVENT_INDEX_PRINT_ROWID);

end;

関連項目

"ADD_EVENT "

11.11 REMOVE_TRACE

トレースを使用不可にします。

構文

CTX_OUTPUT.REMOVE_TRACE(trace_id BINARY_INTEGER);

trace_id

使用不可にするトレースのIDを指定します。有効な値は、表11-1を参照してください。

注意

トレースが使用可能でない場合は、エラーが発生します。

関連項目

"GET_TRACE_VALUE"

"ADD_TRACE"

"LOG_TRACES"

"RESET_TRACE"

『Oracle Textアプリケーション開発者ガイド』

11.12 RESET_TRACE

トレースを消去します(つまり0(ゼロ)にリセットします)。

構文

CTX_OUTPUT.RESET_TRACE(trace_id BINARY_INTEGER);

trace_id

リセットするトレースのIDを指定します。有効な値は、表11-1を参照してください。

注意

トレースが使用可能でない場合は、エラーが発生します。

関連項目

"REMOVE_TRACE"

"GET_TRACE_VALUE"

"ADD_TRACE"

"LOG_TRACES"

『Oracle Textアプリケーション開発者ガイド』

11.13 START_LOG

索引およびドキュメント・サービスの要求のロギングを開始します。

構文

CTX_OUTPUT.START_LOG(logfile in varchar2, overwrite in default true);

logfile

ログ・ファイルの名前を指定します。ログは、システム・パラメータLOG_DIRECTORYで指定したディレクトリに格納されています。

overwrite

logfileで指定された元の問合せログ・ファイル(すでに存在する場合)を上書きするか、またはそこに追加するかを指定します。デフォルトは、元の問合せログ・ファイルの上書きです。

例

begin
CTX_OUTPUT.START_LOG('mylog1');
end;

注意

ロギングはトレースから独立しています。トレースの開始にはロギングがオンになっている必要はなく、その逆も同じです。

ロギングはセッションに関連付けられています。1つのセッション内で発生する操作はログに記録できますが、逆に複数セッションにわたる操作はログに記録できません。

CTX_OUTPUT.START_LOGに使用されるファイル名の文字は、英数字、マイナス記号、ピリオド、スペース、ハッシュ記号、アンダースコア、一重引用符および二重引用符に制限されています。ファイル名にその他の文字が使用されていると、エラーが発生します。

11.14 START_QUERY_LOG

問合せログ・ファイルへの問合せ要求のロギングを開始します。

問合せのロギングを停止するには、CTX_OUTPUT.END_QUERY_LOGを使用します。どの問合せが最も頻繁に正常に戻されたかなど、ログに記録された問合せに関するレポートを取得するには、CTX_REPORT.QUERY_LOG_SUMMARYを使用します。

問合せログには、問合せ文字列、索引名、問合せのタイムスタンプ、および問合せがヒットを戻したかどうかが含まれます。2003年11月11日6:46 (現地時間)にBlues Guitaristsという句に対する問合せが成功した場合、問合せログに次の形式で入力されます。

<QuerySet><TimeStamp>18:46:51 02/04/03</TimeStamp><IndexName>
IDX_SEARCH_TABLE</IndexName><Query>Blues
Guitarists</Query><ReturnHit>Yes</ReturnHit></QuerySet>

構文

CTX_OUTPUT.START_QUERY_LOG(logfile in varchar2, overwrite in default true);

logfile

問合せログ・ファイルの名前を指定します。問合せログは、システム・パラメータLOG_DIRECTORYで指定したディレクトリに格納されています。

overwrite

logfileで指定された元の問合せログ・ファイル(すでに存在する場合)を上書きするか、またはそこに追加するかを指定します。デフォルトは、元の問合せログ・ファイルの上書きです。

例

begin

CTX_OUTPUT.START_QUERY_LOG('mylog1');
< get queries >
CTX_OUTPUT.END_QUERY_LOG;

end;

注意

CTX_OUTPUT.START_QUERY_LOGに使用されるファイル名の文字は、英数字、マイナス記号、ピリオド、スペース、ハッシュ記号、アンダースコア、一重引用符および二重引用符に制限されています。ファイル名にその他の文字が使用されていると、エラーが発生します。

ロギングはセッションに関連付けられています。1つのセッション内で発生する操作はログに記録できますが、逆に複数セッションにわたる操作はログに記録できません。

12 CTX_QUERYパッケージ

この章では、問合せフィードバックの生成、ヒット数のカウントおよびストアド・クエリー式の生成に使用できるPL/SQLパッケージCTX_QUERYについて説明します。

CTX_QUERYパッケージには、次のプロシージャおよびファンクションが含まれています。

名前

説明

BROWSE_WORDS

索引内のシード・ワードに関するワードを戻します。

COUNT_HITS

問合せへのヒット数を戻します。

EXPLAIN

問合せ式の解析および拡張情報を生成します。

HFEEDBACK

階層問合せフィードバック情報(上位語、下位語および関連語)を生成します。

REMOVE_SQE

指定したストアド・クエリー式をSQL表から削除します。

RESULT_SET

問合せを実行して、結果セットを生成します。

RESULT_SET_DOCUMENT

CONTAINS問合せのカーソルを明示的にクローズした後で、問合せテンプレートに<ctx_result_set_descriptor>要素がある場合に、結果セット・ドキュメントを保持します。

STORE_SQE

問合せを実行して、その結果をストアド・クエリー式表に格納します。

注意:

このパッケージを使用できるのは、索引タイプがCONTEXTの場合のみです。このパッケージは、CTXCATの索引タイプをサポートしていません。

12.1 BROWSE_WORDS

このプロシージャを使用すると、Oracle Textの索引内のワードをブラウズできます。シード・ワードを指定すると、BROWSE_WORDSは索引内のそのシード・ワードに関するワード、および各ワードが含まれているドキュメントのおよその数を戻します。

この機能は、問合せの詳細化に有効です。次のワードを識別できます。

- 非選択的ワード(そのワードを含むドキュメント件数が少ないワード)

- ドキュメント・セットの中でスペルが間違っているワード

構文1: 表への結果の格納

ctx_query.browse_words(

index_name  IN   VARCHAR2,
seed        IN   VARCHAR2,
restab      IN   VARCHAR2,
browse_id   IN   NUMBER   DEFAULT 0,
numwords    IN   NUMBER   DEFAULT 10,
direction   IN   VARCHAR2 DEFAULT BROWSE_AROUND,
part_name   IN   VARCHAR2 DEFAULT NULL

);

構文2: メモリーへの結果の格納

ctx_query.browse_words(

index_name  IN      VARCHAR2,
seed        IN      VARCHAR2,
resarr      IN OUT  BROWSE_TAB,
numwords    IN      NUMBER   DEFAULT 10,
direction   IN      VARCHAR2 DEFAULT BROWSE_AROUND,
part_name   IN      VARCHAR2 DEFAULT NULL

);

index

索引の名前を指定します。schema.nameで指定できます。ローカル索引である必要があります。

seed

シード・ワードを指定します。このワードは、ブラウズ拡張の前にレクサー処理されます。ワードがトークン表に存在する必要はありません。seedは単一のワードである必要があります。複数のワードをシードとして使用すると、エラーになります。

restab

結果表の名前を指定します。restabは、schema.nameとして入力できます。このプロシージャのコール前に、表が存在している必要があります。また、表に対するINSERT権限が必要です。この表は、次のスキーマを持つ必要があります。

列

データ型

browse_id

number

word

varchar2(64)

doc_count

number

restabの中にある行が、BROWSE_WORDSがコールされる前に削除されることはありません。

resarr

結果配列の名前を指定します。resarrはctx_query.browse_tab型です。

type browse_rec is record (
word varchar2(64),
doc_count number
);
type browse_tab is table of browse_rec index by binary_integer;

browse_id

0から2^32の間で数値識別子を指定します。このブラウズのために生成された行は、restabの中のbrowse_id列に値を持ちます。browse_idを指定しない場合、デフォルトは0(ゼロ)です。

numwords

戻すワード数を指定します。

direction

ブラウズの方向を指定します。次のいずれかを指定できます。

値

動作

BEFORE

シード・ワードおよびシードの前のワードをアルファベット順にブラウズします。

AROUND

シード・ワードおよびシードの前後のワードをアルファベット順にブラウズします。

AFTER

シード・ワードおよびシードの後のワードをアルファベット順にブラウズします。

記号CTX_QUERY.BROWSE_BEFORE、CTX_QUERY.BROWSE_AROUNDおよびCTX_QUERY.BROWSE_AFTERも、これらのリテラル値に対して定義されています。

part_name

ブラウズする索引パーティション名を指定します。

例

結果表でのワードのブラウズ

begin
ctx_query.browse_words('myindex','dog','myres',numwords=>5,direction=>'AROUND');
end;

select word, doc_count from myres order by word;

WORD       DOC_COUNT
--------   ----------
CZAR       15
DARLING    5
DOC        73
DUNK       100
EAR        3

結果配列でのワードのブラウズ

set serveroutput on;
declare
resarr ctx_query.browse_tab;
begin
ctx_query.browse_words('myindex','dog',resarr,5,CTX_QUERY.BROWSE_AROUND);
for i in 1..resarr.count loop
dbms_output.put_line(resarr(i).word || ':' || resarr(i).doc_count);
end loop;
end;

12.2 COUNT_HITS

指定した問合せへのヒット数を戻します。実測または予測モードでCOUNT_HITSをコールできます。実測モードは問合せへの正確なヒット数を戻します。予測モードは上限の見積りを戻しますが、実測モードよりも高速に実行します。

構文

構文1

exec CTX_QUERY.COUNT_HITS(
index_name  IN VARCHAR2,
text_query  IN VARCHAR2,
exact       IN BOOLEAN  DEFAULT TRUE,
part_name   IN VARCHAR2 DEFAULT NULL
) RETURN NUMBER;

構文2

exec CTX_QUERY.COUNT_HITS_CLOB_QUERY(
index_name  IN VARCHAR2,
text_query  IN CLOB,
exact       IN BOOLEAN DEFAULT TRUE,
part_name   IN VARCHAR2 DEFAULT NULL
) RETURN NUMBER;

index_name

索引の名前を指定します。

text_query

問合せを指定します。

exact

実測カウントにはTRUEを指定します。上限を見積るにはFALSEを指定します。

FALSEを指定することによって戻された数値はあまり正確ではありませんが、より高速に実行されます。FULL索引が最後に最適化されてから行が更新または削除されている場合、FALSEを指定すると高すぎる数値が返されることがあります。このような不適切なヒットは完全モードでの最適化によって削除され、FALSEに設定されたEXACTと、TRUEに設定されたEXACTの戻す数値が同一になります。

part_name

問い合せる索引パーティション名を指定します。

注意

問合せに構造化基準が含まれている場合は、SELECT COUNT(*)を使用してください。

索引がTRANSACTIONALパラメータを使用して作成されている場合、COUNT_HITSには同期化済のROWIDの他に保留中のROWIDも含まれます。

12.3 EXPLAIN

問合せ式に関する実行計画情報を生成するには、CTX_QUERY.EXPLAINを使用します。実行計画では、テキスト問合せ式に対して解析ツリーがグラフィカル表示されます。この情報は結果表に格納されます。

このプロシージャは問合せを実行しません。かわりに、問合せの入力前に、その問合せの拡張および解析の方法をユーザーに知らせます。これは、特にSTEM、ワイルド・カード、シソーラス、FUZZY、SOUNDEXまたはABOUT問合せに有効です。解析ツリーには、次の情報も表示されます。

- 実行の順序(演算子の優先順位)

- ABOUT問合せの正規化

- 問合せ式の最適化

- ストップワード変換

- コンポジット・ワード・トークンの分類

Oracle Textによる問合せの評価方法を理解しておくと、問合せの詳細化やデバッグを行うときに役立ちます。また、実行計画情報を使用してユーザーがより高度な問合せを作成できるように、アプリケーションを設計できます。

構文

構文1

exec CTX_QUERY.EXPLAIN(

index_name     IN VARCHAR2,
text_query     IN VARCHAR2,
explain_table  IN VARCHAR2,
sharelevel     IN NUMBER DEFAULT 0,
explain_id     IN VARCHAR2 DEFAULT NULL,
part_name      IN VARCHAR2 DEFAULT NULL

);

構文2

exec CTX_QUERY.EXPLAIN_CLOB_QUERY(
index_name     IN VARCHAR2,
text_query     IN CLOB,
explain_table  IN VARCHAR2,
sharelevel     IN NUMBER DEFAULT 0,
explain_id     IN VARCHAR2 DEFAULT NULL,
part_name      IN VARCHAR2 DEFAULT NULL
);

index_name

問い合せる索引名を指定します。

text_query

行を選択する基準として使用する問合せ式を指定します。

text_queryにワイルド・カード、FUZZYまたはSOUNDEX演算子が含まれている場合、このプロシージャは索引表を調べて拡張を判断します。

ワイルド・カード、FUZZY(?)およびSOUNDEX(!)式のフィードバックでは、通常の問合せで削除が遅延した場合、その理由を判断できません。

explain_table

text_queryに対する解析ツリー表現の格納に使用する表の名前を指定します。EXPLAINからの結果を格納するには、表に対して少なくともINSERT権限およびDELETE権限が必要です。

関連項目:

EXPLAIN表の構造の詳細は、「Oracle Text結果表」の「EXPLAIN表」を参照してください。

sharelevel

explain_tableを複数のEXPLAINコールで共有するかどうかを指定します。排他使用には0(ゼロ)を、共有使用には1を指定します。デフォルトは0(排他使用)です。

0(ゼロ)を指定すると、システムは次のEXPLAINのコールの前に自動的に結果表を切り捨てます。

共有使用の1を指定すると、このプロシージャは結果表を切り捨てません。同じexplain_idを持つ結果のみが更新されます。同じexplain_idの結果が存在しない場合は、新しい結果が実行計画表に追加されます。

explain_id

複数のEXPLAINコールが同じ共有EXPLAIN表を使用する場合は、EXPLAINプロシージャが戻した実行計画結果を識別する名前を指定します。デフォルトはNULLです。

part_name

問い合せる索引パーティション名を指定します。

例

実行計画表の作成

たとえば、test_explainという名前の実行計画表を作成するには、次のSQL文を使用します。

create table test_explain(
explain_id varchar2(30),
id number,
parent_id number,
operation varchar2(30),
options varchar2(30),
object_name varchar2(64),
position number,
cardinality number);

CTX_QUERY.EXPLAINの実行

comp% OR ?smithなどの問合せ式の拡張を取得するには、次のようにCTX_QUERY.EXPLAINを使用します。

ctx_query.explain(
index_name => 'newindex',
text_query => 'comp% OR ?smith',
explain_table => 'test_explain',
sharelevel => 0,
explain_id => 'Test');

実行計画表からのデータの取出し

実行計画表を読み込むには、次のように列を選択できます。

select explain_id, id, parent_id, operation, options, object_name, position
from test_explain order by id;

次のように、出力はID順に並べられ、階層問合せをシミュレートします。

EXPLAIN_ID    ID PARENT_ID OPERATION    OPTIONS OBJECT_NAME POSITION
----------- ---- --------- ------------ ------- ----------- --------
Test           1         0 OR           NULL    NULL          1
Test           2         1 EQUIVALENCE  NULL    COMP%         1
Test           3         2 WORD         NULL    COMPTROLLER   1
Test           4         2 WORD         NULL    COMPUTER      2
Test           5         1 EQUIVALENCE  (?)     SMITH         2
Test           6         5 WORD         NULL    SMITH         1
Test           7         5 WORD         NULL    SMYTHE        2

制限事項

CTX_QUERY.EXPLAINでは、問合せテンプレートの使用はサポートされていません。

リモート問合せでCTX_QUERY.EXPLAINは使用できません。

関連項目

Oracle Text CONTAINS問合せ演算子

Oracle Textでのストップワード変換

12.4 HFEEDBACK

英語またはフランス語の場合、このプロシージャは、指定された問合せへの階層問合せフィードバック情報(上位語、下位語および関連語)を生成します。

上位語、下位語および関連語情報はナレッジ・ベースから取得されます。ただし、索引中にも存在するナレッジ・ベース語句のみが、問合せフィードバック情報として戻ります。これによって、HFEEDBACKプロシージャから戻された語句が、現在索引付けされているドキュメント・セットよりヒットする可能性が高くなります。

階層問合せフィードバック情報は、他の問合せ語句をユーザーに提示する場合に有効です。

構文

構文1

exec CTX_QUERY.HFEEDBACK(
index_name     IN VARCHAR2,
text_query     IN VARCHAR2,
feedback_table IN VARCHAR2,
sharelevel     IN NUMBER DEFAULT 0,
feedback_id    IN VARCHAR2 DEFAULT NULL,
part_name      IN VARCHAR2 DEFAULT NULL
);

構文2

exec CTX_QUERY.HFEEDBACK_CLOB_QUERY(
index_name     IN VARCHAR2,
text_query     IN CLOB,
feedback_table IN VARCHAR2,
sharelevel     IN NUMBER DEFAULT 0,
feedback_id    IN VARCHAR2 DEFAULT NULL,
part_name      IN VARCHAR2 DEFAULT NULL
);

index_name

問い合せるテキスト列の索引の名前を指定します。

text_query

行を選択する基準として使用する問合せ式を指定します。

feedback_table

フィードバック語の格納に使用する表の名前を指定します。

関連項目:

HFEEDBACK表の構造の詳細は、「Oracle Text結果表」の「HFEEDBACK表」を参照してください。

sharelevel

feedback_tableを複数のHFEEDBACKコールで共有するかどうかを指定します。排他使用には0(ゼロ)を、共有使用には1を指定します。デフォルトは0(排他使用)です。

0(ゼロ)を指定すると、システムは次のHFEEDBACKのコールの前に自動的にフィードバック表を切り捨てます。

共有使用の1を指定すると、このプロシージャはフィードバック表を切り捨てません。同じfeedback_idを持つ結果のみが更新されます。同じfeedback_idの結果が存在しない場合は、新しい結果がフィードバック表に追加されます。

feedback_id

複数のHFEEDBACKコールが同じ共有フィードバック表を使用する場合は、HFEEDBACKのコールによって戻されたフィードバック結果を識別する値を指定します。デフォルトはNULLです。

part_name

問い合せる索引パーティション名を指定します。

例

HFEEDBACK結果表の作成

CTX_QUERY.HFEEDBACK で使用する結果表を次のように作成します。

CREATE TABLE restab (
feedback_id VARCHAR2(30),
id          NUMBER,
parent_id   NUMBER,
operation   VARCHAR2(30),
options     VARCHAR2(30),
object_name VARCHAR2(80),
position    NUMBER,
bt_feedback ctxsys.ctx_feedback_type,
rt_feedback ctxsys.ctx_feedback_type,
nt_feedback ctxsys.ctx_feedback_type,
NESTED TABLE bt_feedback STORE AS res_bt,
NESTED TABLE rt_feedback STORE AS res_rt,
NESTED TABLE nt_feedback STORE AS res_nt
;

CTX_FEEDBACK_TYPE はCTXSYSスキーマのシステム定義型です。

関連項目:

HFEEDBACK表の構造の詳細は、「Oracle Text結果表」の「HFEEDBACK表」を参照してください。

CTX_QUERY.HFEEDBACKのコール

次のコードは、computer industryの問合せを持つHFEEDBACKプロシージャをコールします。

BEGIN
ctx_query.hfeedback (index_name     => 'my_index',
text_query     => 'computer industry',
feedback_table => 'restab',
sharelevel     => 0,
feedback_id    => 'query10'
);
END;

結果表からの選択

次のコードは、結果表からフィードバック・データを取り出します。上位語、下位語および関連語フィードバックがNESTED TABLEから個別に取り出されます。

DECLARE
i NUMBER;
BEGIN
FOR frec IN (
SELECT object_name, bt_feedback, rt_feedback, nt_feedback
FROM restab
WHERE feedback_id = 'query10' AND object_name IS NOT NULL
) LOOP

dbms_output.put_line('Broader term feedback for ' || frec.object_name ||
':');
i := frec.bt_feedback.FIRST;
WHILE i IS NOT NULL LOOP
dbms_output.put_line(frec.bt_feedback(i).text);
i := frec.bt_feedback.NEXT(i);
END LOOP;

dbms_output.put_line('Related term feedback for ' || frec.object_name ||
':');
i := frec.rt_feedback.FIRST;
WHILE i IS NOT NULL LOOP
dbms_output.put_line(frec.rt_feedback(i).text);
i := frec.rt_feedback.NEXT(i);
END LOOP;

dbms_output.put_line('Narrower term feedback for ' || frec.object_name ||
':');
i := frec.nt_feedback.FIRST;
WHILE i IS NOT NULL LOOP
dbms_output.put_line(frec.nt_feedback(i).text);
i := frec.nt_feedback.NEXT(i);
END LOOP;

END LOOP;
END;

サンプル出力

次の出力は、computer industryについて問い合せる前述の例に対するものです。

Broader term feedback for computer industry:
hard sciences
Related term feedback for computer industry:
computer networking
electronics
knowledge
library science
mathematics
optical technology
robotics
satellite technology
semiconductors and superconductors
symbolic logic
telecommunications industry
Narrower term feedback for computer industry:
ABEND - abnormal end of task
AT&T Starlans
ATI Technologies, Incorporated
ActivCard
Actrade International Ltd.
Alta Technology
Amiga Format
Amiga Library Services
Amiga Shopper
Amstrat Action
Apple Computer, Incorporated
..

注意:

取得したHFEEDBACK情報は、索引およびナレッジ・ベースの内容に依存するため、示したサンプルの内容とは異なる可能性があります。

制限事項

CTX_QUERY.HFEEDBACKでは、問合せテンプレートの使用はサポートされていません。

12.5 REMOVE_SQE

CTX_QUERY.REMOVE_SQEプロシージャは、指定したストアド・クエリー式を削除します。

CTX_QUERY.REMOVE_SQEを使用すると、セッション期間SQEと永続SQEの両方を削除できます。「STORE_SQE」を参照してください。

query_nameネームスペースは永続SQEとセッション期間SQEの間で共有されるため、削除するSQEの期間を指定する必要はありません。

構文

CTX_QUERY.REMOVE_SQE(
query_name IN VARCHAR2
);

query_name

削除するストアド・クエリーまたはセッション期間問合せの式の名前を指定します。

例

begin
ctx_query.remove_sqe('dis1');
ctx_query.remove_sqe('dis2');
end;
/

12.6 RESULT_SET

このプロシージャは、XML問合せを実行してXMLの結果セットを生成します。結果セット・インタフェースは、SQLで表すことが困難なデータ・ビューを戻します。

関連項目:

XML結果セット・インタフェースの使用方法については、『Oracle Textアプリケーション開発者ガイド』を参照してください

構文

CTX_QUERY.RESULT_SET (
index_name            IN VARCHAR2,
query                 IN VARCHAR2,
result_set_descriptor IN CLOB,
result_set            IN OUT NOCOPY CLOB,
part_name             IN VARCHAR2 DEFAULT NULL
);

index_name

問合せを実行する索引を指定します。

query

問合せ文字列を指定します。

result_set_descriptor

XMLの結果セット記述子を指定します。結果セットに含む内容を示します。詳細は、「入力結果セット識別子」を参照してください。

result_set

出力結果セットを指定します。この変数にNULLを入力すると、セッション中に一時LOBが割り当てられてユーザーに戻ります。ユーザーは、この一時LOBの割当て解除の責任があります。詳細は、「出力結果セットXML」を参照してください。

part_name

索引パーティション名を指定します。グローバル索引の場合、part_nameをNULLにする必要があります。パーティション索引でpart_nameがNULLではない場合、指定されたパーティションにのみ、問合せが評価されます。パーティション索引でpart_nameがNULLの場合、すべてのパーティションで問合せが評価されます。

入力結果セット記述子

結果セット記述子は、結果セットの計算対象を示すXMLメッセージです。結果セット記述子の要素とその出現順序は、出力結果セットの内容を指定する簡単なテンプレートとして使用できます。つまり、ヒットしたROWIDのリスト、カウント、トークン数などを指定します。要素の属性には、ROWIDリストのヒット数や予測カウントおよび実測カウントなど、特定の操作のパラメータおよびオプションを指定します。

結果セット記述子自体は、次のDTDに準拠したXMLです。

<!ELEMENT ctx_result_set_descriptor (hitlist?, group*, count?)>
<!ELEMENT hitlist (rowid?, score?, sdata*)>
<!ELEMENT group(count?)>
<!ELEMENT count EMPTY>
<!ELEMENT rowid EMPTY>
<!ELEMENT score EMPTY>
<!ELEMENT sdata EMPTY>
<!ATTLIST group sdata CDATA #REQUIRED>
<!ATTLIST hitlist start_num_hit integer #REQUIRED>
<!ATTLIST hitlist end_num_hit integer #REQUIRED>
<!ATTLIST hitlist order PCDATA #IMPLIED>
<!ATTLIST count exact (TRUE|FALSE) "FALSE">
<!ATTLIST sdata name CDATA #REQUIRED>

結果セット記述子に有効なXML要素は、次のとおりです。

- ctx_result_set_descriptor
これは、結果セット記述子のルート要素です。親要素と使用できる属性はありません。

有効な子要素は、次のとおりです。

- 0(ゼロ)個以上のhitlist要素。

- 0(ゼロ)個以上のgroup要素。

- 1つのcount要素。

- group
group要素は、生成された結果セットをグループに分類します。つまり、SDATAセクションの値を使用して、結果を分類します。親要素はctx_result_set_descriptorです。使用できる属性は、次のとおりです。

- sdata
グループ化に使用するSDATAセクションの名前を指定します。これは必須です。

groupの有効な子要素は、次のとおりです。

- 1つのcount要素。

- hitlist
hitlist要素は、ヒットしたドキュメントのリストの包含を制御します。親要素はctx_result_set_descriptorです。使用できる属性は、次のとおりです。

orderで使用できる子要素は、次のとおりです。

- start_hit_num
生成された結果セットに含める最初にヒットしたドキュメントを指定します。16000以下の正の整数を設定できます。たとえば、start_hit_numが21の場合、21番目にヒットしたドキュメントから結果セットにヒットしたドキュメントが格納されます。この要素は必須です。

- end_hit_num
生成された結果セットに含める最後にヒットしたドキュメントを指定します。16000以下の正の整数を設定できます。たとえば、end_hit_numが40の場合、40番目にヒットしたドキュメントまで結果セットにヒットしたドキュメントが格納されます。この要素は必須です。

hitlistで使用できる子要素は、次のとおりです。

- 1つのrowid要素。

- 1つのscore要素。

- 1つのsdata要素。

- 1つのsnippet要素。

- order
生成された結果セットにドキュメントの順序を指定するオプション属性です。値は、SQL ORDER BY文と類似するリストです。ただし、列名のかわりにSCOREまたはSDATAセクション名を使用できます。次の例では、MYDATEとMYPRICEがSDATAセクション名です。

(order = "SCORE DESC, MYDATE, MYPRICE DESC")

- 1つのrowid要素。

- 1つのscore要素。

- 1つのsdata要素。

- count
生成された結果セットにヒットしたドキュメントの数を格納します。親要素は、次のとおりです。

- ctx_result_set_descriptor

- group

countで使用できる属性は、次のとおりです。

- exact
予測モードに使用します。trueまたはfalseに設定します。これは必須です。デフォルトは、falseです。

countの有効な子要素はありません。

- rowid
生成された結果セットにヒットごとのROWID情報を格納します。親要素は、hitlistです。属性および有効な子要素はありません。

- score
生成された結果セットにヒットごとのスコア情報を格納します。

- 親要素は、hitlistです。

- 使用できる属性および有効な子要素はありません。

- sdata
生成された結果セットにヒットごとのsdata値を格納します。

- 親要素は、hitlistです。

- 使用できる属性はnameです。sdataセクションの名前を指定します。これは必須です。

- 子要素はありません。

出力結果セットXML

出力結果セットXMLは、次のDTDに準拠したXMLです。

<!ELEMENT ctx_result_set (hitlist?, groups*, count?)>
<!ELEMENT hitlist (hit*)>
<!ELEMENT hit(rowid?, score?, sdata*)>
<!ELEMENT groups (group*)>
<!ELEMENT group (count?)>
<!ELEMENT count CDATA>
<!ELEMENT rowid CDATA>
<!ELEMENT score CDATA>
<!ELEMENT sdata CDATA>
<!ATTLIST groups sdata CDATA #REQUIRED>
<!ATTLIST group value CDATA #REQUIRED>
<!ATTLIST sdata name CDATA #REQUIRED>

出力結果セットに有効なXML要素のリストは、次のとおりです。

- ctx_result_set
生成された結果セットのルート要素です。属性はありません。親要素はありません。有効な子要素は、次のとおりです。

- 1つのhitlist要素。

- 0(ゼロ)個以上のgroups要素。

- groups
グループ分類セクションの開始を区切ります。親要素は、ctx_result_setです。使用できる属性は、次のとおりです。

- sdata
グループ化に使用するsdataセクションの名前です。

有効な子要素は、次のとおりです。

- 0(ゼロ)個以上のgroup要素。

- group
GROUP BYの値の開始を区切ります。親要素は、groups要素です。使用できる属性は、次のとおりです。

- value
sdataセクションの値です。

有効な子要素は、1つのcount要素です。

- hitlist
hitlist情報の開始を区切ります。親要素はctx_result_setです。子は0個以上のhit要素です。属性はありません。

- hit
hitlist内の特定のドキュメントの情報の開始を区切ります。親要素はhitlistです。使用できる属性はありません。有効な子要素は、次のとおりです。

- 0(ゼロ)個または1個のrowid要素。

- 0(ゼロ)個または1個のscore要素。

- 0(ゼロ)個または1個のsdata要素。

- ゼロまたは1つのsnippet要素。

- rowid
ドキュメントのROWIDです。ドキュメントのROWIDが格納されます。親要素は、hit要素です。子要素および使用できる属性はありません。

- score
ドキュメントのスコアです。親要素は、hit要素です。数値のスコアが格納されます。使用できる属性および有効な子要素はありません。

- sdata
ドキュメントのSDATAの値です。親要素は、hit要素です。使用できる属性は、sdataセクション名のnameです。有効な子要素はありません。SDATAセクション値が格納されます。DATEの値は「YYYY-MM-DD HH24:MI:SS」形式で、格納される実際の値によって異なります。

- count
ドキュメントのヒット数です。親要素は、ctx_result_set要素またはgroup要素です。数値のヒット数が格納されます。属性および有効な子要素はありません。

例

XMLのresult_set_descriptorを指定したCTX_QUERY.RESULT_SETのこのコールは、XML形式で次の情報を生成します。

- pubDate SDATAセクション値のDESCおよびスコアのDESCで順序付けられた、スコア、ROWID、author SDATAセクション値、およびpubDate SDATAセクション値を表示する上位20個のヒット

- テキスト問合せのドキュメントの総ヒット数

- pubDate SDATAセクション値でグループ化した数

- author SDATAセクション値でグループ化した数

declare
rs clob;
begin
dbms_lob.createtemporary(rs, true, dbms_lob.session);
ctx_query.result_set('docidx', 'oracle', '
<ctx_result_set_descriptor>
<count/>
<hitlist start_hit_num="1" end_hit_num="5" order="pubDate desc, score desc">
<score/>
<rowid/>
<sdata name="author"/>
<sdata name="pubDate"/>
</hitlist>
<group sdata="pubDate">
<count/>
</group>
<group sdata="author">
<count/>
</group>
</ctx_result_set_descriptor>
', rs);
dbms_lob.freetemporary(rs);
exception
when others then
dbms_lob.freetemporary(rs);
raise;
end;
/

結果セットの出力CLOBのXML出力ストアは、次のようになります。

<ctx_result_set>
<hitlist>
<hit>
<score>3</score><rowid>AAAPoEAABAAAMWsAAC</rowid>
<sdata name="AUTHOR">John</sdata>
<sdata name="PUBDATE">2001-01-03 00:00:00</sdata>
</hit>
<hit>
<score>3</score><rowid>AAAPoEAABAAAMWsAAG</rowid>
<sdata name="AUTHOR">John</sdata>
<sdata name="PUBDATE">2001-01-03 00:00:00</sdata>
</hit>
<hit>
<score>3</score><rowid>AAAPoEAABAAAMWsAAK</rowid>
<sdata name="AUTHOR">John</sdata>
<sdata name="PUBDATE">2001-01-03 00:00:00</sdata>
</hit>
<hit>
<score>3</score><rowid>AAAPoEAABAAAMWsAAO</rowid>
<sdata name="AUTHOR">John</sdata>
<sdata name="PUBDATE">2001-01-03 00:00:00</sdata>
</hit>
<hit>
<score>3</score><rowid>AAAPoEAABAAAMWsAAS</rowid>
<sdata name="AUTHOR">John</sdata>
<sdata name="PUBDATE">2001-01-03 00:00:00</sdata>
</hit>
</hitlist>

<count>100</count>

<groups sdata="PUBDATE">
<group value="2001-01-01 00:00:00"><count>25</count></group>
<group value="2001-01-02 00:00:00"><count>50</count></group>
<group value="2001-01-03 00:00:00"><count>25</count></group>
</groups>

<groups sdata="AUTHOR">
<group value="John"><count>50</count></group>
<group value="Mike"><count>25</count></group>
<group value="Steve"><count>25</count></group>
</groups>

</ctx_result_set>

制約と制限事項

RESULT_SETには、次の制約と制限事項が適用されます。

- 結果セット・インタフェース(RSI)は仮想プライベート・データベースではサポートされません。(VPDは通常のCONTAINS問合せでサポートされますがRSIではサポートされません。)

- ファンクションを実行するには、元表を問い合せることができる必要があります。

- 元表でVPDポリシーが有効な場合、結果セットのドキュメント位置に資格のないドキュメントは表示されません。

- VPDポリシーを使用している場合、カウントなどの集計メソッドが正確でないことがあります。

関連項目

XML結果セット・インタフェースの詳細は、『Oracle Textアプリケーション開発者ガイド』を参照してください。

12.7 RESULT_SET_DOCUMENT

CONTAINS問合せのカーソルを明示的にクローズした後で、問合せテンプレートに<ctx_result_set_descriptor>要素がある場合に、RESULT_SET_DOCUMENTは結果セット・ドキュメントを保持します。

構文

CTX_QUERY.RESULT_SET_DOCUMENT(
index_name            IN VARCHAR2,
query                 IN VARCHAR2,
result_set_descriptor IN CLOB,
result_set            IN OUT NOCOPY CLOB,
part_name             IN VARCHAR2 DEFAULT NULL
);

index_name

問合せを実行する索引を指定します。

query

問合せ文字列を指定します。

result_set_descriptor

XMLの結果セット記述子を指定します。結果セットに含む内容を示します。詳細は、「入力結果セット識別子」を参照してください。

result_set

出力結果セットを指定します。この変数にNULLを入力すると、セッション中に一時LOBが割り当てられてユーザーに戻ります。ユーザーは、この一時LOBの割当て解除の責任があります。詳細は、「出力結果セットXML」を参照してください。

part_name

索引パーティション名を指定します。グローバル索引の場合、part_nameをNULLにする必要があります。パーティション索引でpart_nameがNULLではない場合、指定されたパーティションにのみ、問合せが評価されます。パーティション索引でpart_nameがNULLの場合、すべてのパーティションで問合せが評価されます。

12.8 STORE_SQE

このプロシージャは、ストアド・クエリーまたはセッション期間問合せの式(SQE)を作成します。問合せ定義のみが格納されます。

SQEは、結果を格納せずに問合せの定義を格納するときに使用します。CONTAINSのSQL演算子によって、その問合せの定義を参照します。このように、SQEを使用すると、長い問合せ式や使用頻度の高い問合せ式を簡単に定義できます。セッション期間SQEを作成すると、不要または使用しないSQEを削除するメンテナンス・オーバーヘッドを回避する場合に便利です。

サポートされている演算子

ストアド・クエリー式は、すべてのCONTAINS問合せ演算子をサポートしています。また、すべての特殊文字、および他のストアド・クエリー式も含めて、問合せ式で使用できるすべてのコンポーネントをサポートしています。

権限

ユーザーは、所有しているストアド・クエリー式を作成および削除できます。ユーザーは、誰が所有するストアド・クエリー式でも使用できます。CTXSYSユーザーは、どのユーザーのストアド・クエリー式も作成および削除できます。

構文

構文1

CTX_QUERY.STORE_SQE(
query_name      IN VARCHAR2,
text_query      IN VARCHAR2
duration        IN NUMBER default CTX_QUERY.DURATION_SESSION
);

構文2

CTX_QUERY.STORE_SQE_CLOB_SYNTAX(
query_name      IN VARCHAR2,
text_query      IN CLOB
duration        IN NUMBER default CTX_QUERY.DURATION_SESSION
);

query_name

作成するストアド・クエリー式の名前を指定します。

text_query

query_nameに関連付ける問合せ式を指定します。

duration

可能な値はDURATION_SESSIONとDURATION_PERSISTENTです。

- durationをDURATION_SESSIONに設定すると、ストアド・クエリー式はPL/SQLパッケージ変数に格納され、セッションに使用できます。

- durationがDURATION_PERSISTENTに設定されると、ストアド・クエリー式はデータベース表に格納され、他のデータベース・セッションで参照できます。

- query_nameネームスペースは、永続SQEとセッション期間SQEの間で共有されます。他の永続SQEまたはセッション期間SQEによってすでに使用されている名前で永続SQEまたはセッション期間SQEを追加しようとすると、エラーが発生します。

duration_persistent

CLOB問合せがある場合は、期間をデータベース表に格納するように指定します。このSQEは、不要になった時点で削除されます。

- query_nameネームスペースは、永続SQEとセッション期間SQEの間で共有されます。他の永続SQEまたはセッション期間SQEによってすでに使用されている名前で永続SQEまたはセッション期間SQEを追加しようとすると、エラーが発生します。

例

begin
ctx_query.store_sqe('dis1', 'flood', CTX_QUERY.DURATION_SESSION);
ctx_query.store_sqe('dis2', 'tornado', CTX_QUERY.DURATION_PERSISTENT);
ctx_query.store_sqe('dis3', 'fire')
end;
/

13 CTX_REPORTパッケージ

この章では、CTX_REPORTパッケージを使用して索引付けおよび問合せに関するレポートを作成する方法を説明します。これらのレポートは、問題のトラブルシューティングやアプリケーションのチューニングに役立ちます。

この章の内容は次のとおりです。

- CTX_REPORTに含まれるプロシージャの説明

- 複数バージョンのファンクションの使用方法

- DESCRIBE_INDEX

- DESCRIBE_POLICY

- CREATE_INDEX_SCRIPT

- CREATE_POLICY_SCRIPT

- INDEX_SIZE

- INDEX_STATS

- QUERY_LOG_SUMMARY

- TOKEN_INFO

- TOKEN_TYPE

- VALIDATE_INDEX

関連項目:

CTX_REPORTパッケージの概要、およびこの章で説明するプロシージャの使用方法は、『Oracle Textアプリケーション開発者ガイド』を参照してください。

13.1 CTX_REPORTに含まれるプロシージャの説明

CTX_REPORTパッケージには、次のプロシージャが含まれています。

名前

説明

DESCRIBE_INDEX

索引を説明するレポートを作成します。

DESCRIBE_POLICY

ポリシーを説明するレポートを作成します。

CREATE_INDEX_SCRIPT

指定した索引を複製するSQL*Plusスクリプトを作成します。

CREATE_POLICY_SCRIPT

指定したポリシーを複製するSQL*Plusスクリプトを作成します。

INDEX_SIZE

索引の内部オブジェクト、その表領域および使用サイズを表示するレポートを作成します。

INDEX_STATS

索引の様々な統計を表示するレポートを作成します。

QUERY_LOG_SUMMARY

問合せ統計を示すレポートを作成します。

TOKEN_INFO

デコードされたトークンに関する情報を表示するレポートを作成します。

TOKEN_TYPE

名前を変換し、数値のトークン型を戻します。

VALIDATE_INDEX

索引の破損を確認し、見つかった問題をレポートします。主にOracle Supportで使用されます。

13.2 複数バージョンのファンクションの使用方法

CTX_REPORTパッケージの一部のプロシージャには、ファンクション・バージョンがあります。これらのファンクションは、次のようにコールできます。

select ctx_report.describe_index('MYINDEX') from dual;

SQL*Plusでは、サポートの目的で、次のように出力ファイルを生成して送信できます。

set long 64000
set pages 0
set heading off
set feedback off
spool outputfile
select ctx_report.describe_index('MYINDEX') from dual;
spool off

13.3 DESCRIBE_INDEX

索引を説明するレポートを作成します。このレポートには、索引メタデータの設定、使用されている索引付けオブジェクト、オブジェクトの属性の設定および索引パーティションの説明(ある場合)が含まれます。

この操作は、IN OUT CLOBパラメータを指定したプロシージャとして、またはレポートをCLOBで戻すファンクションとしてコールできます。

構文

procedure CTX_REPORT.DESCRIBE_INDEX(
index_name     IN VARCHAR2,
report         IN OUT NOCOPY CLOB,
report_format  IN VARCHAR2 DEFAULT FMT_TEXT
);

function CTX_REPORT.DESCRIBE_INDEX(
index_name     IN VARCHAR2,
report_format  IN VARCHAR2 DEFAULT FMT_TEXT
) return CLOB;

index_name

説明する索引の名前を指定します。

report

レポートを書き込むCLOBロケータを指定します。

reportがNULLの場合は、セッション中に一時CLOBが作成されて戻ります。この一時CLOBは、必要に応じてコール元で解放してください。

report CLOBはレポートの生成前に切り捨てられます。したがって、既存の内容はこのコールによって上書きされます。

report_format

レポートを'TEXT'または'XML'のいずれで生成するかを指定します。デフォルトはTEXTです。また、値にCTX_REPORT.FMT_TEXTまたはCTX_REPORT.FMT_XMLも指定できます。

注意

CTX_REPORT.DESCRIBE_INDEXは、索引がFILTER BY またはORDER BY (あるいはその両方)の句を指定して作成された場合は、FILTER BYおよびORDER BYの列情報を出力します。

関連項目

"CREATE INDEX"

"ADD_SDATA_COLUMN"

13.4 DESCRIBE_POLICY

ポリシーを説明するレポートを作成します。このレポートには、ポリシー・メタデータの設定、使用されている索引付けオブジェクト、オブジェクトの属性の設定が含まれます。

この操作は、IN OUT CLOBパラメータを指定したプロシージャとして、またはレポートをCLOBで戻すファンクションとしてコールできます。

構文

procedure CTX_REPORT.DESCRIBE_POLICY(
policy_name    IN VARCHAR2,
report         IN OUT NOCOPY CLOB,
report_format  IN VARCHAR2 DEFAULT FMT_TEXT
);

function CTX_REPORT.DESCRIBE_POLICY(
policy_name    IN VARCHAR2,
report_format  IN VARCHAR2 DEFAULT FMT_TEXT
) return CLOB;

report

レポートを書き込むCLOBロケータを指定します。

reportがNULLの場合は、セッション中に一時CLOBが作成されて戻ります。この一時CLOBは、必要に応じてコール元で解放してください。

report CLOBはレポートの生成前に切り捨てられるため、既存の内容はこのコールによって上書きされます。

report_format

レポートを'TEXT'または'XML'のいずれで生成するかを指定します。デフォルトはTEXTです。また、値にCTX_REPORT.FMT_TEXTまたはCTX_REPORT.FMT_XMLも指定できます。

policy_name

説明するポリシーの名前を指定します。

13.5 CREATE_INDEX_SCRIPT

指定したテキスト索引を複製するSQL*Plusスクリプトを作成します。

作成されたスクリプトには、指定したテキスト索引に使用されているプリファレンスと同一のプリファレンスが含まれます。ただし、プリファレンス名は別の名前になります。

この操作は、IN OUT CLOBパラメータを指定したプロシージャとして、またはレポートをCLOBで戻すファンクションとしてコールできます。

構文

procedure CTX_REPORT.CREATE_INDEX_SCRIPT(
index_name      in varchar2,
report          in out nocopy clob,
prefname_prefix in varchar2 default null
);

function CTX_REPORT.CREATE_INDEX_SCRIPT(
index_name      in varchar2,
prefname_prefix in varchar2 default null
) return clob;

index_name

索引の名前を指定します。

report

スクリプトを書き込むCLOBロケータを指定します。

reportがNULLの場合は、セッション中に一時CLOBが作成されて戻ります。この一時CLOBは、必要に応じてコール元で解放してください。

report CLOBはレポートの生成前に切り捨てられます。したがって、既存の内容はこのコールによって上書きされます。

prefname_prefix

オプションで、プリファレンス名に使用するプリフィックスを指定します。

prefname_prefixを省略またはNULLにした場合は、索引名が使用されます。prefname_prefixは、索引の長さに関する制限に従います。

注意

CTX_REPORT.CREATE_INDEX_SCRIPTは、CREATE INDEX文の必要なFILTER BYおよびORDER BY句も生成します。

関連項目

"CREATE INDEX"

13.6 CREATE_POLICY_SCRIPT

指定したテキスト・ポリシーを複製するSQL*Plusスクリプトを作成します。

作成されたスクリプトには、指定したテキスト・ポリシーに使用されているプリファレンスと同一のプリファレンスが含まれます。

この操作は、IN OUT CLOBパラメータを指定したプロシージャとして、またはレポートをCLOBで戻すファンクションとしてコールできます。

構文

procedure CTX_REPORT.CREATE_POLICY_SCRIPT(
policy_name      in varchar2,
report           in out nocopy clob,
prefname_prefix  in varchar2 default null
);

function CTX_REPORT.CREATE_POLICY_SCRIPT(
policy_name      in varchar2,
prefname_prefix  in varchar2 default null
) return clob;

policy_name

ポリシーの名前を指定します。

report

スクリプトを書き込むロケータを指定します。

reportがNULLの場合は、セッション中に一時CLOBが作成されて戻ります。この一時CLOBは、必要に応じてコール元で解放してください。

report CLOBはレポートの生成前に切り捨てられます。したがって、既存の内容はこのコールによって上書きされます。

prefname_prefix

オプションで、プリファレンス名に使用するプリフィックスを指定します。prefname_prefixを省略またはNULLにした場合は、ポリシー名が使用されます。prefname_prefixは、ポリシーの長さに関する制限に従います。

13.7 INDEX_SIZE

テキスト索引またはテキスト索引パーティションの内部オブジェクト、その割当て済表領域および使用サイズを表示するレポートを作成します。

この操作は、IN OUT CLOBパラメータを指定したプロシージャとして、またはレポートをCLOBで戻すファンクションとしてコールできます。

構文

procedure CTX_REPORT.INDEX_SIZE(
index_name     IN VARCHAR2,
report         IN OUT NOCOPY CLOB,
part_name      IN VARCHAR2 DEFAULT NULL,
report_format  IN VARCHAR2 DEFAULT FMT_TEXT
);

function CTX_REPORT.INDEX_SIZE(
index_name     IN VARCHAR2,
part_name      IN VARCHAR2 DEFAULT NULL,
report_format  IN VARCHAR2 DEFAULT FMT_TEXT
) return clob;

index_name

説明する索引の名前を指定します。

report

レポートを書き込むCLOBロケータを指定します。

reportがNULLの場合は、セッション中に一時CLOBが作成されて戻ります。この一時CLOBは、必要に応じてコール元で解放してください。

report CLOBはレポートの生成前に切り捨てられます。したがって、既存の内容はこのコールによって上書きされます。

part_name

索引パーティションの名前を指定します(オプション)。part_nameがNULLで、索引がローカル・パーティション・テキスト索引の場合は、すべてのパーティションに関する全オブジェクトが表示されます。part_nameを指定した場合は、特定のパーティションのオブジェクトのみが表示されます。

report_format

レポートを'TEXT'または'XML'のいずれで生成するかを指定します。デフォルトはTEXTです。また、値にCTX_REPORT.FMT_TEXTまたはCTX_REPORT.FMT_XMLも指定できます。

注意

CTX_REPORT.INDEX_SIZEは、dr$索引名$S表の情報も出力します。

関連項目

"CREATE INDEX"

表2-39

13.8 INDEX_STATS

テキスト索引について計算された様々な統計を表示するレポートを作成します。

このプロシージャでは、テキスト索引表全体がスキャンされるため、大規模な索引の場合は実行時間が長くなる可能性があります。

構文

procedure ctx_report.index_stats(
index_name     IN VARCHAR2,
report         IN OUT NOCOPY CLOB,
part_name      IN VARCHAR2 DEFAULT NULL,
frag_stats     IN BOOLEAN DEFAULT TRUE,
list_size      IN NUMBER DEFAULT 100,
report_format  IN VARCHAR2 DEFAULT FMT_TEXT,
stat_type      IN VARCHAR2 DEFAULT NULL
);

index_name

説明する索引の名前を指定します。これはCONTEXT索引である必要があります。

report

レポートを書き込むCLOBロケータを指定します。reportがNULLの場合は、セッション中に一時CLOBが作成されて戻ります。この一時CLOBは、必要に応じてコール元で解放してください。

report CLOBはレポートの生成前に切り捨てられます。したがって、既存の内容はこのコールによって上書きされます。

part_name

索引パーティションの名前を指定します。索引がローカル・パーティション索引である場合は、part_nameを指定する必要があります。INDEX_STATSにより、この索引パーティションに関する統計が計算されます。

frag_stats

断片化の統計を計算する場合は、TRUEを指定します。frag_statsがFALSEの場合、索引データのサイズに関する統計はレポートに表示されません。ただし、トークン統計を計算するために処理にかかる時間とリソースは少なくなります。

list_size

各コンパイル済リストに表示する要素数を指定します。list_sizeの最大値は1000です。

report_format

レポートを'TEXT'または'XML'のいずれで生成するかを指定します。デフォルトはTEXTです。また、値にCTX_REPORT.FMT_TEXTまたはCTX_REPORT.FMT_XMLも指定できます。

stat_type

出力する推定統計を指定します。このパラメータを設定すると、frag_statsは無視されます。有効な値は、次のとおりです。

統計タイプ

説明

EST_FRAG_STATS

推定される索引の断片化統計を取得します。このタイプを指定すると、list_sizeは無視されます。

EST_FREQUENT_TOKENS

索引に対する推定問合せ頻度が高いトークンを取得します。100までの値をlist_sizeに指定できます。

EST_TOKENS_TO_OPTIMIZE

問合せ頻度と断片化に基づいて、最適化の必要性が最も高いトークンを示します。100までの値をlist_sizeに指定できます。

EST_SLOWEST_QUERIES

索引に対して実行速度が最も遅い問合せを示します。100までの値をlist_sizeに指定できます。

注意:

stat_typeの推定統計は、query_statsが使用可能な場合にのみ利用できます。「CTX_OUTPUT.ENABLE_QUERY_STATS」および「CTX_OUTPUT.DISABLE_QUERY_STATS」を参照してください。

例

create table output (result CLOB);

declare
x clob := null;
begin
ctx_report.index_stats('tdrbprx21',x);
insert into output values (x);
commit;
dbms_lob.freetemporary(x);
end;
/

set long 32000
set head off
set pagesize 10000
select * from output;

CONTEXT索引に関するINDEX_STATSのサンプル出力を示します。このレポートは、明確にするために一部が切り捨てられています。トークン統計の一部と断片化統計のすべてが記載されています。

断片化統計は、レポートの最後にあります。このレポートによって、最適な行の断片化、予想される索引内の不要データ量、および最も断片化されているトークンのリストを確認できます。CTX_DDL.OPTIMIZE_INDEXを実行すると索引がクリーン・アップされます。

=================================================================
STATISTICS FOR "DR_TEST"."TDRBPRX21"
=================================================================

indexed documents:                                          53
allocated docids:                                           68
$I rows:                                                16,259

-----------------------------------------------------------------
TOKEN STATISTICS
-----------------------------------------------------------------

unique tokens:                                          13,445
average $I rows for each token:                           1.21
tokens with most $I rows:
telecommunications industry (THEME)                        6
science and technology (THEME)                             6
EMAIL (FIELD SECTION "SOURCE")                             6
DEC (FIELD SECTION "TIMESTAMP")                            6
electronic mail (THEME)                                    6
computer networking (THEME)                                6
communications (THEME)                                     6
95 (FIELD SECTION "TIMESTAMP")                             6
15 (FIELD SECTION "TIMESTAMP")                             6
HEADLINE (ZONE SECTION)                                    6

average size for each token:                                 8
tokens with largest size:
T (NORMAL)                                               405
SAID (NORMAL)                                            313
HEADLINE (ZONE SECTION)                                  272
NEW (NORMAL)                                             267
I (NORMAL)                                               230
MILLION (PREFIX)                                         222
D (NORMAL)                                               219
MILLION (NORMAL)                                         215
U (NORMAL)                                               192
DEC (FIELD SECTION "TIMESTAMP")                          186

average frequency for each token:                         2.00
most frequent tokens:
HEADLINE (ZONE SECTION)                                   68
DEC (FIELD SECTION "TIMESTAMP")                           62
95 (FIELD SECTION "TIMESTAMP")                            62
15 (FIELD SECTION "TIMESTAMP")                            62
T (NORMAL)                                                61
D (NORMAL)                                                59
881115 (THEME)                                            58
881115 (NORMAL)                                           58
I (NORMAL)                                                55
geography (THEME)                                         52

token statistics by type:
token type:                                           NORMAL
unique tokens:                                       6,344
total rows:                                          7,631
average rows:                                         1.20
total size:                              67,445 (65.86 KB)
average size:                                           11
average frequency:                                    2.33
most frequent tokens:
T                                                     61
D                                                     59
881115                                                58
I                                                     55
SAID                                                  45
C                                                     43
NEW                                                   36
MILLION                                               32
FIRST                                                 28
COMPANY                                               27

token type:                                            THEME
unique tokens:                                       4,563
total rows:                                          5,523
average rows:                                         1.21
total size:                              21,930 (21.42 KB)
average size:                                            5
average frequency:                                    2.40
most frequent tokens:
881115                                                58
political geography                                   52
geography                                             52
United States                                         51
business and economics                                50
abstract ideas and concepts                           48
North America                                         48
science and technology                                46
NKS                                                   34
nulls                                                 34

このレポートの断片化統計の部分は、次のとおりです。

-----------------------------------------------------------------
FRAGMENTATION STATISTICS
-----------------------------------------------------------------

total size of $I data:                     116,772 (114.04 KB)

$I rows:                                                16,259
estimated $I rows if optimal:                           13,445
estimated row fragmentation:                              17 %

garbage docids:                                             15
estimated garbage size:                      21,379 (20.88 KB)

most fragmented tokens:
telecommunications industry (THEME)                     83 %
science and technology (THEME)                          83 %
EMAIL (FIELD SECTION "SOURCE")                          83 %
DEC (FIELD SECTION "TIMESTAMP")                         83 %
electronic mail (THEME)                                 83 %
computer networking (THEME)                             83 %
communications (THEME)                                  83 %
95 (FIELD SECTION "TIMESTAMP")                          83 %
HEADLINE (ZONE SECTION)                                 83 %
15 (FIELD SECTION "TIMESTAMP")                          83 %

注意

これらのメタデータを利用できるのは、索引に対する推定統計(索引の断片化推定統計、推定問合せ頻度の高いトークン、推定される断片化と問合せ頻度が最も高いトークン、および特定の索引に対する推定実行速度が最も遅い問合せ)のQUERY_STATSがオンに設定されている場合のみです。

CTX_REPORT.INDEX_STATSは、dr$索引名$S表の情報も出力します。これは、セクション・データ(SDATA)の表です。

関連項目

「CTX_OUTPUT.ENABLE_QUERY_STATS」

CTX_OUTPUT.DISABLE_QUERY_STATS

「CREATE INDEX」

表2-39

13.9 QUERY_LOG_SUMMARY

ログ記録された問合せのレポートを取得します。

QUERY_LOG_SUMMARYを使用して、ログ記録した問合せを分析できます。たとえば、大型動物のデータベースを検索するアプリケーションを使用している場合、データベースへの問合せを分析した結果、ユーザーが頻繁にmouseというワードを検索していることがわかったとします。この分析に基づき、mouseを検索すると、失敗した検索結果を戻すかわりに、ユーザーを小型動物のデータベースにリダイレクトするようアプリケーションを書き換えることも考えられます。

問合せの分析により、次のことがわかります。

- 発行された問合せ

- 成功した問合せ

- 失敗した問合せ

- 各問合せの発行回数

これらの要素を様々な方法で組み合せ、たとえばアプリケーションで失敗した問合せの上位50位までを調べることが可能です。

問合せのロギングはCTX_OUTPUT.START_QUERY_LOGで開始され、CTX_OUTPUT.END_QUERY_LOGで終了します。

注意:

CTX_REPORT.QUERY_LOG_SUMMARYを使用するには、CTXSYSで接続する必要があります。

関連項目:

「START_QUERY_LOG」と「END_QUERY_LOG」

構文

procedure CTX_REPORT.QUERY_LOG_SUMMARY(
logfile       IN VARCHAR2,
indexname     IN VARCHAR2 DEFAULT NULL,
result_table  IN OUT NOCOPY QUERY_TABLE,
row_num       IN NUMBER,
most_freq     IN BOOLEAN DEFAULT TRUE,
has_hit       IN BOOLEAN DEFAULT TRUE
);

logfile

問合せが含まれているログ・ファイルの名前を指定します。

indexname

サマリー・レポートを取得するCONTEXT索引の名前を指定します。NULLを指定すると、すべてのCONTEXT索引のサマリー・レポートがプロシージャによって提供されます。

result_table

QUERY_LOG_SUMMARYの結果の格納先となるTABLE OF RECORD型のインメモリー表の名前を指定します。デフォルトは、システム・パラメータLOG_DIRECTORYで指定した場所です。

row_num

restabによって名付けられた表にレポートされるQUERY_LOG_SUMMARYからの結果の行数。たとえば、この数値が10、most_freqがTRUE、has_hitがTRUEの場合、プロシージャにより、頻度が上位10位までの成功した問合せ(ヒットが戻された問合せ)が戻されます。

most_freq

QUERY_LOG_SUMMARYによって最も頻度の高い、または頻度の低い問合せを戻すかを指定します。デフォルトは最も頻度の高い問合せです。most_freqがFALSEに設定されている場合、最も頻度の低い成功した問合せがプロシージャによって戻されます。

has_hit

QUERY_LOG_SUMMARYにより、成功した(ヒットを生成した)問合せ、または失敗した問合せのいずれを戻すかを指定します。デフォルトは成功した問合せです。has_hitをFALSEに設定すると、失敗した問合せが戻されます。

例

次の例では、問合せログの使用例を示します。

まず、CTXSYSとして接続します。次に、2つの表を作成および移入して、それぞれ索引を作成します。

create table qlogtab1 (tk number primary key, text varchar2(2000));
insert into qlogtab1 values(1, 'The Roman name for France was Gaul.');
insert into qlogtab1 values(2, 'The Tour de France is held each summer.');
insert into qlogtab1 values(3, 'Jacques Anatole Thibault took the pen name Anatole France.');
create index idx_qlog1 on qlogtab1(text) indextype is ctxsys.context;
create table qlogtab2 (tk number primary key, text varchar2(2000));
insert into qlogtab2 values(1, 'The Great Wall of China is about 2400 kilometers long');
insert into qlogtab2 values(2, 'Soccer dates back at least to 217 C.E.');
insert into qlogtab2 values(3, 'The Corn Palace is a tourist attraction in South Dakota.');
create index idx_qlog2 on qlogtab2(text) indextype is ctxsys.context;

query_logというログを作成し、問合せのロギングを開始します。

exec ctx_output.start_query_log('query.log');

いくつかの問合せを行います(失敗する問合せも含めます)。

select text from qlogtab1 where contains(text, 'France',1)>0;
select text from qlogtab1 where contains(text, 'cheese',1)>0;
select text from qlogtab1 where contains(text, 'Text Wizard',1)>0;
select text from qlogtab2 where contains(text, 'Corn Palace',1)>0;
select text from qlogtab2 where contains(text, 'China',1)>0;
select text from qlogtab1 where contains(text, 'Text Wizards',1)>0;
select text from qlogtab2 where contains(text, 'South Dakota',1)>0;
select text from qlogtab1 where contains(text, 'Text Wizard',1)>0;
select text from qlogtab2 where contains(text, 'China',1)>0;
select text from qlogtab1 where contains(text, 'Text Wizard',1)>0;
select text from qlogtab2 where contains(text, 'company',1)>0;
select text from qlogtab1 where contains(text, 'Text Wizard',1)>0;
select text from qlogtab1 where contains(text, 'France',1)>0;
select text from qlogtab1 where contains(text, 'database',1)>0;
select text from qlogtab2 where contains(text, 'high-tech',1)>0;
select text from qlogtab1 where contains(text, 'database',1)>0;
select text from qlogtab1 where contains(text, 'France',1)>0;
select text from qlogtab1 where contains(text, 'Japan',1)>0;
select text from qlogtab1 where contains(text, 'Egypt',1)>0;
select text from qlogtab1 where contains(text, 'Argentina',1)>0;
select text from qlogtab1 where contains(text, 'Argentina',1)>0;
select text from qlogtab1 where contains(text, 'Argentina',1)>0;
select text from qlogtab1 where contains(text, 'Japan',1)>0;
select text from qlogtab1 where contains(text, 'Egypt',1)>0;
select text from qlogtab1 where contains(text, 'Air Shuttle',1)>0;
select text from qlogtab1 where contains(text, 'Argentina',1)>0;

問合せが終了したら、問合せのロギングを終了します。

exec ctx_output.end_query_log;

QUERY_LOG_SUMMARYを使用して問合せレポートを取得します。最初の例では、頻度が上位3位の成功した問合せを戻すよう指定します。まず、結果表を宣言します(the_queries)。

set serveroutput on;
declare
the_queries ctx_report.query_table;
begin
ctx_report.query_log_summary('query.log', null, the_queries,
row_num=>3, most_freq=>TRUE, has_hit=>TRUE);
dbms_output.put_line('The 3 most frequent queries returning hits');
dbms_output.put_line('number of times  query string');
for i in 1..the_queries.count loop
dbms_output.put_line(the_queries(i).times||'                '||the_queries(i).query);
end loop;
end;
/

次の結果が戻されます。

TThe 3 most frequent queries returning hits
number of times  query string
3                France
2                China
1                Corn Palace

次に、idx_qlog1に対する、頻度が上位3位の成功した問合せを戻すよう指定します。

declare
the_queries ctx_report.query_table;
begin
ctx_report.query_log_summary('query.log', 'idx_qlog1', the_queries,
row_num=>3, most_freq=>TRUE, has_hit=>TRUE);
dbms_output.put_line('The 3 most frequent queries returning hits for index idx_qlog1');
dbms_output.put_line('number of times  query string');
for i in 1..the_queries.count loop
dbms_output.put_line(the_queries(i).times||'                '||the_queries(i).query);
end loop;
end;
/

Franceに対する問合せのみが成功したため、ctx_report.query_log_summaryによって次の結果が戻されます。

The 3 most frequent queries returning hits for index idx_qlog1
number of times  query string
3                France

最後に、ヒットが戻されなかった、頻度が下位3位までの問合せ(つまり、失敗し、頻度が低かった問合せ)を戻すよう指定します。この場合、両方のCONTEXT索引に対する問合せを調べるため、indexnameパラメータにNULLを設定します。

declare
the_queries ctx_report.query_table;
begin
ctx_report.query_log_summary('query.log', null, the_queries, row_num=>3,
most_freq=>FALSE, has_hit=>FALSE);
dbms_output.put_line('The 3 least frequent queries returning no hit');
dbms_output.put_line('number of times  query string');
for i in 1..the_queries.count loop
dbms_output.put_line(the_queries(i).times||'                '||the_queries(i).query);
end loop;
end;
/

次の結果が戻されます。

The 3 least frequent queries returning no hit
number of times  query string
1                high-tech
1                company
1                cheese

ArgentinaおよびJapanは複数回問い合されたため、このリストには含まれていません。また、Corn Palaceに対する問合せは成功したため、やはりこのリストには含まれていません。

13.10 TOKEN_INFO

デコードされたトークンに関する情報を表示するレポートを作成します。このプロシージャでは、トークンの情報全体がスキャンされるため、大規模なトークンの場合は実行時間が長くなる可能性があります。

この操作は、IN OUT CLOBパラメータを指定したプロシージャとして、またはレポートをCLOBで戻すファンクションとしてコールできます。

構文

procedure CTX_REPORT.TOKEN_INFO(
index_name      IN VARCHAR2,
report          IN OUT NOCOPY CLOB,
token           IN VARCHAR2,
token_type      IN NUMBER,
part_name       IN VARCHAR2 DEFAULT NULL,
raw_info        IN BOOLEAN  DEFAULT FALSE,
decoded_info    IN BOOLEAN  DEFAULT TRUE,
report_format   IN VARCHAR2 DEFAULT FMT_TEXT
);

function CTX_REPORT.TOKEN_INFO(
index_name      IN VARCHAR2,
token           IN VARCHAR2,
token_type      IN NUMBER,
part_name       IN VARCHAR2 DEFAULT NULL,
raw_info        IN VARCHAR2 DEFAULT 'N',
decoded_info    IN VARCHAR2 DEFAULT 'Y',
report_format   IN VARCHAR2 DEFAULT FMT_TEXT
) return clob;

index_name

索引の名前を指定します。

report

レポートを書き込むCLOBロケータを指定します。

reportがNULLの場合は、セッション中に一時CLOBが作成されて戻ります。この一時CLOBは、必要に応じてコール元で解放してください。

report CLOBはレポートの生成前に切り捨てられます。したがって、既存の内容はこのコールによって上書きされます。トークンは、渡したトークン型によっては大/小文字が区別されます。

token

トークン・テキストを指定します。

token_type

トークン型を指定します。TOKEN_TYPEファンクションで戻される数値を使用できます。THEME、ZONE、ATTR、PATHおよびPATH ATTRのトークン型は、大/小文字が区別されます。

これ以外のトークン型でも、大/小文字を区別する索引のレクサーを通じて渡された場合は、トークン入力で大/小文字が区別されます。

part_name

索引パーティションの名前を指定します。

索引がローカル・パーティション索引である場合は、part_nameを指定する必要があります。TOKEN_INFOは、指定した索引パーティションのみに適用されます。

raw_info

索引データの16進ダンプを含める場合は、TRUEを指定します。raw_infoをTRUEに指定すると、token_info列にRAWデータの16進ダンプが含まれます。

decoded_info

デコードを指定し、DOCIDおよびオフセット・データを追加します。decoded_infoにFALSEを指定すると、トークン情報はCTX_REPORTによってデコードされません。これは、データのダンプのみを行う場合に便利です。

report_format

レポートを'TEXT'または'XML'のいずれで生成するかを指定します。デフォルトはTEXTです。また、値にCTX_REPORT.FMT_TEXTまたはCTX_REPORT.FMT_XMLも指定できます。

13.11 TOKEN_TYPE

英語名を数値のトークン型に変換する補助的なファンクションです。token_info、またはtoken_typeを取得するその他のCTX APIで使用すると便利です。

function token_type(
index_name in varchar2,
type_name  in varchar2
) return number;

TOKEN_TYPE_TEXT      constant number := 0;
TOKEN_TYPE_THEME     constant number := 1;
TOKEN_TYPE_ZONE_SEC  constant number := 2;
TOKEN_TYPE_ORIG          constant number := 3,
TOKEN_TYPE_ATTR_TEXT constant number := 4;
TOKEN_TYPE_ATTR_SEC  constant number := 5;
TOKEN_TYPE_PREFIX    constant number := 6;
TOKEN_TYPE_PATH_SEC  constant number := 7;
TOKEN_TYPE_PATH_ATTR constant number := 8;
TOKEN_TYPE_STEM      constant number := 9;

index_name

索引の名前を指定します。

type_name

token_typeの英語名を指定します。次に、適切な入力文字列を示します。すべての入力で、大/小文字は区別されません。

入力

意味

戻される型

TEXT

通常のテキスト・トークン

0

THEME

テーマ・トークン

1

ZONE SEC

ゾーン・トークン

2

ORIGINAL

原形トークン

3

ATTR TEXT

属性内のテキスト

4

ATTR SEC

属性セクション

5

PREFIX

プリフィックス・トークン

6

PATH SEC

パス・セクション

7

PATH ATTR

パス属性セクション

8

STEM

語幹トークン

9

FIELD <name> TEXT

フィールド・セクション<name>のテキスト・トークン

16-79

FIELD <name> PREFIX

フィールド・セクション<name>のプリフィックス・トークン

616-916

FIELD <name> STEM

フィールド・セクション<name>の語幹トークン

916-979

NDATA <name>

NDATA型トークン

200-299

TOKEN_TYPE_ATTR_TXT_PFIX

属性テキストのプリフィックス

604

TOKEN_TYPE_ATTR_TXT_STEM

属性テキストの語幹

904

FIELD型では、索引メタデータを読み取る必要があります。したがって、この目的のためにコールが大量に発生する場合は、token_typeを繰返しコールするのではなく、ローカル変数に値をキャッシュした方が効率的です。

定数型(0から9)にも、このパッケージで定義済の定数があります。

注意

MDATAトークンのトークン・タイプを取得する場合、CTX_REPORT.TOKEN_TYPEは使用しないでください。かわりにMDATA演算子を使用してください。(「MDATA」を参照してください。)使用する構文は「MDATA secname」です。

例

typenum := ctx_report.token_type('myindex', 'field author text');

13.12 VALIDATE_INDEX

索引の破損が発生していると考えられる場合に、診断を実行します。CTX_REPORT.VALIDATE_INDEXは、索引(またはローカル・パーティション索引)をチェックし、破損が検出されたかどうかをレポートします。VALIDATE_INDEXはtoken_typeが0の$I行しかチェックせず、NDATAセクションのようにセクションに関する情報を含んでいる他の行はチェックしません。

このプロシージャは主に、Oracle Supportの指示に従って使用する診断ツールとして提供されています。

14 CTX_THESパッケージ

この章では、シソーラスを管理および参照するためのCTX_THESパッケージの使用方法について説明します。これらのシソーラスのファンクションは、特に指定されていない場合は、ISO-2788およびANSI Z39.19規格に基づいています。

シソーラスへの情報の格納方法を理解しておくと、シソーラス演算子を使用した問合せを記述する際に役立ちます。また、シソーラスを使用して、英語とフランス語でのABOUT問合せおよびドキュメント・テーマの生成に使用するナレッジ・ベースを拡張できます。

CTX_THESには、次のストアド・プロシージャおよびファンクションが含まれています。

名前

説明

ALTER_PHRASE

シソーラス句を変更します。

ALTER_THESAURUS

シソーラスを名前変更または切り捨てます。

BT

句のすべての上位語を戻します。

BTG

句のすべての上位汎用語を戻します。

BTI

句のすべての上位インスタンス語を戻します。

BTP

句のすべての上位部分語を戻します。

CREATE_PHRASE

指定されたシソーラスに句を追加します。

CREATE_RELATION

2つの句の間にリレーションを作成します。

CREATE_THESAURUS

指定されたシソーラスを作成します。

CREATE_TRANSLATION

句に対する新しい翻訳を作成します。

DROP_PHRASE

シソーラスから句を削除します。

DROP_RELATION

2つの句の間のリレーションを削除します。

DROP_THESAURUS

指定されたシソーラスをシソーラス表から削除します。

DROP_TRANSLATION

句に対する翻訳を削除します。

EXPORT_THESAURUS

シソーラス表からシソーラスをエクスポートします。

HAS_RELATION

シソーラス・リレーションの存在の有無をテストします。

IMPORT_THESAURUS

シソーラス表にシソーラスをインポートします。

NT

句のすべての下位語を戻します。

NTG

句のすべての下位汎用語を戻します。

NTI

句のすべての下位インスタンス語を戻します。

NTP

句のすべての下位部分語を戻します。

OUTPUT_STYLE

拡張ファンクションの出力スタイルを設定します。

PT

句の優先語を戻します。

RT

句の関連語を戻します。

SN

句のスコープ・ノートを戻します。

SYN

句のシノニム語句を戻します。

THES_TT

句のすべての最上位語を戻します。

TR

句の外国語の等価語を戻します。

TRSYN

句の外国語の等価語、句のシノニムおよびシノニムの外国語の等価語を戻します。

TT

句の最上位語を戻します。

UPDATE_TRANSLATION

既存の翻訳を更新します。

関連項目:

シソーラス演算子の詳細は、「Oracle Text CONTAINS問合せ演算子」を参照してください。

14.1 ALTER_PHRASE

シソーラスの既存の句を変更します。句を変更できるのは、CTXSYSまたはシソーラスの所有者のみです。

構文

CTX_THES.ALTER_PHRASE(tname      in varchar2,
phrase     in varchar2,
op         in varchar2,
operand    in varchar2 default null);

tname

シソーラス名を指定します。

phrase

変更する句を指定します。

op (操作を変更)

変更操作を文字列または記号として指定します。次の操作の1つを、opとoperandの組で指定できます。

op (または操作を変更)

意味

operand

RENAME

または

CTX_THES.OP_RENAME

句を名前変更します。シソーラスに新しい句がすでに存在している場合は、このプロシージャによって例外が発生します。

新しい句を指定します。修飾子を挿入し、句に対する修飾子を変更、追加または削除できます。

PT

または

CTX_THES.OP_PT

句を優先語にします。シノニム・リングにある既存の優先語は、非優先シノニムになります。

(なし)

SN

または

CTX_THES.OP_SN

句のスコープ・ノートを変更します。

新しいスコープ・ノートを指定します。

operand

引数を指定し、操作を変更します。「"op (操作を変更)」の表を参照してください。

例

シソーラスの中のスペルの間違っているワードを修正します。

ctx_thes.alter_phrase('thes1', 'tee', 'rename', 'tea');

mercury (metal)から修飾子を削除します。

ctx_thes.alter_phrase('thes1', 'mercury (metal)', 'rename', 'mercury');

mercuryに修飾子を追加します。

ctx_thes.alter_phrase('thes1', 'mercury', 'rename', 'mercury (planet)');

シノニム・リング内でKowalskiを優先語にします。

ctx_thes.alter_phrase('thes1', 'Kowalski', 'pt');

view camerasのスコープ・ノートを変更します。

ctx_thes.alter_phrase('thes1', 'view cameras', 'sn', 'Cameras with lens focusing');

14.2 ALTER_THESAURUS

このプロシージャを使用して、既存のシソーラスを名前変更または切り捨てます。指定されたシソーラスでこのファンクションをコールできるのは、シソーラスの所有者またはCTXSYSユーザーのみです。

構文

CTX_THES.ALTER_THESAURUS(tname     in   varchar2,
op       in   varchar2,
operand  in   varchar2 default null);

tname

シソーラス名を指定します。

op

変更操作を文字列または記号として指定します。次の2つの操作のいずれかを指定できます。

op

意味

operand

RENAME

または

CTX_THES.OP_RENAME

シソーラスを名前変更します。新しい名前がすでに存在している場合は、エラーが戻ります。

新しいシソーラス名を指定します。

TRUNCATE

または

CTX_THES.OP_TRUNCATE

シソーラスを切り捨てます。

なし

operand

引数を指定し、操作を変更します。opの表を参照してください。

例

シソーラスTHES1をMEDICALに名前変更します。

ctx_thes.alter_thesaurus('thes1', 'rename', 'medical');

または

ctx_thes.alter_thesaurus('thes1', ctx_thes.op_rename, 'medical');

すべてのop引数に対して記号を使用できますが、これ以降の例ではすべて文字列を使用しています。

シソーラスTHES1からすべての句およびリレーションを削除します。

ctx_thes.alter_thesaurus('thes1', 'truncate');

14.3 BT

このファンクションは、指定されたシソーラスに記録されているとおりに、句のすべての上位語を戻します。

構文1: 表結果

CTX_THES.BT(restab IN OUT NOCOPY EXP_TAB,
phrase IN VARCHAR2,
lvl    IN NUMBER DEFAULT 1,
tname  IN VARCHAR2 DEFAULT 'DEFAULT');

構文2: 文字列結果

CTX_THES.BT(phrase IN VARCHAR2,
lvl    IN NUMBER DEFAULT 1,
tname  IN VARCHAR2 DEFAULT 'DEFAULT')
RETURN VARCHAR2;

restab

オプションで、結果を格納する拡張表の名前を指定します。この表は、次のようにシステムが定義するEXP_TAB型である必要があります。

type exp_rec is record (
xrel varchar2(12),
xlevel number,
xphrase varchar2(256)
);
type exp_tab is table of exp_rec index by binary_integer;

関連項目:

EXP_TABの詳細は、「Oracle Text結果表」の「CTX_THES結果表およびデータ型」を参照してください。

phrase

シソーラスで検索する句を指定します。

lvl

戻す上位語のレベルを指定します。たとえば、2を指定することによって、句の上位語の上位語までをすべて取得します。

tname

シソーラス名を指定します。指定しない場合は、システムのデフォルト・シソーラスが使用されます。

戻り値

このファンクションは、次の形式で上位語の文字列を戻します。

{bt1}|{bt2}|{bt3} ...

例

文字列結果

catに対して次のエントリを持つ、MY_THESというシソーラスがあるとします。

cat
BT1 feline
BT2 mammal
BT3 vertebrate
BT4 animal

catに対する上位語を2レベル上まで検索するには、次の文を入力します。

set serveroutput on

declare
terms varchar2(2000);
begin
terms := ctx_thes.bt('CAT', 2, 'MY_THES');
dbms_output.put_line('The broader expansion for CAT is: '||terms);
end;

このコードは、次の出力結果を戻します。

The broader expansion for CAT is: {cat}|{feline}|{mammal}

表結果

次の例は、表の結果を利用してwhite wolfに対する広義用語の検索を実行します。

set serveroutput on

declare
xtab ctx_thes.exp_tab;
begin
ctx_thes.bt(xtab, 'white wolf', 2, 'my_thesaurus');
for i in 1..xtab.count loop
dbms_output.put_line(xtab(i).rel||' '||xtab(i).phrase);
end loop;
end;

このコードは、次の出力結果を戻します。

PHRASE WHITE WOLF
BT WOLF
BT CANINE
BT ANIMAL

関連項目

"OUTPUT_STYLE "

"Broader Term (BT_ BTG_ BTP_ BTI)"

14.4 BTG

このファンクションは、指定されたシソーラスに記録されているとおりに、句のすべての上位汎用語を戻します。

構文1: 表結果

CTX_THES.BTG(restab IN OUT NOCOPY EXP_TAB,
phrase IN VARCHAR2,
lvl    IN NUMBER DEFAULT 1,
tname  IN VARCHAR2 DEFAULT 'DEFAULT');

構文2: 文字列結果

CTX_THES.BTG(phrase IN VARCHAR2,
lvl    IN NUMBER DEFAULT 1,
tname  IN VARCHAR2 DEFAULT 'DEFAULT')
RETURN VARCHAR2;

restab

オプションで、結果を格納する拡張表の名前を指定します。この表は、次のようにシステムが定義するEXP_TAB型である必要があります。

type exp_rec is record (
xrel varchar2(12),
xlevel number,
xphrase varchar2(256)
);
type exp_tab is table of exp_rec index by binary_integer;

関連項目:

EXP_TABの詳細は、「Oracle Text結果表」の「CTX_THES結果表およびデータ型」を参照してください。

phrase

シソーラスで検索する句を指定します。

lvl

戻す上位語のレベルを指定します。たとえば、2を指定することによって、句の上位語の上位語までをすべて取得します。

tname

シソーラス名を指定します。指定しない場合は、システムのデフォルト・シソーラスが使用されます。

戻り値

このファンクションは、次の形式で上位汎用語の文字列を戻します。

{bt1}|{bt2}|{bt3} ...

例

catに対する上位汎用語を2レベル上まで検索するには、次の文を入力します。

set serveroutput on
declare
terms varchar2(2000);
begin
terms := ctx_thes.btg('CAT', 2, 'MY_THES');
dbms_output.put_line('the broader expansion for CAT is: '||terms);
end;

関連項目

"OUTPUT_STYLE "

"Broader Term (BT_ BTG_ BTP_ BTI)"

14.5 BTI

このファンクションは、指定されたシソーラスに記録されているとおりに、句のすべての上位インスタンス語を戻します。

構文1: 表結果

CTX_THES.BTI(restab IN OUT NOCOPY EXP_TAB,
phrase IN VARCHAR2,
lvl    IN NUMBER DEFAULT 1,
tname  IN VARCHAR2 DEFAULT 'DEFAULT');

構文2: 文字列結果

CTX_THES.BTI(phrase IN VARCHAR2,
lvl    IN NUMBER DEFAULT 1,
tname  IN VARCHAR2 DEFAULT 'DEFAULT')
RETURN VARCHAR2;

restab

オプションで、結果を格納する拡張表の名前を指定します。この表は、次のようにシステムが定義するEXP_TAB型である必要があります。

type exp_rec is record (
xrel varchar2(12),
xlevel number,
xphrase varchar2(256)
);
type exp_tab is table of exp_rec index by binary_integer;

関連項目:

EXP_TABの詳細は、「Oracle Text結果表」の「CTX_THES結果表およびデータ型」を参照してください。

phrase

シソーラスで検索する句を指定します。

lvl

戻す上位語のレベルを指定します。たとえば、2を指定することによって、句の上位語の上位語までをすべて取得します。

tname

シソーラス名を指定します。指定しない場合は、システムのデフォルト・シソーラスが使用されます。

戻り値

このファンクションは、次の形式で上位インスタンス語の文字列を戻します。

{bt1}|{bt2}|{bt3} ...

例

catに対する上位インスタンス語を2レベル上まで検索するには、次の文を入力します。

set serveroutput on
declare
terms varchar2(2000);
begin
terms := ctx_thes.bti('CAT', 2, 'MY_THES');
dbms_output.put_line('the broader expansion for CAT is: '||terms);
end;

関連項目

"OUTPUT_STYLE "

"Broader Term (BT_ BTG_ BTP_ BTI)"

14.6 BTP

このファンクションは、指定されたシソーラスに記録されているとおりに、句のすべての上位部分語を戻します。

構文1: 表結果

CTX_THES.BTP(restab IN OUT NOCOPY EXP_TAB,
phrase IN VARCHAR2,
lvl    IN NUMBER DEFAULT 1,
tname  IN VARCHAR2 DEFAULT 'DEFAULT');

構文2: 文字列結果

CTX_THES.BTP(phrase IN VARCHAR2,
lvl    IN NUMBER DEFAULT 1,
tname  IN VARCHAR2 DEFAULT 'DEFAULT')
RETURN VARCHAR2;

restab

オプションで、結果を格納する拡張表の名前を指定します。この表は、次のようにシステムが定義するEXP_TAB型である必要があります。

type exp_rec is record (
xrel varchar2(12),
xlevel number,
xphrase varchar2(256)
);
type exp_tab is table of exp_rec index by binary_integer;

関連項目:

EXP_TABの詳細は、「Oracle Text結果表」の「CTX_THES結果表およびデータ型」を参照してください。

phrase

シソーラスで検索する句を指定します。

lvl

戻す上位語のレベルを指定します。たとえば、2を指定することによって、句の上位語の上位語までをすべて取得します。

tname

シソーラス名を指定します。指定しない場合は、システムのデフォルト・シソーラスが使用されます。

戻り値

このファンクションは、次の形式で上位語の文字列を戻します。

{bt1}|{bt2}|{bt3} ...

例

catに対する2つの上位部分語を検索するには、次の文を入力します。

declare
terms varchar2(2000);
begin
terms := ctx_thes.btp('CAT', 2, 'MY_THES');
dbms_output.put_line('the broader expansion for CAT is: '||terms);
end;

関連項目

"OUTPUT_STYLE "

"Broader Term (BT_ BTG_ BTP_ BTI)"

14.7 CREATE_PHRASE

CREATE_PHRASEプロシージャは、新しい句を指定したシソーラスに追加します。

注意:

このプロシージャでもシソーラスのリレーションを作成できますが、シソーラスにリレーションを作成する場合は、CTX_THES.CREATE_PHRASEではなくCTX_THES.CREATE_RELATIONを使用することをお薦めします。

構文

CTX_THES.CREATE_PHRASE(tname   IN VARCHAR2,
phrase  IN VARCHAR2,
rel     IN VARCHAR2 DEFAULT NULL,
relname IN VARCHAR2 DEFAULT NULL);

tname

新しい句を追加するシソーラスまたは既存の句があるシソーラスの名前を指定します。

phrase

シソーラスに追加する句、または新しいリレーションを作成する句を指定します。

rel

phraseおよびrelnameの間の新しい関係を指定します。このパラメータは、下位互換用にのみサポートされます。CTX_THES.CREATE_RELATIONを使用して、新しいリレーションをシソーラスに作成します。

relname

phraseに関連する既存の句を指定します。このパラメータは、下位互換用にのみサポートされます。CTX_THES.CREATE_RELATIONを使用して、新しいリレーションをシソーラスに作成します。

戻り値

エントリのIDです。

例

この例では、2つの新しい句(osおよびoperating system)がtech_thesという名前のシソーラスに作成されます。

begin
ctx_thes.create_phrase('tech_thes','os');
ctx_thes.create_phrase('tech_thes','operating system');
end;

14.8 CREATE_RELATION

シソーラスの中の2つの句の間にリレーションを作成します。ワードの長さに応じて、シノニム・リングの長さが約4000個のシノニムに制限されます。

注意:

シソーラスにリレーションを作成するには、CTX_THES.CREATE_PHRASEではなくCTX_THES.CREATE_RELATIONを使用することをお薦めします。

指定されたシソーラスでこのプロシージャをコールできるのは、シソーラスの所有者およびCTXSYSユーザーのみです。

構文

CTX_THES.CREATE_RELATION(tname      in    varchar2,
phrase     in    varchar2,
rel        in    varchar2,
relphrase  in    varchar2);

tname

シソーラス名を指定します。

phrase

変更または作成する句を指定します。phraseが明確な同形異義語の場合は、修飾子を指定する必要があります。phraseがシソーラスに存在しない場合は作成されます。

rel

作成するリレーションを指定します。phraseからrelphraseへのリレーションになります。次のリレーションのいずれかを指定できます。

リレーション

意味

relphrase

BT*/NT*

階層におけるリレーションを追加します。

関係付けられた句を指定します。phraseからrelphraseへのリレーションと解釈されます。

RT

関連語のリレーションを追加します。

関連付ける句を指定します。

SYN

句をシノニム・リングに追加します。

シノニム・リングの中の既存の句を指定します。

言語の指定

句に対する翻訳を追加します。

新しい翻訳句を指定します。

relphrase

関係付けられた句を指定します。relphraseがtname内に存在しない場合は、relphraseが作成されます。relの表を参照してください。

注意

relに対して指定したリレーションは、phraseからrelphraseへのリレーションと解釈されます。たとえば、上位語animalを持つdogがあるとします。

dog
BT animal

このリレーションを追加するには、引数を次のように指定します。

begin
CTX_THES.CREATE_RELATION('thes','dog','BT','animal');
end;

注意:

CTX_THES.CREATE_RELATIONに対して指定する引数の順序は、CTX_THES.CREATE_PHRASEで指定する順序とは異なります。

例

リレーションVEHICLE NT CARを作成します。

ctx_thes.create_relation('thes1', 'vehicle', 'NT', 'car');

youに対する日本語の翻訳を作成します。

ctx_thes.create_relation('thes1', 'you', 'JAPANESE:', 'kimi');

14.9 CREATE_THESAURUS

CREATE_THESAURUSプロシージャは、シソーラス表に、指定した名前を持つ空のシソーラスを作成します。

構文

CTX_THES.CREATE_THESAURUS(name           IN VARCHAR2,
casesens       IN BOOLEAN DEFAULT FALSE);

name

作成するシソーラスの名前を指定します。シソーラスの名前は一意である必要があります。指定した名前を持つシソーラスがすでに存在している場合、CREATE_THESAURUSはエラーを戻し、シソーラスは作成されません。

casesens

作成するシソーラスで大/小文字を区別するかどうかを指定します。casesensがTRUEの場合、Oracle Textは、指定されたシソーラスに入力されるすべての語句の大/小文字の区別を維持します。その結果、指定のシソーラスを使用する問合せの大/小文字が区別されます。

例

begin
ctx_thes.create_thesaurus('tech_thes', FALSE);
end;

14.10 CREATE_TRANSLATION

このプロシージャを使用して、指定した言語で句に対する新しい翻訳を作成します。

構文

CTX_THES.CREATE_TRANSLATION(tname       in    varchar2,
phrase      in    varchar2,
language    in    varchar2,
translation in    varchar2);

tname

シソーラスの名前を30文字以内で指定します。

phrase

翻訳を追加するシソーラス内の句を指定します。その句がシソーラスにすでに存在している必要があります。存在しない場合はエラーが発生します。

language

翻訳の言語を10文字以内で指定します。

translation

翻訳済の語句を256文字以内で指定します。

この句の翻訳がすでに存在している場合、この新しい翻訳は、元の翻訳を削除せずに追加されます。ただし、元の翻訳と同じでない場合にかぎります。同じ翻訳を2回追加すると、エラーになります。

例

次のコードは、dogに対するスペイン語の翻訳をmy_thesに追加します。

begin
ctx_thes.create_translation('my_thes', 'dog', 'SPANISH', 'PERRO');
end;

14.11 DROP_PHRASE

シソーラスから句を削除します。指定されたシソーラスでこのプロシージャをコールできるのは、シソーラスの所有者およびCTXSYSユーザーのみです。

構文

CTX_THES.DROP_PHRASE(tname      in varchar2,
phrase     in varchar2);

tname

シソーラス名を指定します。

phrase

削除する句を指定します。phraseが明確な同形異義語の場合は、修飾子を挿入する必要があります。句がtnameに存在しない場合は、このプロシージャによって例外が発生します。

BT* / NT*リレーションは、削除された句の前後にパッチされます。たとえば、AがBT Bを持ち、BがBT Cを持つ場合、Bが削除された後、AはBT Cを持ちます。

ワードが複数の上位語を持つ場合、各上位語に対する各下位語の関係が設定されます。

BT、BTG、BTPおよびBTIは別々の階層です。したがって、AがBTG Bを持ち、BがBTI Cを持つ場合、Bが削除されると、AとCの間に暗黙的なリレーションは作成されないことに注意してください。

RTリレーションはパッチされません。たとえば、AがRT Bを持ち、BがRT Cを持つ場合、Bが削除されると、AとCの間に対応関係は作成されません。

例

mythesに定義された次のリレーションがあるとします。

wolf
BT canine
canine
BT animal

句canineを削除します。

begin
ctx_thes.drop_phrase('mythes', 'canine');
end;

シソーラスの結果はパッチされ、次のようになります。

wolf
BT animal

14.12 DROP_RELATION

2つの句の間のリレーションをシソーラスから削除します。

注意:

CTX_THES.DROP_RELATIONは、2つの句の間のリレーションのみを削除します。このコールで、句が削除されることはありません。

指定されたシソーラスでこのプロシージャをコールできるのは、シソーラスの所有者およびCTXSYSユーザーのみです。

構文

CTX_THES.DROP_RELATION(tname     in    varchar2,
phrase    in    varchar2,
rel       in    varchar2,
relphrase in    varchar2 default null);

tname

シソーラス名を指定します。

phrase

対象の句を指定します。

rel

削除するリレーションを指定します。phraseからrelphraseへのリレーションになります。次のリレーションのいずれかを指定できます。

リレーション

意味

relphrase

BT*/NT*

階層のリレーションを削除します。

オプションでrelphraseを指定します。指定されない場合、句に対するこの種類のすべてのリレーションが削除されます。

RT

関連語のリレーションを削除します。

オプションでrelphraseを指定します。指定されない場合、句に対するすべてのRTリレーションが削除されます。

SYN

句をそのシノニム・リングから削除します。

(なし)

PT

優先語の指定を句から削除します。句はシノニム・リングに残ります。

(なし)

language

翻訳を句から削除します。

オプションでrelphraseを指定します。1つの句に対して、relに指定した言語に複数の翻訳がある場合は、relphraseを指定することで、1つの翻訳のみを削除することもできます。

relphraseがNULLの場合は、その言語での、その句に対するすべての翻訳が削除されます。

relphrase

関係付けられた句を指定します。

注意

relに対して指定したリレーションは、phraseからrelphraseへのリレーションと解釈されます。たとえば、上位語animalを持つdogがあるとします。

dog
BT animal

このリレーションを削除するには、引数を次のように指定します。

begin
CTX_THES.DROP_RELATION('thes','dog','BT','animal');
end;

また、次のようにNTを使用してこのリレーションを削除することもできます。

begin
CTX_THES.DROP_RELATION('thes','animal','NT','dog');
end;

例

リレーションVEHICLE NT CARを削除します。

ctx_thes.drop_relation('thes1', 'vehicle', 'NT', 'car');

vehicleに対するすべての下位語リレーションを削除します。

ctx_thes.drop_relation('thes1', 'vehicle', 'NT');

meに対する日本語の翻訳を削除します。

ctx_thes.drop_relation('thes1', 'me', 'JAPANESE:');

meに対する、指定した日本語の翻訳を削除します。

ctx_thes.drop_relation('thes1', 'me', 'JAPANESE:', 'boku')

14.13 DROP_THESAURUS

DROP_THESAURUSプロシージャは、指定したシソーラスおよびそのシソーラス表にあるすべてのエントリを削除します。

構文

CTX_THES.DROP_THESAURUS(name IN VARCHAR2);

name

削除するシソーラスの名前を指定します。

例

begin
ctx_thes.drop_thesaurus('tech_thes');
end;

14.14 DROP_TRANSLATION

このプロシージャを使用して、句に対する1つ以上の翻訳を削除します。

構文

CTX_THES.DROP_TRANSLATION (tname       in    varchar2,
phrase      in    varchar2,
language    in    varchar2 default null,
translation in    varchar2 default null);

tname

シソーラスの名前を30文字以内で指定します。

phrase

翻訳を削除するシソーラス内の句を指定します。その句がシソーラスにすでに存在している必要があります。存在しない場合はエラーが発生します。

language

オプションで、翻訳の言語を10文字以内で指定します。指定しない場合は、その翻訳も指定できません。その結果、その句に対するすべての言語での翻訳が削除されます。その句に翻訳がない場合は、エラーが発生します。

translation

オプションで、削除する翻訳済の語句を256文字以内で指定します。指定した翻訳が存在しない場合は、エラーが発生します。

例

次のコードは、dogに対するスペイン語の翻訳を削除します。

begin
ctx_thes.drop_translation('my_thes', 'dog', 'SPANISH', 'PERRO');
end;

次のコードは、dogに対するすべての言語での全翻訳を削除します。

begin
ctx_thes.drop_translation('my_thes', 'dog');
end;

14.15 EXPORT_THESAURUS

このプロシージャを使用して、Oracle Textのシソーラス表から、シソーラスをCLOBとしてエクスポートします。エクスポートされるシソーラスの形式は、Oracle Textシソーラス表にシソーラスをインポートするときにctxloadユーティリティが使用するシソーラス・ファイルと同じです。

関連項目:

ctxloadユーティリティの詳細は、「Oracle Textのユーティリティ」の「シソーラス・ローダー(ctxload)」を参照してください。

export_thesaurusを使用してOracle Textシソーラス表からシソーラスをエクスポートできるのは、シソーラスの所有者か、sysユーザーまたはctxsysユーザーのみです。

export_thesaurusによって実行される処理をログに記録するには、export_thesaurusをコールする前にctx_output.start_logをコールする必要があります。

構文

CTX_THES.EXPORT_THESAURUS(name in varchar2,
thesdump in out nocopy CLOB);

name

Oracle Textシソーラス表でエクスポートするシソーラス名を指定します。指定したシソーラスがOracle Textシソーラス表に存在しない場合は、このプロシージャで例外が発生します。

thedump

Oracle Textシソーラス表からエクスポートされるシソーラスを格納するCLOBの名前を指定します。

例

次の例では、mythesaurusという名前のシソーラスを、Oracle Textシソーラス表からmythesdumpというCLOBにコピーします。

declare
mythesdump clob;
begin
ctx_thes.export_thesaurus('mythesaurus', mythesdump);
end;

14.16 HAS_RELATION

HAS_RELATIONは、実際に拡張操作を実行せずに、シソーラス・リレーションの存在の有無をテストします。その句に対するリレーションが指定したリスト内にある場合は、TRUEを戻します。

構文

CTX_THES.HAS_RELATION(phrase in varchar2,
rel in varchar2,
tname in varchar2 default 'DEFAULT')
returns boolean;

phrase

句を指定します。

rel

単一のシソーラス・リレーションまたはカンマで区切られたリレーションのリストを指定します。ただし、PTは除外します。任意のリレーションを示すには、'ANY'を指定します。

tname

シソーラス名を指定します。

例

次の例では、DEFAULTシソーラス内の句catに上位語または上位汎用語がある場合は、TRUEを戻します。

set serveroutput on
result boolean;

begin
result := ctx_thes.has_relation('cat','BT,BTG');
if (result) then dbms_output.put_line('TRUE');
else  dbms_output.put_line('FALSE');
end if;
end;

14.17 IMPORT_THESAURUS

このプロシージャを使用して、Oracle Textのシソーラス表にシソーラスをインポートします。import_thesaurusによって実行される処理をログに記録するには、import_thesaurusをコールする前にctx_output.start_logをコールする必要があります。

構文

CTX_THES.IMPORT_THESAURUS(name in varchar2,
content in CLOB,
thescase in varchar2 default 'N');

name

作成するシソーラスの名前を指定します。nameパラメータに指定したシソーラスがOracle Textシソーラス表にすでに存在する場合は、このプロシージャで例外が発生します。

content

Oracle Textシソーラス表にインポートするシソーラスの内容を指定します。インポートするシソーラスの形式は、ctxloadユーティリティで使用される形式と同じである必要があります。インポートするシソーラスの形式が正しくない場合は、このプロシージャで例外が発生します。

関連項目:

ctxloadユーティリティの詳細は、「Oracle Textのユーティリティ」の「シソーラス・ローダー(ctxload)」を参照してください。

thecase

大/小文字を区別するシソーラスを作成する場合は'Y'を指定し、大/小文字を区別しないシソーラスを作成する場合は'N'を指定します。デフォルトは'N'です。

例

次の例では、大/小文字を区別するシソーラスをmythesaurusという名前で作成し、myclobに存在するそのシソーラスの内容をOracle Textシソーラス表にインポートします。

declare
myclob clob;
begin
myclob := to_clob('peking SYN beijing BT capital country NT beijing tokyo');
ctx_thes.import_thesaurus('mythesaurus', myclob, 'Y');
end;

14.18 NT

このファンクションは、指定されたシソーラスに記録されているとおりに、句のすべての下位語を戻します。

構文1: 表結果

CTX_THES.NT(restab IN OUT NOCOPY EXP_TAB,
phrase IN VARCHAR2,
lvl    IN NUMBER DEFAULT 1,
tname  IN VARCHAR2 DEFAULT 'DEFAULT');

構文2: 文字列結果

CTX_THES.NT(phrase IN VARCHAR2,
lvl    IN NUMBER DEFAULT 1,
tname  IN VARCHAR2 DEFAULT 'DEFAULT')
RETURN VARCHAR2;

restab

オプションで、結果を格納する拡張表の名前を指定します。この表は、次のようにシステムが定義するEXP_TAB型である必要があります。

type exp_rec is record (
xrel varchar2(12),
xlevel number,
xphrase varchar2(256)
);
type exp_tab is table of exp_rec index by binary_integer;

関連項目:

EXP_TABの詳細は、「Oracle Text結果表」の「CTX_THES結果表およびデータ型」を参照してください。

phrase

シソーラスで検索する句を指定します。

lvl

戻す下位語のレベルを指定します。たとえば、2を指定することによって、句の下位語の下位語までをすべて取得します。

tname

シソーラス名を指定します。指定しない場合は、システムのデフォルト・シソーラスが使用されます。

戻り値

このファンクションは、次の形式で下位語の文字列を戻します。

{nt1}|{nt2}|{nt3} ...

例

文字列結果

catに対して次のエントリを持つ、MY_THESというシソーラスがあるとします。

cat
NT domestic cat
NT wild cat
BT mammal
mammal
BT animal
domestic cat
NT Persian cat
NT Siamese cat

cat に対する下位語を2レベル下まで検索するには、次の文を入力します。

declare
terms varchar2(2000);
begin
terms := ctx_thes.nt('CAT', 2, 'MY_THES');
dbms_output.put_line('the narrower expansion for CAT is: '||terms);
end;

このコードは、次の出力結果を戻します。

the narrower expansion for CAT is: {cat}|{domestic cat}|{Persian cat}|{Siamese cat}| {wild cat}

表結果

次のコードは、表結果を使用してcanineに対する下位語の検索を実行します。

declare
xtab ctx_thes.exp_tab;
begin
ctx_thes.nt(xtab, 'canine', 2, 'my_thesaurus');
for i in 1..xtab.count loop
dbms_output.put_line(lpad(' ', 2*xtab(i).xlevel) ||
xtab(i).xrel || ' ' || xtab(i).xphrase);
end loop;
end;

このコードは、次の出力結果を戻します。

PHRASE CANINE
NT WOLF (Canis lupus)
NT WHITE WOLF
NT GREY WOLF
NT DOG (Canis familiaris)
NT PIT BULL
NT DASCHUND
NT CHIHUAHUA
NT HYENA (Canis mesomelas)
NT COYOTE (Canis latrans)

関連項目

"OUTPUT_STYLE "

Narrower Term (NT_ NTG_ NTP_ NTI)

14.19 NTG

このファンクションは、指定されたシソーラスに記録されているとおりに、句のすべての下位汎用語を戻します。

構文1: 表結果

CTX_THES.NTG(restab IN OUT NOCOPY EXP_TAB,
phrase IN VARCHAR2,
lvl    IN NUMBER DEFAULT 1,
tname  IN VARCHAR2 DEFAULT 'DEFAULT');

構文2: 文字列結果

CTX_THES.NTG(phrase IN VARCHAR2,
lvl    IN NUMBER DEFAULT 1,
tname  IN VARCHAR2 DEFAULT 'DEFAULT')
RETURN VARCHAR2;

restab

オプションで、結果を格納する拡張表の名前を指定します。この表は、次のようにシステムが定義するEXP_TAB型である必要があります。

type exp_rec is record (
xrel varchar2(12),
xlevel number,
xphrase varchar2(256)
);
type exp_tab is table of exp_rec index by binary_integer;

関連項目:

EXP_TABの詳細は、「Oracle Text結果表」の「CTX_THES結果表およびデータ型」を参照してください。

phrase

シソーラスで検索する句を指定します。

lvl

戻す下位語のレベルを指定します。たとえば、2を指定することによって、句の下位語の下位語までをすべて取得します。

tname

シソーラス名を指定します。指定しない場合は、システムのデフォルト・シソーラスが使用されます。

戻り値

このファンクションは、次の形式で下位汎用語の文字列を戻します。

{nt1}|{nt2}|{nt3} ...

例

cat に対する下位汎用語を2レベル下まで検索するには、次の文を入力します。

declare
terms varchar2(2000);
begin
terms := ctx_thes.ntg('CAT', 2, 'MY_THES');
dbms_output.put_line('the narrower expansion for CAT is: '||terms);
end;

関連項目

"OUTPUT_STYLE "

Narrower Term (NT_ NTG_ NTP_ NTI)

14.20 NTI

このファンクションは、指定されたシソーラスに記録されているとおりに、句のすべての下位インスタンス語を戻します。

構文1: 表結果

CTX_THES.NTI(restab IN OUT NOCOPY EXP_TAB,
phrase IN VARCHAR2,
lvl    IN NUMBER DEFAULT 1,
tname  IN VARCHAR2 DEFAULT 'DEFAULT');

構文2: 文字列結果

CTX_THES.NTI(phrase IN VARCHAR2,
lvl    IN NUMBER DEFAULT 1,
tname  IN VARCHAR2 DEFAULT 'DEFAULT')
RETURN VARCHAR2;

restab

オプションで、結果を格納する拡張表の名前を指定します。この表は、次のようにシステムが定義するEXP_TAB型である必要があります。

type exp_rec is record (
xrel varchar2(12),
xlevel number,
xphrase varchar2(256)
);
type exp_tab is table of exp_rec index by binary_integer;

関連項目:

EXP_TABの詳細は、「Oracle Text結果表」の「CTX_THES結果表およびデータ型」を参照してください。

phrase

シソーラスで検索する句を指定します。

lvl

戻す下位語のレベルを指定します。たとえば、2を指定することによって、句の下位語の下位語までをすべて取得します。

tname

シソーラス名を指定します。指定しない場合は、システムのデフォルト・シソーラスが使用されます。

戻り値

このファンクションは、次の形式で下位インスタンス語の文字列を戻します。

{nt1}|{nt2}|{nt3} ...

例

cat に対する下位インスタンス語を2レベル下まで検索するには、次の文を入力します。

declare
terms varchar2(2000);
begin
terms := ctx_thes.nti('CAT', 2, 'MY_THES');
dbms_output.put_line('the narrower expansion for CAT is: '||terms);
end;

関連項目

"OUTPUT_STYLE "

Narrower Term (NT_ NTG_ NTP_ NTI)

14.21 NTP

このファンクションは、指定されたシソーラスに記録されているとおりに、句のすべての下位部分語を戻します。

構文1: 表結果

CTX_THES.NTP(restab IN OUT NOCOPY EXP_TAB,
phrase IN VARCHAR2,
lvl    IN NUMBER DEFAULT 1,
tname  IN VARCHAR2 DEFAULT 'DEFAULT');

構文2: 文字列結果

CTX_THES.NTP(phrase IN VARCHAR2,
lvl    IN NUMBER DEFAULT 1,
tname  IN VARCHAR2 DEFAULT 'DEFAULT')
RETURN VARCHAR2;

restab

オプションで、結果を格納する拡張表の名前を指定します。この表は、次のようにシステムが定義するEXP_TAB型である必要があります。

type exp_rec is record (
xrel varchar2(12),
xlevel number,
xphrase varchar2(256)
);
type exp_tab is table of exp_rec index by binary_integer;

関連項目:

EXP_TABの詳細は、「Oracle Text結果表」の「CTX_THES結果表およびデータ型」を参照してください。

phrase

シソーラスで検索する句を指定します。

lvl

戻す下位語のレベルを指定します。たとえば、2を指定することによって、句の下位語の下位語までをすべて取得します。

tname

シソーラス名を指定します。指定しない場合は、システムのデフォルト・シソーラスが使用されます。

戻り値

このファンクションは、次の形式で下位部分語の文字列を戻します。

{nt1}|{nt2}|{nt3} ...

例

cat に対する下位部分語を2レベル下まで検索するには、次の文を入力します。

declare
terms varchar2(2000);
begin
terms := ctx_thes.ntp('CAT', 2, 'MY_THES');
dbms_output.put_line('the narrower expansion for CAT is: '||terms);
end;

関連項目

"OUTPUT_STYLE "

Narrower Term (NT_ NTG_ NTP_ NTI)

14.22 OUTPUT_STYLE

CTX_THES拡張ファンクションの戻り文字列に対する出力形式を設定します。このプロシージャは、CTX_THES拡張ファンクションに対する表結果には影響を与えません。

構文

CTX_THES.OUTPUT_STYLE (
showlevel     IN BOOLEAN DEFAULT FALSE,
showqualify   IN BOOLEAN DEFAULT FALSE,
showpt        IN BOOLEAN DEFAULT FALSE,
showid        IN BOOLEAN DEFAULT FALSE
);

showlevel

BT/NT拡張のレベルを示すには、TRUEを指定します。

showqualify

句修飾子を示すには、TRUEを指定します。

showpt

アスタリスク*を持つ優先語を示すには、TRUEを指定します。

showid

句IDを示すには、TRUEを指定します。

注意

CTX_THES拡張ファンクションに対する戻り文字列の一般的な構文は次のとおりです。

{pt indicator:phrase (qualifier):level:phraseid}

優先語のインジケータは、句の始めにアスタリスク、次にコロンです。修飾子は、句の終わりの空白の次のカッコの中です。レベルは数字です。

次は、birdのturkeyに対する戻り文字列の例です。

*:TURKEY (BIRD):1:1234

14.23 PT

このファンクションは、指定されたシソーラスに記録されているとおりに、句の優先語を戻します。

構文1: 表結果

CTX_THES.PT(restab IN OUT NOCOPY EXP_TAB,
phrase IN VARCHAR2,
tname  IN VARCHAR2 DEFAULT 'DEFAULT')
RETURN varchar2;

構文2: 文字列結果

CTX_THES.PT(phrase IN VARCHAR2,
tname  IN VARCHAR2 DEFAULT 'DEFAULT')
RETURN varchar2;

restab

オプションで、結果を格納する拡張表の名前を指定します。この表は、次のようにシステムが定義するEXP_TAB型である必要があります。

type exp_rec is record (
xrel varchar2(12),
xlevel number,
xphrase varchar2(256)
);
type exp_tab is table of exp_rec index by binary_integer;

関連項目:

EXP_TABの詳細は、「Oracle Text結果表」の「CTX_THES結果表およびデータ型」を参照してください。

phrase

シソーラスで検索する句を指定します。

tname

シソーラス名を指定します。指定しない場合は、システムのデフォルト・シソーラスが使用されます。

戻り値

このファンクションは、優先語を次の形式の文字列として戻します。

{pt}

例

automobileに対して次の優先語定義を持つシソーラスMY_THESがあるとします。

AUTOMOBILE
PT CAR

automobileに対する優先語を検索するには、次のコードを実行します。

declare
terms varchar2(2000);
begin
terms := ctx_thes.pt('AUTOMOBILE','MY_THES');
dbms_output.put_line('The prefered term for automobile is: '||terms);
end;

関連項目

"OUTPUT_STYLE "

"PREFERRED TERM(PT)"

14.24 RT

このファンクションは、指定されたシソーラスの語句の関連語を戻します。

構文1: 表結果

CTX_THES.RT(restab IN OUT NOCOPY EXP_TAB,
phrase IN VARCHAR2,
tname  IN VARCHAR2 DEFAULT 'DEFAULT');

構文2: 文字列結果

CTX_THES.RT(phrase IN VARCHAR2,
tname  IN VARCHAR2 DEFAULT 'DEFAULT')
RETURN varchar2;

restab

オプションで、結果を格納する拡張表の名前を指定します。この表は、次のようにシステムが定義するEXP_TAB型である必要があります。

type exp_rec is record (
xrel varchar2(12),
xlevel number,
xphrase varchar2(256)
);
type exp_tab is table of exp_rec index by binary_integer;

関連項目:

EXP_TABの詳細は、「Oracle Text結果表」の「CTX_THES結果表およびデータ型」を参照してください。

phrase

シソーラスで検索する句を指定します。

tname

シソーラス名を指定します。指定しない場合は、システムのデフォルト・シソーラスが使用されます。

戻り値

このファンクションは、次の形式で関連語の文字列を戻します。

{rt1}|{rt2}|{rt3}| ...

例

dogに対して次の関連語定義を持つシソーラスMY_THESがあるとします。

DOG
RT WOLF
RT HYENA

dogに対する関連語を検索するには、次のコードを実行します。

declare
terms varchar2(2000);
begin
terms := ctx_thes.rt('DOG','MY_THES');
dbms_output.put_line('The related terms for dog are: '||terms);
end;

このコードは、次の出力結果を戻します。

The related terms for dog are: {dog}|{wolf}|{hyena}

関連項目

"OUTPUT_STYLE "

"RELATED TERM(RT)"

14.25 SN

このファンクションは、指定された句のスコープ・ノートを戻します。

構文

CTX_THES.SN(phrase IN VARCHAR2,
tname  IN VARCHAR2 DEFAULT 'DEFAULT')
RETURN VARCHAR2;

phrase

シソーラスで検索する句を指定します。

tname

シソーラス名を指定します。指定しない場合は、システムのデフォルト・シソーラスが使用されます。

戻り値

このファンクションは、スコープ・ノートを文字列として戻します。

例

declare
note varchar2(80);
begin
note := ctx_thes.sn('camera','mythes');
dbms_output.put_line('CAMERA');
dbms_output.put_line(' SN ' || note);
end;

sample output:

CAMERA
SN Optical cameras

14.26 SYN

このファンクションは、指定されたシソーラスに記録されているとおりに、すべての句のシノニムを戻します。

構文1: 表結果

CTX_THES.SYN(restab IN OUT NOCOPY EXP_TAB,
phrase IN VARCHAR2,
tname  IN VARCHAR2 DEFAULT 'DEFAULT');

構文2: 文字列結果

CTX_THES.SYN(phrase IN VARCHAR2,
tname  IN VARCHAR2 DEFAULT 'DEFAULT')
RETURN VARCHAR2;

restab

オプションで、結果を格納する拡張表の名前を指定します。この表は、次のようにシステムが定義するEXP_TAB型である必要があります。

type exp_rec is record (
xrel varchar2(12),
xlevel number,
xphrase varchar2(256)
);
type exp_tab is table of exp_rec index by binary_integer;

関連項目:

EXP_TABの詳細は、「Oracle Text結果表」の「CTX_THES結果表およびデータ型」を参照してください。

phrase

シソーラスで検索する句を指定します。

tname

シソーラス名を指定します。指定しない場合は、システムのデフォルト・シソーラスが使用されます。

戻り値

このファンクションは、次の形式の文字列を戻します。

{syn1}|{syn2}|{syn3} ...

例

文字列結果

catに対して次のエントリを持つ、ANIMALSというシソーラスがあるとします。

CAT
SYN KITTY
SYN FELINE

catに対するシノニムを検索し、結果を文字列として取得するには、次の文を入力します。

declare
synonyms varchar2(2000);
begin
synonyms := ctx_thes.syn('CAT','ANIMALS');
dbms_output.put_line('the synonym expansion for CAT is: '||synonyms);
end;

このコードは、次の出力結果を戻します。

the synonym expansion for CAT is: {CAT}|{KITTY}|{FELINE}

表結果

次のコードは、canineに対するシノニムを検索し、結果を表に取得します。表の内容は、標準出力で出力されます。

declare
xtab ctx_thes.exp_tab;
begin
ctx_thes.syn(xtab, 'canine', 'my_thesaurus');
for i in 1..xtab.count loop
dbms_output.put_line(lpad(' ', 2*xtab(i).xlevel) ||
xtab(i).xrel || ' ' || xtab(i).xphrase);
end loop;
end;

このコードは、次の出力結果を戻します。

PHRASE CANINE
PT DOG
SYN PUPPY
SYN MUTT
SYN MONGREL

関連項目

"OUTPUT_STYLE "

"SYNonym (SYN)"

14.27 THES_TT

このプロシージャは、シソーラスのすべての最上位語を検索して戻します。最上位語は、下位語を持つが上位語を持たないすべての語句として定義されます。

このプロシージャは、シソーラス全体を検索し、すべての最上位語を検索します。TTは句の中で、その句の最上位語を検索します。この点で、THES_TTとTTは異なります。

大規模なシソーラス

このプロシージャはシソーラス全体を検索するため、大規模なシソーラスを処理することもできます。このようなシソーラスに対して、このファンクションを頻繁にコールしないでください。かわりに、アプリケーションでこれを1回コールして結果を別の表に格納し、この格納された結果を使用してください。

構文

CTX_THES.THES_TT(restab IN OUT NOCOPY EXP_TAB,
tname  IN VARCHAR2 DEFAULT 'DEFAULT');

restab

結果を格納する拡張表の名前を指定します。この表は、次のようにシステムが定義するEXP_TAB型である必要があります。

type exp_rec is record (
xrel varchar2(12),
xlevel number,
xphrase varchar2(256)
);
type exp_tab is table of exp_rec index by binary_integer;

関連項目:

EXP_TABの詳細は、「Oracle Text結果表」の「CTX_THES結果表およびデータ型」を参照してください。

tname

シソーラス名を指定します。指定しない場合は、システムのデフォルト・シソーラスが使用されます。

戻り値

このプロシージャはすべての最上位語を戻し、それをrestabに格納します。

14.28 TR

このファンクションは、指定された単一言語のシソーラスに対し、シソーラスに記録されているとおりに句の外国語の等価語を戻します。

注意:

外国語の翻訳は、ISO-2788またはANSI Z39.19シソーラス規格に準拠するものではありません。TRの動作は、Oracle Text固有です。

構文1: 表結果

CTX_THES.TR(restab IN OUT NOCOPY EXP_TAB,
phrase IN VARCHAR2,
lang   IN VARCHAR2 DEFAULT NULL,
tname  IN VARCHAR2 DEFAULT 'DEFAULT')

構文2: 文字列結果

CTX_THES.TR(phrase IN VARCHAR2,
lang   IN VARCHAR2 DEFAULT NULL,
tname  IN VARCHAR2 DEFAULT 'DEFAULT')
RETURN VARCHAR2;

restab

オプションで、結果を格納する拡張表の名前を指定します。この表は、次のようにシステムが定義するEXP_TAB型である必要があります。

type exp_rec is record (
xrel varchar2(12),
xlevel number,
xphrase varchar2(256)
);
type exp_tab is table of exp_rec index by binary_integer;

関連項目:

EXP_TABの詳細は、「Oracle Text結果表」の「CTX_THES結果表およびデータ型」を参照してください。

phrase

シソーラスで検索する句を指定します。

lang

外国語を指定します。phraseのすべての翻訳を示すには、ALLを指定します。

tname

シソーラス名を指定します。指定しない場合は、システムのデフォルト・シソーラスが使用されます。

戻り値

このファンクションは、次の形式で外国語の語句の文字列を戻します。

{ft1}|{ft2}|{ft3} ...

例

catに対して次のエントリを持つシソーラスMY_THESがあるとします。

cat
SPANISH: gato
FRENCH:  chat
SYN lion
SPANISH: leon

catに対する翻訳を検索するには、次の文を入力します。

declare
trans      varchar2(2000);
span_trans varchar2(2000);
begin
trans := ctx_thes.tr('CAT','ALL','MY_THES');
span_trans := ctx_thes.tr('CAT','SPANISH','MY_THES')
dbms_output.put_line('the translations for CAT are: '||trans);
dbms_output.put_line('the Spanish translations for CAT are: '||span_trans);
end;

このコードは、次の出力結果を戻します。

the translations for CAT are: {CAT}|{CHAT}|{GATO}
the Spanish translations for CAT are: {CAT}|{GATO}

関連項目

"OUTPUT_STYLE "

"TRANSLATION TERM(TR)"

14.29 TRSYN

このファンクションは、指定された単一言語のシソーラスに対し、シソーラスに記録されているとおりに句の外国語の等価語、句のシノニムおよびシノニムの外国語の等価語を戻します。

注意:

外国語の翻訳は、ISO-2788またはANSI Z39.19シソーラス規格に準拠するものではありません。TRSYNの動作は、Oracle Text固有です。

構文1: 表結果

CTX_THES.TRSYN(restab IN OUT NOCOPY EXP_TAB,
phrase IN VARCHAR2,
lang   IN VARCHAR2 DEFAULT NULL,
tname  IN VARCHAR2 DEFAULT 'DEFAULT');

構文2: 文字列結果

CTX_THES.TRSYN(phrase IN VARCHAR2,
lang   IN VARCHAR2 DEFAULT NULL,
tname  IN VARCHAR2 DEFAULT 'DEFAULT')
RETURN VARCHAR2;

restab

オプションで、結果を格納する拡張表の名前を指定します。この表は、次のようにシステムが定義するEXP_TAB型である必要があります。

type exp_rec is record (
xrel varchar2(12),
xlevel number,
xphrase varchar2(256)
);
type exp_tab is table of exp_rec index by binary_integer;

関連項目:

EXP_TABの詳細は、「Oracle Text結果表」の「CTX_THES結果表およびデータ型」を参照してください。

phrase

シソーラスで検索する句を指定します。

lang

外国語を指定します。phraseのすべての翻訳を示すには、ALLを指定します。

tname

シソーラス名を指定します。指定しない場合は、システムのデフォルト・シソーラスが使用されます。

戻り値

このファンクションは、次の形式で外国語の語句の文字列を戻します。

{ft1}|{ft2}|{ft3} ...

例

catに対して次のエントリを持つシソーラスMY_THESがあるとします。

cat
SPANISH: gato
FRENCH:  chat
SYN lion
SPANISH: leon

catに対する翻訳およびシノニムを検索するには、次の文を入力します。

declare
synonyms   varchar2(2000);
span_syn   varchar2(2000);
begin
synonyms := ctx_thes.trsyn('CAT','ALL','MY_THES');
span_syn := ctx_thes.trsyn('CAT','SPANISH','MY_THES')
dbms_output.put_line('all synonyms for CAT are: '||synonyms);
dbms_output.put_line('the Spanish synonyms for CAT are: '||span_syn);
end;

このコードは、次の出力結果を戻します。

all synonyms for CAT are: {CAT}|{CHAT}|{GATO}|{LION}|{LEON}
the Spanish synonyms for CAT are: {CAT}|{GATO}|{LION}|{LEON}

関連項目

"OUTPUT_STYLE "

TRANSLATION TERM SYNONYM(TRSYN)

14.30 TT

このファンクションは、指定されたシソーラスに記録されているとおりに、句の最上位語を戻します。

構文1: 表結果

CTX_THES.TT(restab IN OUT NOCOPY EXP_TAB,
phrase IN VARCHAR2,
tname  IN VARCHAR2 DEFAULT 'DEFAULT');

構文2: 文字列結果

CTX_THES.TT(phrase IN VARCHAR2,
tname  IN VARCHAR2 DEFAULT 'DEFAULT')
RETURN varchar2;

restab

オプションで、結果を格納する拡張表の名前を指定します。この表は、次のようにシステムが定義するEXP_TAB型である必要があります。

type exp_rec is record (
xrel varchar2(12),
xlevel number,
xphrase varchar2(256)
);
type exp_tab is table of exp_rec index by binary_integer;

関連項目:

EXP_TABの詳細は、「Oracle Text結果表」の「CTX_THES結果表およびデータ型」を参照してください。

phrase

シソーラスで検索する句を指定します。

tname

シソーラス名を指定します。指定しない場合は、システムのデフォルト・シソーラスが使用されます。

戻り値

このファンクションは、次の形式で最上位語の文字列を戻します。

{tt}

例

dogに対して次の上位語エントリを持つシソーラスMY_THESがあるとします。

DOG
BT1 CANINE
BT2 MAMMAL
BT3 VERTEBRATE
BT4 ANIMAL

DOGに対する最上位語を検索するには、次のコードを実行します。

declare
terms varchar2(2000);
begin
terms := ctx_thes.tt('DOG','MY_THES');
dbms_output.put_line('The top term for DOG is: '||terms);
end;

このコードは、次の出力結果を戻します。

The top term for dog is: {ANIMAL}

関連項目

"OUTPUT_STYLE "

"TOP TERM(TT)"

14.31 UPDATE_TRANSLATION

このプロシージャを使用して、既存の翻訳を更新します。

構文

CTX_THES.UPDATE_TRANSLATION(tname       in     varchar2,
phrase      in     varchar2,
language    in     varchar2,
translation in     varchar2,
new_translation in varchar2);

tname

シソーラスの名前を30文字以内で指定します。

phrase

翻訳を更新するシソーラス内の句を指定します。その句がシソーラスにすでに存在している必要があります。存在しない場合はエラーが発生します。

language

翻訳の言語を10文字以内で指定します。

translation

更新する翻訳済の語句を指定します。指定した翻訳が存在しない場合は、エラーが発生します。

phrase に対する翻訳が1つのみの場合は、NULLを指定できます。指定した言語の語句に対して複数の翻訳がある場合は、エラーが発生します。

new_translation

オプションで、翻訳済語句の新しい形式を指定します。

例

次のコードは、dogに対するスペイン語の翻訳を更新します。

begin
ctx_thes.update_translation('my_thes', 'dog', 'SPANISH:', 'PERRO', 'CAN');
end;

15 CTX_ULEXERパッケージ

この章では、ユーザー定義のレクサーで使用するためのPL/SQLパッケージCTX_ULEXERの使用方法について説明します。

CTX_ULEXERは、次の型を宣言します。

名前

説明

WILDCARD_TAB

索引付き表型を使用して、ユーザー定義レクサーの問合せプロシージャでワイルド・カード文字として処理する文字のオフセットを指定します。

15.1 WILDCARD_TAB

TYPE WILDCARD_TAB IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;

この索引付き表型を使用して、ユーザー定義レクサーの問合せプロシージャでワイルド・カード文字として処理する問合せワードの文字オフセットを指定します。

文字オフセット情報はUSC-2コードポイント・セマンティクスに準拠します。

16 Oracle Textのユーティリティ

Oracle Textではテキスト索引での管理と操作のためのユーティリティが提供されます。たとえば、特定のシソーラスを索引にロードすることができ、特に、索引に関連する固有のナレッジ・ベースを作成することができます。この章では、Oracle Textで提供されるユーティリティについて説明します。

この章の内容は次のとおりです。

- シソーラス・ローダー(ctxload)

- エンティティ抽出ユーザー・ディクショナリ・ローダー(ctxload)

- ナレッジ・ベース拡張コンパイラ(ctxkbtc)

- 字句コンパイラ(ctxlc)

16.1 シソーラス・ローダー(ctxload)

ctxloadを使用して、シソーラスのファイルをOracle Textのシソーラス表にインポートします。

インポート・ファイルは、ASCIIフラット・ファイルで、問合せを拡張するときに使用するシノニム、上位語、下位語または関連語のエントリを含みます。

この項では、次の項目について説明します。

- ctxloadテキストのロード

- ctxload構文

- ctxloadの例

関連項目:

シソーラス・インポート用のインポート・ファイルの例は、「Oracle Textのテキストのロード例」の「ctxloadシソーラス・インポート・ファイルの構造」を参照してください。

16.1.1ctxloadテキストのロード

現在、ctxloadプログラムはテキスト列のロードをサポートしていません。ファイルをバッチ・モードのテキスト列にロードする場合は、SQL*Loaderの使用をお薦めします。

関連項目:

「Oracle Textのテキストのロード例」の「SQL*Loaderの例」

16.1.2 ctxload構文

ctxload -user username[/password][@sqlnet_address]
-name object_name
-file file_name

[-thes]
[-thescase y|n]
[-thesdump]
[-log file_name]
[-trace]
[-drop]

ctxloadの必須引数

-user

ctxloadを実行するユーザー名およびパスワードを指定します。

ユーザー名およびパスワードの直後に@sqlnet_addressを指定すると、リモート・データベースにログインできるようになります。sqlnet_addressの値はデータベースの接続文字列です。環境変数TWO_TASKがリモート・データベースに設定されている場合は、データベースへの接続でsqlnet_addressの値を指定する必要はありません。

-name object_name

ctxloadを使用してシソーラスをインポートする場合、インポートするシソーラスの名前を指定するにはobject_nameを使用します。

シソーラス演算子を使用する問合せでシソーラスを識別するには、object_nameを使用します。

注意:

シソーラス名は、一意である必要があります。シソーラスに指定した名前が既存のシソーラスと同一である場合、ctxloadはエラーを戻し、既存のシソーラスが上書きされることはありません。

-file file_name

ctxloadを使用してシソーラスをインポートする場合、シソーラスのエントリがあるインポート・ファイルの名前を指定するには、file_nameを使用します。

ctxloadを使用してシソーラスをエクスポートする場合、ctxloadで作成されたエクスポート・ファイルの名前を指定するには、file_nameを使用します。

注意:

シソーラス・ダンプ・ファイルに指定した名前が既存のファイル名と同一である場合は、ctxloadにより既存のファイルが上書きされます。

ctxloadのオプションの引数

-thes

シソーラスをインポートします。-file引数でソース・ファイルを指定します。-nameでインポートするシソーラスの名前を指定します。

-thescase y | n

yを指定すると、-nameで指定した名前で大/小文字が区別されるシソーラスを作成し、そのシソーラスに-fileで指定したシソーラス・インポート・ファイルのエントリを移入します。-thescaseをy (大/小文字が区別されるシソーラス)にすると、ctxloadはインポート・ファイルに登録されているとおりにワードをシソーラスに入力します。

-thescaseiのデフォルト値はn(大/小文字が区別されないシソーラス)です。

注意:

-thescaseは、-thes引数と併用した場合にのみ有効です。

-thesdump

シソーラスをエクスポートします。-name引数で、エクスポートするシソーラスの名前を指定します。-file引数で宛先ファイルを指定します。

-log

ファイルのロード時にctxloadによって生成される、各国語対応(グローバリゼーション・サポート)メッセージの書込み先ログ・ファイル名を指定します。ログ・ファイルの名前を指定しない場合、メッセージは標準出力に書き出されます。

-trace

ALTER SESSION SET SQL_TRACE TRUEを使用したSQL文のトレースを使用可能にします。このコマンドによって、トレース・ファイルにあるすべての処理済SQL文を獲得し、デバッグに使用できます。トレース・ファイルの位置は、オペレーティング・システム依存であり、DIAGNOSTIC_DEST初期化パラメータを使用して変更できます。

関連項目:

SQLトレースおよびDIAGNOSTIC_DEST初期化パラメータの詳細は、『Oracle Database管理者ガイド』を参照してください。

16.1.3 ctxloadの例

この項では、ctxloadが実行可能な操作の例を示します。

関連項目:

その他のドキュメントのロード例は、「Oracle Textのテキストのロード例」を参照してください。

次の例では、tech_docというシソーラスをtech_thesaurus.txtというインポート・ファイルからインポートします。

ctxload -user jsmith/password -thes -name tech_doc -file tech_thesaurus.txt

次の例では、tech_docというシソーラスの内容のダンプをtech_thesaurus.outというファイルにエクスポートします。

ctxload -user jsmith/password -thesdump -name tech_doc -file tech_thesaurus.out

16.2 エンティティ抽出ユーザー・ディクショナリ・ローダー(ctxload)

ctxloadを使用して、エンティティ抽出ユーザー・ディクショナリをOracle Text表にインポートします。

インポート・ファイルは、関連付けられている型と代替形式を使用した、エンティティのエントリを含むXMLフラット・ファイルです。

この項では、次の項目について説明します。

- ctxload構文

- ユーザー・ディクショナリを作成する場合の考慮点

- XMLスキーマ

- ctxloadの例

16.2.1 ctxload構文

ctxload -user username[/password][@sqlnet_address]
-extract
-name entity extraction policy name
-file user-dictionary file name
[-drop] to drop a user-dictionary from a policy

ctxloadの必須引数

-user

ctxloadを実行するユーザー名およびパスワードを指定します。

ユーザー名およびパスワードの直後に@sqlnet_addressを指定すると、リモート・データベースにログインできるようになります。sqlnet_addressの値はデータベースの接続文字列です。環境変数TWO_TASKがリモート・データベースに設定されている場合は、データベースへの接続でsqlnet_addressの値を指定する必要はありません。

-name エンティティ抽出ポリシー名

ctxloadを使用してエンティティ抽出ディクショナリをインポートする場合、object_nameを使用してディクショナリを関連付けるエンティティ抽出ポリシーを指定します。エンティティ抽出ポリシーは、1つのユーザー・ディクショナリのみ使用できます。

-file ユーザー・ディクショナリ・ファイル名

ユーザー・ディクショナリを含むXMLファイルの名前を指定します。

-drop

現在エンティティ抽出ポリシーに関連付けられているユーザー・ディクショナリを削除します。

16.2.2 ユーザー・ディクショナリを作成する場合の考慮点

ユーザー・ディクショナリを作成する場合の考慮点は、次のとおりです。

- エンティティ参照は大/小文字が区別されます。NULL文字は使用できません。

- エンティティ・タイプ名の大/小文字は区別されません。NULL文字およびカンマは使用できません。

- 2つ以上のエンティティ・タイプを1つのエンティティ参照に割り当てることができます。たとえば、「Washington」エンティティに「CITY」型や「STATE」型を割り当てることができます。

- ユーザー・ディクショナリの内容は、他のユーザーに表示されません。

- エンティティ参照の最大バイト長は、サーバー側のデータベースのキャラクタ・セットごとに512バイトです。

- エンティティ・タイプ名の最大バイト長は、サーバー側のデータベースのキャラクタ・セットごとに30バイトです。

- ユーザー定義エンティティ・タイプ名は、「x」で始める必要があります。

16.2.3 XMLスキーマ

エンティティ抽出ディクショナリは、このXMLスキーマに準拠します。

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">

<xsd:element name="dictionary">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="entities" type="entityType" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:complexType>
</xsd:element>

<xsd:complexType name="entityType">
<xsd:sequence>
<xsd:element name="entity" type="entType" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:attribute name="language" type="xsd:string"/>
</xsd:complexType>

<xsd:complexType name="entType">
<xsd:sequence>
<xsd:element name="value" type="xsd:string"/>
<xsd:element name="type" type="xsd:string" minOccurs="1" maxOccurs="unbounded"/>
<xsd:element name="alternate" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>

次の表に、エンティティ抽出ディクショナリのXMLスキーマの一部を示します。

要素名

説明

dictionary

エンティティのコレクション

entities

言語ごとのエンティティのコレクション

entity

各エンティティ

value

エンティティ参照

type

エンティティ・タイプ

alternate

エンティティの代替形式

属性名

要素名

説明

language

Entities

エンティティ内の各エンティティの言語名

16.2.4 ctxloadの例

ctxloadを使用してロードできるエンティティ抽出ユーザー・ディクショナリ・ファイルの例を次に示します。

<?xml version="1.0" encoding="utf-8"?>
<dictionary>
<entities>
<entity>
<value>New York</value>
<type>city</type>
</entity>
</entities>
<entities language="german">
<entity>
<value>Deutschland</value>
<type>country</type>
<entity>
</entities>
<entities language="english">
<entity>
<value>Astra</value>
<type>person</type>
<type>organization</type>
</entity>
<entity>
<value>George W. Bush<value>
<type>person</type>
<alternate>G. W. Bush<alternate>
<alternate>G. Bush<alternate>
</entity>
</entities>
</dictionary>

16.3 ナレッジ・ベース拡張コンパイラ(ctxkbtc)

ナレッジ・ベースとは、テーマの索引付け、ABOUT問合せの処理などのテーマ分析を実行したり、CTX_DOCパッケージでのドキュメント・テーマを抽出するために、Oracle Textで使用する情報ソースのことです。ナレッジ・ベースはデフォルトで英語およびフランス語で提供され、インストールされます。

ctxkbtcコンパイラを使用して、次の操作を実行できます。

- Oracle Textのナレッジ・ベースで1つ以上のシソーラスをコンパイルし、使用しているナレッジ・ベースを拡張します。アプリケーション固有の語句および関連情報も拡張されます。テーマ分析時に、ナレッジ・ベースの拡張部分は、ナレッジ・ベースでオーバーラップする語句および関連情報を上書きします。

- 1つ以上のシソーラスをコンパイルして新しいユーザー定義のナレッジ・ベースを作成します。英語とフランス語以外の言語では、この機能は、言語固有のナレッジ・ベースの作成に使用できます。

注意:

CTXSYSを使用した場合のみナレッジ・ベースを拡張できます。

この項では、次の項目について説明します。

- ナレッジ・ベースのキャラクタ・セット

- ctxkbtc構文

- ctxkbtcの使用上の注意

- ctxkbtcの制限事項

- シソーラス語句に対するctxkbtcの制約

- シソーラス・リレーションに対するctxkbtcの制約

- ナレッジ・ベースの拡張
ナレッジ・ベースの拡張例

- 言語固有のナレッジ・ベースの追加
ナレッジ・ベースの追加に関する制限事項

- 複数のシソーラスの優先順位

- 拡張ナレッジ・ベースのサイズ制限

関連項目:

ABOUT演算子の詳細は、「Oracle Text CONTAINS問合せ演算子」の「ABOUT」演算子を参照してください。

ドキュメント・サービスの詳細は、「CTX_DOCパッケージ」を参照してください。

16.3.1 ナレッジ・ベースのキャラクタ・セット

ナレッジ・ベースは、任意のシングルバイト・キャラクタ・セットで格納できます。提供されるナレッジ・ベースは、WE8ISO8859P1です。拡張ナレッジ・ベースは、US7ASCIIなどの別のキャラクタ・セットで格納できます。

16.3.2 ctxkbtc構文

ctxkbtc -user uname/passwd

[-name thesname1 [thesname2 ... thesname16]]
[-revert]
[-stoplist stoplistname]
[-verbose]
[-log filename]

-user

拡張ナレッジ・ベースを作成する管理者用のユーザー名およびパスワードを指定します。このユーザーには、ORACLE_HOMEディレクトリへの書込み権限が必要です。

-name thesname1 [thesname2 ... thesname16]

拡張ナレッジ・ベースを作成するためにナレッジ・ベースでコンパイルするシソーラス(最大16)の名前を指定します。指定するシソーラスは、ctxloadで「-thescase Y」オプションを指定してロードされている必要があります。

-revert

拡張ナレッジ・ベースを、Oracle Textのデフォルトのナレッジ・ベースに回復します。

-stoplist stoplistname

ストップリストの名前を指定します。ストップリスト内のストップワードは、テーマまたはテーマの一部になることができない不使用ワードとしてナレッジ・ベースに追加されます。このコマンドの実行後、CTX_DLL.ADD_STOPTHEMEを使用してストップテーマを追加します。

-verbose

グローバリゼーション・サポート以外のメッセージを含む、すべての警告およびメッセージを標準出力に表示します。

-log

すべてのメッセージを格納するログ・ファイルを指定します。ログ・ファイルを指定すると、メッセージは標準出力にレポートされません。

16.3.3 ctxkbtcの使用上の注意

- ctxkbtcの実行前に、環境変数NLS_LANGをデータベース・キャラクタ・セットに一致するように設定しておく必要があります。

- ctxkbtcを発行するユーザーには、ORACLE_HOMEディレクトリへの書込み権限が必要です。プログラムにより、このディレクトリにファイルが書き込まれるためです。

- コンパイル前に、各シソーラスが、ctxloadの「-thescase Y」オプションによって大/小文字が区別されてOracle Textにロードされている必要があります。

- ctxkbtcを2回実行すると、前の拡張は削除されます。

16.3.4 ctxkbtcの制限事項

ctxkbtcプログラムには、次の制限事項があります。

- データベースを別のリリースにアップグレードまたはダウングレードする場合は、テーマの索引付けや関連機能が正常に機能するように、拡張ナレッジ・ベースを新しい環境で再コンパイルすることをお薦めします。

- ナレッジ・ベースを拡張する前に、ナレッジ・ベース関連のTextファンクションを起動したすべてのサーバー・プロセスを、それらのプロセスが有効な間に終了しておく必要があります。

- 各インストールの各言語ごとに1ユーザーのみが拡張できます。ユーザー拡張は、そのインストールのすべてのユーザーに影響を与えるため、CTXSYSユーザーのみがナレッジ・ベースを拡張できます。

- Oracle RAC環境では、複数のノード間でORACLE_HOMEを共有するか、または各ノードに独自のORACLE_HOMEを設定できます。次の要件が適用されます。

- ナレッジ・ベースに依存する機能をいずれかのOracle RACノードで使用する前に、Oracle RAC環境内のすべてのORACLE_HOMEでctxkbtcを実行する必要があります。

- ctxkbtcを使用する際は、Oracle RAC環境内のすべてのORACLE_HOMEで、同一の入力シソーラスの内容を使用する必要があります。

16.3.5 シソーラス語句に対するctxkbtcの制約

語句は、大/小文字が区別されます。たとえば、シソーラスに大文字の語句がある場合、ドキュメント内で小文字で表記されている同一語句は認識されません。

1つの語句の最大長は、80文字です。

明確な同形異義語は、サポートされません。

16.3.6 シソーラス・リレーションに対するctxkbtcの制約

次の制約が、シソーラス・リレーションに適用されます。

- BTGおよびBTPはBTと同じです。NTGおよびNTPはNTと同じです。

- 優先語のみが、BT、NTまたはRTを持つことができます。

- 語句がUSEリレーションを持たない場合は、独自の優先語として扱われます。

- 語句のセットがSYNリレーションによって関連付けられている場合は、そのうちの1つのみが優先語になることがあります。

- 既存のカテゴリを、最上位語にすることはできません。

- BTおよびNTリレーションには、サイクルはありません。

- 1つの語句は、最大1つの優先語および最大1つのBTを持つことができます。語句は、NTをいくつでも持つことができます。

- 語句のRTは、その語句の上位クラスまたは下位クラスになることができません。優先語は、32以下であればいくつでもRTを持つことができます。

- ツリーの高さは、最上位語レベルを含めて最高16です。

- 複数のシソーラスがコンパイルされる場合、1つのシソーラスの最上位語は、別のシソーラスの上位語を持つことはできません。

注意:

シソーラスのコンパイラは、前述のルールの一部の違反を許容します。たとえば、語句が複数のBTを持つ場合、コンパイラは最後のBTのみ検出し、他はすべて無視します。

同様に、既存のナレッジ・ベースのカテゴリ間にBTがある場合も、警告メッセージが表示されるのみです。

違反のある拡張ストレージ・ベースは設定しないでください。違反のある拡張ストレージ・ベースを使用すると、好ましくない結果を引き起こす場合があります。

16.3.7 ナレッジ・ベースの拡張

Oracle Textのナレッジ・ベースで1つ以上のシソーラスをコンパイルし、提供されているナレッジ・ベースを拡張します。アプリケーション固有の語句および関連情報も拡張されます。テーマ分析時に、ナレッジ・ベースの拡張部分は、ナレッジ・ベースでオーバーラップする語句および関連情報を上書きします。

ナレッジ・ベースの拡張時には、テーマを検証する場合に最適な結果が得られるように、新規語句をナレッジ・ベースのカテゴリの1つにリンクすることをお薦めします。

新規語句を既存のカテゴリから完全に切り離している場合は、新規語句から検証されるテーマが少なくなります。この結果、精度が低下するためABOUT問合せでコールしなおす必要があります。また、要点およびテーマ・ハイライトの品質も低下します。

既存語句を新規語句の上位語にすることによって、新規語句を既存語句にリンクします。

16.3.8 ナレッジ・ベースの拡張例

医学用語の階層を含む医学シソーラスmedthesを購入します。このシソーラスの4つの最上位語は、次のとおりです。

- Anesthesia and Analgesia(麻酔および無痛)

- Anti-Allergic and Respiratory System Agents(抗アレルギー薬および呼吸器系薬)

- Anti-Inflammatory Agents, Antirheumatic Agents, and Inflammation Mediators(抗炎症薬、抗リウマチ薬および炎症伝達物質)

- Antineoplastic and Immunosuppressive Agents(抗腫瘍薬および免疫抑制薬)

これらの語句を既存のナレッジ・ベースにリンクするには、医学シソーラスに次のエントリを追加して、新規語句を既存のhealth and medicineブランチにマップします。

health and medicine
NT Anesthesia and Analgesia
NT Anti-Allergic and Respiratory System Agents
NT Anti-Inflamammatory Agents, Antirheumatic Agents, and Inflamation Mediators
NT Antineoplastic and Immunosuppressive Agents

グローバリゼーション・サポート言語の環境変数をデータベース・キャラクタ・セットに一致するように設定します。たとえば、データベース・キャラクタ・セットがWE8ISO8859P1で、アメリカ英語を使用している場合は、次のようにNLS_LANGを設定します。

setenv NLS_LANG AMERICAN_AMERICA.WE8ISO8859P1

医学シソーラスがmed.thesというファイルにある場合は、次のように、ctxloadでシソーラスをmedthesとしてロードします。

ctxload -thes -thescase y -name medthes -file med.thes -user ctxsys/ctxsys

ロードされたシソーラスmedthesをナレッジ・ベースにリンクするには、次のようにctxkbtcを使用します。

ctxkbtc -user ctxsys/ctxsys -name medthes

16.3.9 言語固有のナレッジ・ベースの追加

シングルバイトの空白で区切られた言語の独自のナレッジ・ベースをロードして、スペイン語など、英語やフランス語以外の言語に対してテーマ機能を拡張します。

テーマ機能には、テーマの索引付け、ABOUT問合せ、テーマ・ハイライト、およびPL/SQLパッケージCTX_DOCを使用したテーマ、要点およびテーマ・サマリーの生成などの機能が含まれます。

テーマ機能は、ユーザー定義ナレッジ・ベースを追加して拡張します。たとえば、スペイン語シソーラスからスペイン語のナレッジ・ベースを作成できます。

言語固有のナレッジ・ベースをロードする手順は、次のとおりです。

1. ユーザー定義シソーラスをctxloadを使用してロードします。

2. language部分がターゲット言語になるように、NLS_LANGを設定します。charset部分は、シングルバイト・キャラクタ・セットに設定する必要があります。

3. ロード済のシソーラスをctxkbtcを使用して次のようにコンパイルします。

ctxkbtc -user ctxsys/ctxsys -name my_lang_thes

このコマンドは、言語固有のナレッジ・ベースをロード済のシソーラスからコンパイルします。索引付けおよびABOUT問合せ時のテーマ分析にこのナレッジ・ベースを使用するには、NLS_LANG言語をBASIC_LEXERプリファレンスのTHEME_LANGUAGE属性値として指定します。

16.3.10 ナレッジ・ベースの追加に関する制限事項

ナレッジ・ベースの追加には、次の制限事項が適用されます。

- Oracle Textで提供されているナレッジ・ベースは、英語とフランス語のみです。それ以外の言語に対しては、独自のシソーラスを用意する必要があります。

- ナレッジ・ベースは、シングルバイト・キャラクタ・セットを持つ言語に対してのみ追加できます。マルチバイト・キャラクタ・セットでのみ表現される言語に対しては、ナレッジ・ベースを作成できません。データベースが、UTF-8などのマルチバイト・ユニバーサル・キャラクタ・セットの場合は、そのシソーラスのコンパイル時に、NLS_LANGパラメータを互換性のあるシングルバイト・キャラクタ・セットに設定する必要があります。

- ナレッジ・ベースの追加によって、空白で区切られた言語が最適に機能します。

- グローバリゼーション・サポート言語ごとに1つのナレッジ・ベースを持つことができます。

- 上位語、下位語および関連語などの階層問合せフィードバック情報の取得操作は、英語とフランス語以外の言語では機能しません。その他の言語では、ナレッジ・ベースがユーザーのシソーラスからのみ導出されるためです。したがって、使用しているシソーラスから直接階層情報を取得することをお薦めします。

16.3.11 複数のシソーラスの優先順位

複数のシソーラスがコンパイルされる場合、コンパイラへの引数に指定されているシソーラスの順序(最も優先度が高いものが最初)によって、優先順位が決定されます。ユーザー定義のシソーラスは、常に最初から組み込まれているナレッジ・ベースより優先されます。

16.3.12 拡張ナレッジ・ベースのサイズ制限

次の表は、拡張ナレッジ・ベースの作成およびコンパイルに対応付けられたサイズ制限を示しています。

表16-1 拡張ナレッジ・ベースのサイズ制限

パラメータの説明

制限

語句ごとのRT数(from + to)

32

1階層ごとの語句数(たとえば、指定した最上位語のすべての下位語)

64000

拡張ナレッジ・ベースの新規語句数

100万

ナレッジ・ベースへのユーザー拡張にコンパイル可能な個別のシソーラス数

16

16.4 字句コンパイラ(ctxlc)

字句コンパイラ(ctxlc)は、ユーザー独自の中国語および日本語レキシコン(ディクショナリ)の作成に使用できる、コマンドライン・ユーティリティです。このレキシコンは、ユーザーが作成したワード・リストから生成したり、その言語のシステム・レキシコンとワード・リストをマージして生成できます。

ctxlcにより、現行ディレクトリに新しいレキシコンが作成されます。新しいレキシコンは、drold.dat、drolk.datおよびdroli.datの3つのファイルで構成されます。日本語または中国語のシステム・レキシコンを変更するには、システム・レキシコンをこれらのファイルで上書きします。

また、字句コンパイラにより、日本語および中国語のシステム・レキシコンからワード・リストを生成し、その内容を表示できます。これらのワード・リストは、標準出力に送られるため、任意のファイルにリダイレクトできます。

システム・レキシコンの上書き後、問合せを行う前に索引を再作成する必要があります。

この項では、次の項目について説明します。

- ctxlcの構文

- ctxlcのパフォーマンスに関する考慮事項

- ctxlcの使用上の注意

- ctxlcの例

16.4.1 ctxlcの構文

ctxlcの構文は、次のとおりです。

ctxlc -ja | -zht [ -n ] -ics character_set -i input_file

ctxlc -ja | -zht -ocs character_set [ > output_file ]

ctxloadの必須引数

-ja | -zht

変更または作成するレキシコンの言語を指定します。-jaは日本語レキシコンを示し、-zhtは中国語レキシコンを示し、繁体字および簡体字の中国語のいずれも同じです。

-ics character_set

-i input_fileによって表される入力ファイルのキャラクタ・セットを指定します。input_fileは、新規レキシコンの作成に使用するワード・リストで、1行当たり1ワードを使用します。

-i input_file

新規レキシコンの作成に使用する、ワードが含まれているファイルを指定します。

-ocs character_set

出力するテキスト・ファイルのキャラクタ・セットを指定します。

ctxloadのオプションの引数

-n

input_fileから取得したユーザー提供のワードのみで構成される新規レキシコンを作成するには、-nを指定します。-nが指定されていない場合、新規レキシコンは、システム・レキシコンとinput_fileをマージして構成されます。また、-nが選択されていない場合、drolt.datと呼ばれるテキスト・ファイルが現行ディレクトリに作成されるため、ctxlcコマンドを再入力しなくても、マージしたレキシコンの内容を確認できます。

16.4.2ctxlcのパフォーマンスに関する考慮事項

レキシコンには最大1,000,000の新規ワードを追加できます。ただし、非常に大きなレキシコンを作成すると、索引付けおよび問合せ時にパフォーマンスが低下するおそれがあります。レキシコンのキャラクタ・セットがUTF-8の場合、最高のパフォーマンスが得られます。中国語または日本語のV-gramレクサーはレキシコンを使用しないため、パフォーマンスに影響を受けません。

16.4.3 ctxlcの使用上の注意

ctxlcについて、次のことをお薦めします。

- 緊急時に備え、プレーン・テキスト・ディクショナリ・ファイルを保存しておいてください。

- データベースを別のリリースにアップグレードまたはダウングレードする場合は、ユーザー・レキシコンが正常に機能するように、プレーン・テキスト・ディクショナリ・ファイルを新しい環境で再コンパイルすることをお薦めします。

16.4.4 ctxlcの例

この例では、JA16EUCキャラクタ・セットを使用するワード・リストであるファイルjadict.txtから、新規の日本語レキシコンを作成します。-nを指定していないため、新規レキシコンは、jadict.txtとシステム日本語レキシコンをマージしたものになります。その後、既存の日本語レキシコンを新規のマージしたものに置換します。

% ctxlc -ja -ics JA16EUC -i jadict.txt

これにより、現行ディレクトリに新規ファイルが作成されます。

% ls
drold.dat
drolk.dat
droli.dat
drolt.dat

日本語と中国語のシステム・レキシコン・ファイルは、droldxx.dat、drolkxx.datおよびdrolixx.datと名付けられます。xxはJA (日本語)またはZH (中国語)です。これら3つの新規ファイルの名前を変更し、システム日本語レキシコンが含まれているディレクトリにコピーします。

% mv drold.dat droldJA.dat
% mv drolk.dat drolkJA.dat
% mv droli.dat droliJA.dat
% cp *dat $ORACLE_HOME/ctx/data/jalx

これにより、システム日本語レキシコンが、古いシステム・レキシコンとjadict.txtのワード・リストをマージしたものと置換されます。

また、ctxlcを使用して、システム・レキシコンのダンプを取得できます。次の例では、中国語レキシコンを現行ディレクトリ内のnew_chinese_dict.txtというファイルにダンプします。

% ctxlc -zh -ocs UTF8 > new_chinese_dict.txt

これにより、現行ディレクトリに、UTF-8キャラクタ・セットを使用したnew_japanese.dict.txtというファイルが作成されます。

17 Oracle Text代替スペル

この章では、Oracle Textによる単語の代替スペルの様々な処理方法について説明します。また、Oracle Textがドイツ語、デンマーク語およびスウェーデン語で使用する代替スペルの規則についても説明します。

この章の内容は次のとおりです。

- 代替スペル機能の概要

- 代替スペル機能のオーバーライド

- 代替スペルの規則

17.1 代替スペル機能の概要

一部の言語では、いくつかの単語に代替スペルが存在します。たとえば、ドイツ語の単語Schoenには、Schönというスペルも存在します。

ワードの形式には、元の形式と正規化された形式が存在します。ワードの元の形式は、ソース・ドキュメントで使用されている形式です。正規化された形式は、ワードが変換される場合、その変換された形式です。索引付けされるワード、および有効であるシステム・プリファレンス(この章で説明)によって異なりますが、ワードの正規化された形式は、元の形式と同じである場合があります。また、正規化された形式には、複数のスペルが存在する場合があります。たとえば、Schoenの正規化された形は、SchoenおよびSchönです。

Oracle Textでは、次の方法でワードの代替形式の索引付けを処理します。

- 代替スペル: 代替形式の索引付けが有効

- 基本文字変換: アクセントの付いた文字をアクセントのない形式に変換

- ドイツ語の新スペル: ドイツ語の改良された(新しい)スペルを使用可能

これらの機能を有効にするには、該当する属性をBASIC_LEXERで指定します。たとえば、代替スペルを有効にするには、ALTERNATE_SPELLING属性にGERMAN、DANISHまたはSWEDISHを指定します。次に、ドイツ語の代替スペルを有効にする方法を示します。

begin
ctx_ddl.create_preference('GERMAN_LEX', 'BASIC_LEXER');
ctx_ddl.set_attribute('GERMAN_LEX', 'ALTERNATE_SPELLING', 'GERMAN');
end;

代替スペルを使用禁止にするには、次のようにCTX_DDL.UNSET_ATTRIBUTEプロシージャを使用します。

begin
ctx_ddl.unset_attribute('GERMAN_LEX', 'ALTERNATE_SPELLING');
end;

Oracle Textは、検索前に問合せ語句をその正規化された形式に変換します。したがって、ユーザーはいずれかのスペルでワードを問い合せることができます。SchoenがSchoenとSchönの両方で索引付けされている場合、Schönに対する問合せは、いずれかの形式が含まれているドキュメントを戻します。

この項では、次の項目について説明します。

- 代替スペル

- 基本文字変換

- ドイツ語の新スペル

17.1.1 代替スペル

スウェーデン語、ドイツ語またはデンマーク語で、ワードのスペルが複数存在する場合は、通常、Oracle Textはそのワードを元の形式、つまりソース・ドキュメントで使用される形式で索引付けします。

代替スペルを有効にすると、Oracle Textは、ワードを正規化された形式で索引付けします。したがって、たとえば、SchoenはSchoenとSchönの両方で索引付けされ、Schoenに対する問合せは、いずれかのスペルが含まれているドキュメントを戻します。(Schönに対する問合せの場合も同じです。)

代替スペルを有効にするには、BASIC_LEXER属性のALTERNATE_SPELLINGにGERMAN、DANISHまたはSWEDISHを設定します。詳細は「BASIC_LEXER」を参照してください。

17.1.2 基本文字変換

Oracle Textでは、代替スペル以外に、基本文字変換も処理できます。基本文字変換を有効にすると、ウムラウト、揚音アクセント、セディーユなどを持つ文字が、索引付けの際、基本形式に変換されます。これにより、fiancéはfiancéおよびfianceの両方で索引付けされ、fiancéに対する問合せは、いずれかの形式が含まれているドキュメントを戻します。

基本文字変換を有効にするには、BASIC_LEXER属性のBASE_LETTERにYESを設定します。詳細は「BASIC_LEXER」を参照してください。

代替スペルも同時に有効になっている場合、予期せぬ結果を防止するために、場合により、基本文字変換をオーバーライドする必要があります。詳細は、「代替スペル機能のオーバーライド」を参照してください。

共通および言語固有の基本文字変換

BASE_LETTER_TYPE属性は、基本文字変換の実行方法を決定します。可能な値は、GENERICおよびSPECIFICです。

GENERIC値はデフォルトで、基本文字変換の際、全言語に適用する変換表を1つ使用するよう指定します。

SPECIFIC値は、使用言語固有の基本文字変換が使用されることを意味します。これにより、使用言語のワード検索ではアクセントの有無を考慮し、他の言語のアクセントは無視することが可能になります。

たとえば、GENERIC表およびスペイン語のSPECIFIC表の両方で、éはeに変換されます。ただし、ñという文字は異なった方法で処理されます。GENERIC表では、ñはアクセント(厳密にはティルデ)を持つnとして扱われ、ñからnに変換されます。スペイン語のSPECIFIC表では、ñはアルファベットの別の文字として扱われるため、変換されません。

17.1.3 ドイツ語の新スペル

1996年、ドイツ語の新しいスペル規則が、ドイツ語を話すすべての国の代表によって承認されました。たとえば、このスペル改革により、PotentialはPotenzial、SchiffahrtはSchifffahrt、schneuzenはschnäuzenとなります。

BASIC_LEXER属性のNEW_GERMAN_SPELLINGにYESを設定すると、新規および旧来の形式の両方を持つドイツ語のワードに対するCONTAINS問合せでは、両方の形式を持つドキュメントが戻されます。たとえば、Potentialに対する問合せでは、PotentialおよびPotenzialが含まれているドキュメントが戻されます。デフォルト設定はNOです。

注意:

改革後のドイツ語のスペルでは、従来1ワードとして綴られていたワードの多く(たとえばsoviel)が、2ワード(so viel)として綴られるようになりました。現在、Oracle Textではこれらの変換や、2ワードから1ワードへの変換(たとえばweh tunからwehtunへの変換)は行いません。

変換されたワードが大文字か小文字であるかは、ソース・ドキュメントの最初の2文字によって決定されます。つまり、schiffahrtはschifffahrt、SchiffahrtはSchifffahrt、そしてSCHIFFAHRTはSCHIFFFAHRTとなります。

ドイツ語の新スペルの多くではハイフンが含まれるため、NEW_GERMAN_SPELLINGを使用する場合、ハイフンをprintjoinとして定義することをお薦めします。

この属性の設定方法の詳細は、「BASIC_LEXER」を参照してください。

17.2 代替スペル機能のオーバーライド

代替スペル機能がレクサー・プリファレンスによって指定されている場合でも、オーバーライドすることが可能です。

代替スペルが使用されている場合に基本文字変換はオーバーライドでき、それにより代替スペル形式を持つü、öおよびäなどの文字が、基本文字形式にも変換されることを防ぎます。

代替スペルによる基本文字変換のオーバーライド

alternate_spellingを有効にすることによって実行される変換は、base_letterによる変換よりも先に実行されます。両方が有効であると、予期せぬ結果が発生する可能性があるためです。

代替スペルが有効な場合、Oracle Textは、2文字の形式を1文字の形式に変換するため(たとえばueをüに変換)、ワードを基本形式および代替形式の両方で検索できます。そのため、代替スペルを有効にすると、Schoenに対する検索で、SchoenおよびSchönを持つ両方のドキュメントが戻されます。

ただし、基本文字変換も同時に有効にすると、Schlüsselに含まれるüはuに変換され、(ドイツ語において)存在しない語Schlusselとなり、この3つの形式で索引付けされます。

この2つ目の変換を防止するためには、OVERRIDE_BASE_LETTER属性にTRUEを設定します。

OVERRIDE_BASE_LETTERは、ウムラウトを持つ文字にのみ影響を与えます。たとえば、アクセントを持つ文字は、基本形式に変換されます。

BASE_LETTERの詳細は、「基本文字変換」を参照してください。

17.3 代替スペルの規則

次の各項で、Oracle Textで使用される代替スペルを示します。

- ドイツ語の代替スペルの規則

- デンマーク語の代替スペルの規則

- スウェーデン語の代替スペルの規則

17.3.1 ドイツ語の代替スペルの規則

ドイツ語のアルファベットは、英語のアルファベットに、ä ö ü ßなどの他の文字を追加したものです。表17-1は、Oracle Textがこれらの文字に対して使用する代替スペルの規則を示しています。

表17-1 ドイツ語の代替スペルの規則

文字

代替スペル

ä

ae

ü

ue

ö

oe

Ä

AE

Ü

UE

Ö

OE

ß

ss

17.3.2 デンマーク語の代替スペルの規則

デンマーク語のアルファベットは、wを除くラテン・アルファベットにø æ åなどの特殊文字を追加したものです。表17-2は、Oracle Textがこれらの文字に対して使用する代替スペルの規則を示しています。

表17-2 デンマーク語の代替スペルの規則

文字

代替スペル

æ

ae

ø

oe

å

aa

Æ

AE

Ø

OE

Å

AA

17.3.3 スウェーデン語の代替スペルの規則

スウェーデン語のアルファベットは、wを除く英語のアルファベットにå ä öなどの特殊文字を追加したものです。表17-3は、Oracle Textがこれらの文字に対して使用する代替スペルの規則を示しています。

表17-3 スウェーデン語の代替スペルの規則

文字

代替スペル

ä

ae

å

aa

ö

oe

Ä

AE

Å

AA

Ö

OE

A Oracle Text結果表

この付録では、CTX_QUERY、CTX_DOCおよびCTX_THESパッケージのプロシージャによって生成された出力を格納するために使用する結果表の構造について説明します。

この付録の内容は次のとおりです。

- CTX_QUERY結果表

- CTX_DOC結果表

- CTX_THES結果表およびデータ型

A.1 CTX_QUERY結果表

結果を戻すCTX_QUERYプロシージャに対して、プロシージャがコールされる前に結果を格納するための表を作成しておく必要があります。表には自由に名前を付けることができますが、特定の名前およびデータ型を持つ列が組み込まれている必要があります。

この項では、次のタイプの結果表とその結果表に必要な列について説明します。

- EXPLAIN表

- HFEEDBACK表

A.1.1 EXPLAIN表

この項では、EXPLAIN表について説明します。

- EXPLAIN表の構造

- EXPLAIN表のOPERATION列

- EXPLAIN表のOPTIONS列の値

A.1.1.1 EXPLAIN表の構造

表A-1は、CTX_QUERY.EXPLAINによって結果が書き込まれる表の構造を示しています。

表A-1 EXPLAIN結果表

列名

データ型

説明

EXPLAIN_ID

VARCHAR2(30)

FEEDBACKコールで指定したexplain_id引数の値。

ID

NUMBER

問合せ実行ツリーの各ノードに割り当てられた番号。ルート・オペレーション・ノードでは、ID =1です。ノードは、解析ツリーでの表示のとおり、上から下、左から右の順に順序番号が付けられます。

PARENT_ID

NUMBER

IDステップの出力で操作する実行ステップのID。グラフィック的には、これは、問合せ実行ツリー内の親ノードです。ルート・オペレーション・ノード(ID =1)では、PARENT_ID = 0です。

OPERATION

VARCHAR2(30)

実行する内部操作の名前。有効な値は、表A-2を参照してください。

OPTIONS

VARCHAR2(30)

OPERATION列で示した操作のバリエーションを表す文字。OPERATIONに対応付けられた複数のOPTIONSがある場合、OPTIONSの値は処理の順に連結されます。有効な値は、表A-3を参照してください。

OBJECT_NAME

VARCHAR2(80)

セクション名、ワイルド・カード語句、重み、しきい値、または索引で検索する語句。

POSITION

NUMBER

すべて同じPARENT_IDを持つノードの処理の順序。1から開始し、昇順に順序番号が付けられます。

CARDINALITY

NUMBER

予備。将来の互換性のためにこの列を作成してください。

A.1.1.2 EXPLAIN表のOPERATION列

表A-2は、EXPLAIN表のOPERATION列の有効な値を示しています。

表A-2 EXPLAIN表のOPERATION列

演算値

問合せ演算子

等価記号

ABOUT

ABOUT

該当なし

ACCUMULATE

ACCUM

,

AND

AND

&

COMPOSITE

(なし)

該当なし

EQUIVALENCE

EQUIV

=

MINUS

MINUS

-

NEAR

NEAR

;

NOT

NOT

~

NO_HITS

(この問合せからのヒットはありません)

該当なし

または

OR

|

PHRASE

(検索する句)

該当なし

SECTION

(セクション)

該当なし

THRESHOLD

>

>

WEIGHT

*

*

WITHIN

within

該当なし

WORD

(単一語)

該当なし

A.1.1.3 EXPLAIN表のOPTIONS列の値

表A-3は、EXPLAIN表のOPTIONS列の有効な値を示しています。

表A-3 EXPLAIN表のOPTIONS列

OPTIONSの値

説明

($)

STEM

(?)

FUZZY

(!)

SOUNDEX

(T)

順序付けされたNEARの順序

(F)

順序付けされていないNEARの順序

(n)

NEAR演算子のmax_spanパラメータに対応付けられた数値

[9]

index_stemsが設定され、問合せがtoken_type 9を使用していることを示す

A.1.2 HFEEDBACK表

この項では、HFEEDBACK表について説明します。

- HFEEDBACK表の構造

- HFEEDBACK表のOPERATION列の値

- HFEEDBACK表のOPTIONS列の値

- CTX_FEEDBACK_TYPE

A.1.2.1 HFEEDBACK表の構造

表A-4は、CTX_QUERY.HFEEDBACK によって結果が書き込まれる表の構造を示しています。

表A-4 HFEEDBACK結果表

列名

データ型

説明

FEEDBACK_ID

VARCHAR2(30)

HFEEDBACKコールで指定したfeedback_id引数の値。

ID

NUMBER

問合せ実行ツリーの各ノードに割り当てられた番号。ルート・オペレーション・ノードでは、ID =1です。ノードは、解析ツリーでの表示のとおり、上から下、左から右の順に順序番号が付けられます。

PARENT_ID

NUMBER

IDステップの出力で操作する実行ステップのID。グラフィック的には、これは、問合せ実行ツリー内の親ノードです。ルート・オペレーション・ノード(ID =1)では、PARENT_ID = 0です。

OPERATION

VARCHAR2(30)

実行する内部操作の名前。有効な値は、表A-5を参照してください。

OPTIONS

VARCHAR2(30)

OPERATION列で示した操作のバリエーションを表す文字。OPERATIONに対応付けられた複数のOPTIONSがある場合、OPTIONSの値は処理の順に連結されます。有効な値は、表A-6を参照してください。

OBJECT_NAME

VARCHAR2(80)

セクション名、ワイルド・カード語句、重み、しきい値、または索引で検索する語句。

POSITION

NUMBER

すべて同じPARENT_IDを持つノードの処理の順序。1から開始し、昇順に順序番号が付けられます。

BT_FEEDBACK

CTX_FEEDBACK_TYPE

上位フィードバック語を格納します。表A-7を参照してください。

PT_FEEDBACK

CTX_FEEDBACK_TYPE

関連フィードバック語を格納します。表A-7を参照してください。

NT_FEEDBACK

CTX_FEEDBACK_TYPE

下位フィードバック語を格納します。表A-7を参照してください。

A.1.2.2 HFEEDBACK表のOPERATION列の値

表A-5は、HFEEDBACK表のOPERATION列の有効な値を示しています。

表A-5 HFEEDBACK結果表のOPERATION列

演算値

問合せ演算子

等価記号

ABOUT

ABOUT

(なし)

ACCUMULATE

ACCUM

,

AND

AND

&

EQUIVALENCE

EQUIV

=

MINUS

MINUS

-

NEAR

NEAR

;

NOT

NOT

~

または

OR

|

SECTION

(セクション)

TEXT

テキスト問合せのワードまたは句

THEME

ABOUT問合せのワードまたは句

THRESHOLD

>

>

WEIGHT

*

*

WITHIN

within

(なし)

A.1.2.3 HFEEDBACK表のOPTIONS列の値

表A-6は、HFEEDBACK表のOPTIONS列の有効な値を示しています。

表A-6 HFEEDBACK結果表のOPTIONS列

OPTIONSの値

説明

(T)

順序付けされたNEARの順序

(F)

順序付けされていないNEARの順序

(n)

NEAR演算子のmax_spanパラメータに対応付けられた数値

A.1.2.4 CTX_FEEDBACK_TYPE

CTX_FEEDBACK_TYPEはオブジェクトのNESTED TABLEです。このデータ型はCTXSYSスキーマで事前定義済です。この型を使用して、BT_FEEDBACK、RT_FEEDBACKおよびNT_FEEDBACK列を定義します。

このネストした表CTX_FEEDBACK_TYPEは、CTXSYSスキーマで事前定義済のCTX_FEEDBACK_ITEM_TYPE型のオブジェクトを格納します。このオブジェクトは次のように、3つのメンバーと1つのメソッドで定義されています。

表A-7 CTX_FEEDBACK_ITEM_TYPE

CTX_FEEDBACK_ITEM_TYPEメンバーおよびメソッド

データ型

説明

text

NUMBER

フィードバック語

cardinality

NUMBER

(将来の拡張用)

score

NUMBER

(将来の拡張用)

これらのオブジェクトを定義するSQLコードは、次のとおりです。

CREATE OR REPLACE TYPE ctx_feedback_type AS TABLE OF ctx_feedback_item_type;

CREATE OR REPLACE TYPE ctx_feedback_item_type AS OBJECT
(text        VARCHAR2(80),
cardinality NUMBER,
score       NUMBER,
MAP MEMBER FUNCTION rank RETURN REAL,
PRAGMA RESTRICT_REFERENCES (rank, RNDS, WNDS, RNPS, WNPS)
);

CREATE OR REPLACE TYPE BODY ctx_feedback_item_type AS
MAP MEMBER FUNCTION rank RETURN REAL IS
BEGIN
RETURN score;
END rank;
END;

関連項目:

HFEEDBACK表およびそのネストした表からの選択方法の例は、「CTX_QUERYパッケージ」の「CTX_QUERY.HFEEDBACK」を参照してください。

A.2 CTX_DOC結果表

CTX_DOCプロシージャは、表に格納された結果を戻します。プロシージャをコールする前に、表を作成しておく必要があります。表には自由に名前を付けることができますが、特定の名前およびデータ型を持つ列が組み込まれている必要があります。

この項では、次のタイプの結果表とその結果表に必要な列について説明します。

- フィルタ表

- 要点表

- ハイライト表

- マークアップ表

- テーマ表

A.2.1 フィルタ表

フィルタ表には、CTX_DOC.FILTER が戻したフィルタ処理されたドキュメントごとに1行が格納されます。フィルタ処理されたドキュメントは、プレーン・テキストまたはHTMLです。

ドキュメントにCTX_DOC.FILTERをコールした場合、そのドキュメントはテキスト列に対して定義されたフィルタで処理され、その結果が指定したフィルタ表に格納されます。

フィルタ表には自由に名前を付けることができますが、次の名前およびデータ型を持つ列が組み込まれている必要があります。

表A-8 FILTER結果表

列名

データ型

説明

QUERY_ID

NUMBER

CTX_DOC.FILTERへの特定のコールで生成された結果の識別子(複数のFILTERコールの結果を表に格納するときのみ移入されます)。

DOCUMENT

CLOB

プレーン・テキストまたはHTMLで格納された、ドキュメントのテキスト。

A.2.2 要点表

要点表には、CTX_DOC.GISTが生成する要点/テーマ・サマリーごとに1行が格納されます。

要点表には自由に名前を付けることができますが、次の名前およびデータ型を持つ列が組み込まれている必要があります。

表A-9 要点表

列名

データ型

説明

QUERY_ID

NUMBER

問合せID。

POV

VARCHAR2(80)

ドキュメント・テーマ。ドキュメントでのテーマの使用状況またはナレッジ・ベース内での表現方法によって異なります。

POVは、ドキュメントのGISTに対しては、GENERICの値を持ちます。

GIST

CLOB

プレーン・テキストとして格納された、要点またはテーマ・サマリーのテキスト。

A.2.3 ハイライト表

ハイライト表には、ドキュメント内のハイライト表示された語句のオフセットおよび長さの情報が格納されます。この情報は、CTX_DOC.HIGHLIGHT によって生成されます。ハイライト表示された語句は、ワード問合せまたはABOUT問合せを満たすワードまたは句です。

ドキュメントが形式設定されている場合、テキストはプレーン・テキストまたはHTMLのどちらかにフィルタ処理され、フィルタ処理されたテキストのオフセット情報が生成されます。オフセット情報を使用すると、CTX_DOC.FILTER でフィルタ処理された同じドキュメントの問合せ語句をハイライト表示できます。

ハイライト表には自由に名前を付けることができますが、次の名前およびデータ型を持つ列が組み込まれている必要があります。

表A-10 ハイライト表

列名

データ型

説明

QUERY_ID

NUMBER

CTX_DOC.HIGHLIGHT への特定のコールで生成された結果の識別子(複数のHIGHLIGHTコールの結果を表に格納するときのみ移入されます)。

OFFSET

NUMBER

ドキュメント内のハイライト表示の位置(ドキュメントの開始位置1との相対的な位置)。

LENGTH

NUMBER

ハイライト表示の長さ。

A.2.4 マークアップ表

マークアップ表には、ドキュメント内にマークアップ・タグによってハイライト表示された問合せ語句があるプレーン・テキストまたはHTML形式のドキュメントが格納されます。この情報は、ユーザーがCTX_DOC.MARKUP をコールしたときに生成されます。

マークアップ表には自由に名前を付けることができますが、次の名前およびデータ型を持つ列が組み込まれている必要があります。

表A-11 マークアップ表

列名

データ型

説明

QUERY_ID

NUMBER

CTX_DOC.MARKUPへの特定のコールで生成された結果の識別子(複数のMARKUPコールの結果を表に格納するときのみ移入されます)。

DOCUMENT

CLOB

プレーン・テキストまたはHTML形式で格納された、ドキュメントのマークアップされたテキスト。

A.2.5 テーマ表

テーマ表には、CTX_DOC.THEMESが生成したテーマごとに1行が格納されます。THEME列に格納される値は、単一のテーマ句か、コロンで区切られた親テーマの文字列のいずれかです。

テーマ表には自由に名前を付けることができますが、次の名前およびデータ型を持つ列が組み込まれている必要があります。

表A-12 テーマ表

列名

データ型

説明

QUERY_ID

NUMBER

問合せID。

THEME

VARCHAR2(2000)

テーマ句か、コロン(:)で区切られた親テーマの文字列。

WEIGHT

NUMBER

ドキュメントのその他のテーマ句と比較したテーマ句の重み。

A.2.6 トークン表

トークン表には、ドキュメントのテキスト・トークンが、CTX_DOC.TOKENSプロシージャの出力として格納されます。トークン表には自由に名前を付けることができますが、次の名前およびデータ型を持つ列が組み込まれている必要があります。

表A-13 トークン表

列名

データ型

説明

QUERY_ID

NUMBER

CTX_DOC.HIGHLIGHT への特定のコールで生成された結果の識別子(複数のHIGHLIGHTコールの結果を表に格納するときのみ移入されます)。

TOKEN

VARCHAR2(64)

テキスト内のトークン文字列。

OFFSET

NUMBER

ドキュメント内のトークンの位置(ドキュメントの開始位置1との相対的な位置)。

LENGTH

NUMBER

トークンの文字の長さ。

A.3 CTX_THES結果表およびデータ型

BT、NT、SYNなどのCTX_THES拡張ファンクションは、EXP_TAB型の表に拡張結果を戻すことができます。restab引数で表の名前を指定します。

- EXP_TAB表型

A.3.1 EXP_TAB表型

EXP_TAB表型は、EXP_REC型の行の表です。

EXP_RECおよびEXP_TAB型は、CTXSYSスキーマで次のように定義されます。

type exp_rec is record (
xrel varchar2(12),
xlevel number,
xphrase varchar2(256)
);

type exp_tab is table of exp_rec index by binary_integer;

シソーラス拡張ファンクションをコールしてrestabを指定する場合、システムは拡張結果をEXP_TAB表として戻します。この表の各行は、EXP_REC型で、拡張のワードまたは句を表します。表A-14は、EXP_RECのフィールドを示しています。

表A-14 EXP_TAB表型(EXP_REC)

EXP_RECフィールド

説明

xrel

xrelフィールドには、語句と入力語句のリレーションが含まれます('SYN'、'PT'、'RT'など)。入力語句が拡張に表示されている場合、xrel値はPHRASEです。翻訳に対しては、xrel値は言語です。

xlevel

xlevelフィールドは、リレーションのレベルです。これは、主にxrelが階層リレーション(BT*/NT*)の場合に使用されます。

xlevelフィールドは、xrelがPHRASEのときは0(ゼロ)です。

xlevelフィールドは、TRSYNでのシノニムの翻訳の場合は2です。

xlevelフィールドは、PTやRTなどの階層でない演算子の場合は1です。

xphrase

xphraseは関連語です。関連語に修飾子が存在する場合は、カッコ内で囲みます。コンパウンド語句は、非コンパウンド化されません。

B Oracle Textでサポートされているドキュメント形式

Oracle Textは、自動フィルタ処理にOracle Outside InのHTMLエクスポート・テクノロジを使用します。この付録では、このリリースのAUTO_FILTER自動フィルタ処理テクノロジでサポートされているドキュメント形式とグラフィック・ファイル形式を表で説明します。

この付録の内容は次のとおりです。

- ドキュメント・フィルタ処理テクノロジ

- サポートされているドキュメント形式

関連項目:

AUTO_FILTERの使用方法の詳細は、「AUTO_FILTER」を参照してください。

B.1 ドキュメント・フィルタ処理テクノロジ

Oracle Textの自動フィルタ処理テクノロジを使用するとドキュメントを表示するために、CTX_DOCパッケージを使用してドキュメントをHTMLに変換できます。

索引付けおよびDML処理に自動フィルタ処理を使用するには、フィルタ・プリファレンスにAUTO_FILTERオブジェクトを指定する必要があります。

ドキュメントのHTMLへの変換(CTX_DOCパッケージを使用)に自動フィルタ処理テクノロジを使用するには、AUTO_FILTER索引付けプリファレンスを使用する必要はありません。

この項の内容は次のとおりです。

- パッチ・リリースの最新の更新

- 形式のサポートに関する制限事項

- AUTO_FILTERドキュメント・フィルタ処理テクノロジでサポートされているプラットフォーム

- PDFドキュメントおよびセキュリティ設定でのフィルタ処理

- PDFフィルタ処理の制限事項

- 環境変数

- 一般的な制限

B.1.1 パッチ・リリースの最新の更新

この付録で示す、サポートされているプラットフォームと形式は、このリリースに適用されるものです。これらのサポートされている形式は、パッチ・リリースで更新されます。

B.1.2 形式のサポートに関する制限事項

この付録で示す形式は、AUTO_FILTERで認識される形式です。形式の認識は、テキストを抽出できることを必ずしも意味しません。たとえば、スキャンされたドキュメントは通常イメージであり、AUTO_FILTERは光学式文字認識を実行しません。同様に、マルチメディア・ファイル・タイプから索引付けするためにテキストを抽出できません。

パスワードで保護されているドキュメントおよびパスワードで保護されている内容を含むドキュメントは、AUTO_FILTERフィルタではサポートされていません。

その他の制限事項については、個別のドキュメント形式に関する「サポートされているドキュメント形式」を参照してください。

B.1.3 AUTO_FILTERドキュメント・フィルタ処理テクノロジでサポートされているプラットフォーム

いくつかのプラットフォームでAUTO_FILTERフィルタ・テクノロジを利用できます。AUTO_FILTERフィルタ・テクノロジは、Oracleでは次のプラットフォームをサポートしています。

- Windows (x86 32ビット) Windows 2000、Windows Server 2003、Windows Server 2008、Windows XP、Windows Vista Enterprise

- Windows (x86 64ビット) Windows Server 2003およびWindows Server 2008 x64 Standard、Enterprise、およびDatacenter Editions (64ビットExtended)

- HP-UX(PA-RISC 64ビット)11.i

- HP/UX(Itanium 64)11i

- IBM AIX(32ビットpSeries)5.1から5.3

- iSeries(PASEを使用するOS/400)V5R2

- Red Hat Linux(x86)Advanced Server 3、4および5

- Red Hat Linux(x86)Red Hat Enterprise Linux(RHEL)4

- Red Hat Linux(Itanium 64)Advanced Server 3、4および5

- Red Hat Linux(zSeries、31ビット)Advanced Server 3および4

- Red Hat Enterprise Linux AS/ES 3.0、4.0および5.0、x86-64(AMD64/EM64T)Oracle Linux 4.0および5.0、x86-64(AMD64/EM64T)

- SuSE Linux(x86)9、10およびEnterprise Server 9.0

- SuSE Linux(x86 64ビット)SUSE Enterprise Server(SLES)9、10

- SuSE Linux(Itanium 64)Enterprise Server 8

- SuSE Linux(zSeries、31ビット)9

- Sun Solaris(SPARC 64ビット)9.xから10.x

- Sun Solaris(x86-64ビット)10x

Oracle Databaseでサポートされていないプラットフォームが存在する可能性があります。

B.1.4 PDFドキュメントおよびセキュリティ設定でのフィルタ処理

PDFドキュメントには、次のように異なるレベルのセキュリティ設定を適用できます。

表B-1 PDFセキュリティ設定に対するAUTO_FILTERの動作

セキュリティ・レベル

説明

PDFバージョン

暗号化

AUTO_FILTERサポート・レベル

レベル1

ドキュメントを開くには、パスワードが必要です。

1.2+

40ビットRC4

サポートされていません。

レベル1

ドキュメントを開くには、パスワードが必要です。

1.4+

128ビットRC4

サポートされていません。

レベル1

ドキュメントを開くには、パスワードが必要です。

1.5+

128ビットRC4

サポートされていません。

レベル1

ドキュメントを開くには、パスワードが必要です。

1.6+

128ビットAES

サポートされていません。

レベル1

ドキュメントを開くには、パスワードが必要です。

1.7+

256ビットAES

サポートされていません。

レベル2

ユーザーはドキュメントを印刷できません。

1.2+

40ビットRC4

サポートされています。

レベル2

ユーザーはドキュメントを印刷できません。

1.4+

128ビットRC4

サポートされています。

レベル2

ユーザーはドキュメントを印刷できません。

1.5+

128ビットRC4

サポートされています。

レベル2

ユーザーはドキュメントを印刷できません。

1.6+

128ビットAES

サポートされていません。

レベル2

ユーザーはドキュメントを印刷できません。

1.7+

256ビットAES

サポートされていません。

レベル3

ユーザーはドキュメントを変更できません。

1.2+

40ビットRC4

サポートされています。

レベル3

ユーザーはドキュメントを変更できません。

1.4+

128ビットRC4

サポートされています。

レベル3

ユーザーはドキュメントを変更できません。

1.5+

128ビットRC4

サポートされています。

レベル3

ユーザーはドキュメントを変更できません。

1.6+

128ビットRC4

サポートされていません。

レベル3

ユーザーはドキュメントを変更できません。

1.7+

256ビットAES

サポートされていません。

レベル4

ユーザーはドキュメントの内容をコピーまたは抽出できません。

1.2+

40ビットRC4

サポートされています。

レベル4

ユーザーはドキュメントの内容をコピーまたは抽出できません。

1.4+

128ビットRC4

サポートされています。

レベル4

ユーザーはドキュメントの内容をコピーまたは抽出できません。

1.5+

128ビットRC4

サポートされています。

レベル4

ユーザーはドキュメントの内容をコピーまたは抽出できません。

1.6+

128ビットAES

サポートされていません。

レベル4

ユーザーはドキュメントの内容をコピーまたは抽出できません。

1.7+

256ビットAES

サポートされていません。

B.1.5 PDFフィルタ処理の制限事項

PDFファイルをフィルタ処理する場合、次の制限事項が適用されます。

- CID(Character ID-keyed)フォント、事前定義済のCJK CMapファイル、またはToUnicodeフォント・エンコーディングを使用してPDFドキュメントを作成し、ドキュメントに埋込みフォントが含まれない場合、マルチバイトのPDFがサポートされます。

- PDFドキュメントの埋込みフォントは、正しくフィルタ処理されません。通常、疑問符(?)の置換文字で表示されます。

- ブラウザまたは表示ウィンドウに表示される場合、PDFのハイパーリンクはアクティブではありません。

- ノート、音声、動画などの注釈はサポートされていません。

B.1.6 環境変数

ユーザーが設定する必要のある環境変数はありません。

B.1.7 一般的な制限事項

AUTO_FILTERフィルタ・テクノロジには、次の制限事項があります。

- 0x20(decimal 32)未満のASCII文字は、16進数に変換されます。

- ファイルの長さが2GBを超える場合は処理されません。

B.2 サポートされているドキュメント形式

ドキュメント・フィルタ処理は、索引付け、DMLおよびドキュメントのHTMLへの変換(CTX_DOCパッケージを使用)に使用されます。この項の表は、フィルタ処理に対してOracle Textがサポートするドキュメント形式を示しています。

この項の内容は次のとおりです。

- アーカイブ・ファイル形式

- データベース形式

- 電子メール形式

- グラフィック形式(ラスターおよびベクター・イメージ)

- マルチメディア形式

- その他の形式

- プレゼンテーション形式

- スプレッドシート形式

- テキストおよびマークアップ形式

- ワード処理形式およびデスクトップ・パブリッシング形式

注意:

これらのリストには、Oracle Textが処理できるすべての形式が記載されているわけではありません。プレーン・テキスト、HTML、XMLなどのテキスト形式をフィルタ処理できる外部フィルタが存在する場合は、USER_FILTERおよびPROCEDURE_FILTERにより、Oracle Textがすべてのドキュメント形式を処理できるようになります。

B.2.1 アーカイブ・ファイル形式

アーカイブ・ファイルをフィルタ処理すると、アーカイブ内のファイルの内容はすべて、1つの出力ファイルにエクスポートされます。この場合、アーカイブ・ファイル内のすべてのサブフォルダとファイルの内容も含まれます。

表B-2に、Oracle Textでサポートされているアーカイブ形式を示します。

表B-2 サポートされているアーカイブ・ファイル形式

アーカイブ形式

バージョン

7z (BZIP2と分割アーカイブはサポート対象外)

7zの自己解凍.exe (BZIP2と分割アーカイブはサポート対象外)

LZA自己解凍圧縮

LZH Compress

Microsoft Office Binder

95 – 97

Microsoft Cabinet (CAB)

RAR

1.5, 2.0, 2.9

自己解凍.exe

UNIX Compress

UNIX GZip

UNIX Tar

Uuencode

Zip

PKZip

Zip

WinZip

B.2.2 データベース形式

形式

バージョン

DataEase

4.x

dBASE

III、IV、V

First Choice DB

3.0まで

Framework DB

3.0

Microsoft Access

1.0, 2.0

Microsoft Accessレポート・スナップショット(ファイルIDのみ)

2000 – 3000

Microsoft Works DB (DOS版)

1.0, 2.0

Microsoft Works DB (Macintosh版)

2.0

Microsoft Works DB (Windows版)

3.0, 4.0

Paradox for DOS

2.0 – 4.0

Paradox for Windows

1.0

Q&A Database

2.0まで

R:BASE 5000

3.1まで

R:BASE System V

1.0

Reflex

2.0

SmartWare II

1.02

B.2.3 電子メール形式

注意:

Oracle Textは、次のファイル形式の場合、テキストを抽出しません。

- IBM Lotus Notes NSF (ファイルID) 7.x、8.x

- IBM Lotus Notes NSF (Notes ClientまたはDomino Serverを使用するWindows、Linux x86-32およびOracle Solaris 32ビット版のみ)8.x

形式

バージョン

Apple Mail Message (EMLX)

2.0

Encoded mail messages

MHT

Encoded mail messages

Multi Part Alternative

Encoded mail messages

Multi Part Digest

Encoded mail messages

Multi Part Mixed

Encoded mail messages

Multi Part News Group

Encoded mail messages

Multi Part Signed

Encoded mail messages

TNEF

IBM Lotus Notes Domino XML Language (DXL)

8.5

MBOX Mailbox

RFC 822

Microsoft Outlook Message(MSG)

97 – 2007

Microsoft Outlook Express (EML)

MIMEエンコード・メール・メッセージ

Microsoft Outlook Forms Template (OFT)

97 – 2007

Microsoft Outlook OST

97 – 2007

Microsoft Outlook PST

97 – 2007

Microsoft Outlook PST (Mac)

2001

MIMEサポートの注意事項

次の形式をサポートしています。

- MIME形式

- EML

- MHT(Webアーカイブ)

- NWS(ニュースグループのシングルパートおよびマルチパート)

- Simple Text Mail(RFC 2822で定義)

- TNEF形式

- MIMEエンコード(次のものを含む)

- base64(RFC 1521で定義)

- binary(RFC 1521で定義)

- binhex(RFC 1741で定義)

- btoa

- quoted-printable(RFC 1521で定義)

- utf-7(RFC 2152で定義)

- uue

- xxe

- yenc

また、メッセージの本文は複数の方法でエンコードできます。次のエンコードがサポートされています。

- HTML

- RTF

- TNEF

- Text/enriched(RFC 1523で定義)

- Text/richtext(RFC1341で定義)

- 埋込みメール・メッセージ(RFC 822で定義): 新しいメッセージへのリンクとして扱われます。

MIMEメッセージの添付ファイルは複数の形式で格納できます。Oracleのテクノロジでサポートされるすべての添付ファイル・タイプが処理されます。

B.2.4 グラフィック形式(ラスターおよびベクター・イメージ)

AUTO_FILTERフィルタで認識されるグラフィック形式を使用すると、その形式を含むテキスト列の索引付けでエラーが生成されません。形式は、埋込みグラフィックまたはスタンドアロン・グラフィックのいずれかに分類されます。埋込みグラフィックは、ドキュメント内で挿入または参照されます。

この項には、サポートされるグラフィック形式をまとめた次の表があります。

- 表B-3

- 表B-4

注意:

AUTO_FILTERフィルタはグラフィックからテキスト情報を抽出できません。

表B-3 AUTO_FILTERフィルタでサポートされているラスター・イメージ形式

形式

バージョン

CALS Raster(GP4)

Type I

CALS Raster(GP4)

Type II

Computer Graphics Metafile

ANSI

Computer Graphics Metafile

CALS

Computer Graphics Metafile

NIST

Encapsulated PostScript(EPS)

TIFFヘッダーのみ

GEM Image (Bitmap)

Graphics Interchange Format(GIF)

IBM Graphics Data Format(GDF)

1.0

IBM Picture Interchange Format

1.0

JBIG2

PDFへのグラフィック埋込み

JFIF(TIFF形式でないJPEG)

JPEG

JPEG 2000

JP2

Kodak Flash Pix

Kodak Photo CD

1.0

Lotus PIC

Lotus Snapshot

Macintosh PICT

BMPのみ

Macintosh PICT2

BMPのみ

MacPaint

Microsoft Windows Bitmap

Microsoft Windowsカーソル

Microsoft Windowsアイコン

OS/2 Bitmap

OS/2 Warp Bitmap

Paint Shop Pro (Win32のみ)

5.0, 6.0

PC Paintbrush (PCX)

PC Paintbrush DCX(複数ページのPCX)

Portable Bitmap(PBM)

Portable Graymap PGM

Portable Network Graphics(PNG)

Portable Pixmap(PPM)

Progressive JPEG

StarOffice Draw

6.x – 9.0

Sunラスター

TIFF

Group 5 & 6

TIFF CCITT

Group 3 & 4

TruVision TGA (Targa)

2.0

Word Perfect Graphics

1.0

WBMPワイヤレス・グラフィック・フォーマット

X-Windows Bitmap

x10互換

X-Windows Dump

x10互換

X-Windows Pixmap

x10互換

WordPerfect Graphi

2.0 – 10.0

表B-4 AUTO_FILTERフィルタでサポートされているベクター・イメージ形式

グラフィック形式

バージョン

Adobe Illustrator

4.0 – 7.0, 9.0

Adobe Illustrator (XMPのみ)

11 – 13 (CS 1 – 3)

Adobe InDesign (XMPのみ)

3.0 – 5.0 (CS 1 - 3)

Adobe InDesign Interchange (XMPのみ)

Adobe Photoshop (XMPのみ)

8.0 – 10.0 (CS 1 – 3)

Adobe PDF

1.0 – 1.7 (Acrobat 1 - 9)

Adobe PDFパッケージ

1.7 (Acrobat 8 – 9)

Adobe PDFポートフォリオ

1.7 (Acrobat 8 – 9)

Adobe Photoshop

4.0

Ami Draw

SDW

AutoCAD Drawing

2.5, 2.6

AutoCAD Drawing

9.0 – 14.0

AutoCAD Drawing

2000i – 2010

AutoShade Rendering

2

Corel Draw

2.0 – 9.0

Corel Draw Clipart

5.0, 7.0

Enhanced Metafile (EMF)

Escherグラフィック

FrameMakerグラフィック(FMV)

3.0 – 5.0

Gem File (ベクター)

Harvard Graphics Chart DOS

2.0 – 3.0

Harvard Graphics for Windows

Hewlett Packard Graphics Language(HPGL)

2.0

IGES Drawing

5.1 – 5.3

Micrografx Designer(DRW)

3.1まで

Micrografx Designer(DFS)

6.0

Micrografx Draw(DRW)

4.0まで

Microsoft XPS(テキストのみ)

Novell PerfectWorks Draw

2

OpenOffice Draw

1.1 – 3.0

Oracle Open Office Draw

3.x

Visio(ページ・プレビュー・モードWMF/EMF)

4.0

Visio

5.0 - 2007

Visio XML VSX(ファイルIDのみ)

2007

Windows Metafile(WMF)

B.2.5 マルチメディア形式

次に示すマルチメディア形式は、AUTO_FILTERで認識される形式です。形式の認識は、テキストを抽出できることを必ずしも意味しません。また、ファイル名およびファイル・ヘッダー情報は索引付けされません。スキャンされたドキュメントは通常イメージであり、AUTO_FILTERは光学式文字認識を実行しません。同様に、マルチメディア・ファイル・タイプから索引付けするためにテキストを抽出できません。

形式

バージョン

AVI (メタデータ抽出のみ)

Flash (テキスト抽出のみ)

6.x、7.x、Lite

Flash (ファイルIDのみ)

9, 10

RealMedia (ファイルIDのみ)

MP3 (ID3メタデータのみ)

MPEG-1 Audio layer 3 V ID3 v1 (ファイルIDのみ)

MPEG-1 Audio layer 3 V ID3 v2 (ファイルIDのみ)

MPEG-1 Video V 2 (ファイルIDのみ)

MPEG-1 Video V 3 (ファイルIDのみ)

MPEG-2 Audio (ファイルIDのみ)

MPEG-4 (メタデータ抽出のみ)

MPEG-7 (メタデータ抽出のみ)

QuickTime (メタデータ抽出のみ)

Windows Media ASF (メタデータ抽出のみ)

Windows Media DVR-MS (メタデータ抽出のみ)

Windows Media Audio WMA (メタデータ抽出のみ)

Windows Media Playlist (ファイルIDのみ)

Windows Media Video WMV (メタデータ抽出のみ)

WAV (メタデータ抽出のみ)

B.2.6 その他の形式

形式

バージョン

AOL Messenger (ファイルIDのみ)

7.3

Microsoft InfoPath (ファイルIDのみ)

2007

Microsoft Live Messenger (XMLフィルタ経由)

10.0

Microsoft OneNote (ファイルIDのみ)

2007

Microsoft Project (表ビューのみ)

98 – 2003

Microsoft Project (表ビューのみ)

2007, 2010

Microsoft Windows Compiled Help (ファイルIDのみ)

.chm

Microsoft Windows DLL

-

Microsoft Windows実行可能ファイル

-

Microsoft Windows Explorer Command (ファイルIDのみ)

.scf

Microsoft Windows Help (ファイルIDのみ)

.hlp

Microsoft Windowsショートカット (ファイルIDのみ)

.lnk

Trillianテキスト・ログ・ファイル (テキスト・フィルタ経由)

4.2

Trillian XMLログ・ファイル (ファイルIDのみ)

4.2

TrueType Font (ファイルIDのみ)

ttf、ttc

vCalendar

2.1

vCard

2.1

Yahoo Messenger

6.x – 8

B.2.7 プレゼンテーション形式

形式

バージョン

Harvard Graphics Presentation DOS

3.0

IBM Lotus Symphony Presentation

1.x

Kingsoft WPS Presentation

2010

Lotus Freelance

1.0 – Millennium 9.6

Lotus Freelance for OS/3

2

Lotus Freelance for Windows

95, 97

Microsoft PowerPoint for Macintosh

4.0 – 2008

Microsoft PowerPoint for Windows

3.0 – 2010

Microsoft PowerPoint for Windowsスライドショー

2007 – 2010

Microsoft PowerPoint for Windowsテンプレート

2007 – 2010

Novell Presentation

3.0, 7.0

OpenOffice Impress

1.1, 3.0

Oracle Open Office Impress

3.x

StarOffice Impress

5.2 – 9.0

WordPerfect Presentation

5.1 – X4

B.2.8 スプレッドシート形式

形式

バージョン

Enable Spreadsheet

3.0 – 4.5

First Choice SS

3.0まで

Framework SS

3.0

IBM Lotus Symphony Spreadsheet

1.x

Kingsoft WPS Spreadsheet

2010

Lotus 1-2-3

Millennium 9.6まで

Lotus 1-2-3 Charts (DOS版およびWindows版)

5.0まで

Lotus 1-2-3 for OS/2

2.0まで

Microsoft Excel Charts

2.x – 2007

Microsoft Excel for Macintosh

98 – 2008

Microsoft Excel for Windows

3.0 – 2010

Microsoft Excel for Windows (XMLフィルタを介したテキストのみ)

2003 XML

Microsoft Excel for Windows (.xlsb)

2007 - 2010 (バイナリ)

Microsoft Works SS for DOS

2.0

Microsoft Works SS (Macintosh版)

2.0

Microsoft Works SS (Windows版)

3.0, 4.0

Multiplan

4.0

Novell PerfectWorks Spreadsheet

2.0

OpenOffice Calc

1.1 – 3.0

Oracle Open Office Calc

3.x

PFS: Plan

1.0

Quattro Pro for DOS

5.0まで

Quattro Pro for Windows

X4まで

SmartWare Spreadsheet

SmartWare II SS

1.02

StarOffice Calc

5.2 – 9.0

SuperCalc

5.0

VP-Planner

1.0

B.2.9 テキストおよびマークアップ形式

形式

バージョン

ANSIテキスト

7および8ビット

ASCIIテキスト

7および8ビット

DOSキャラクタ・セット

EBCDIC

HTML (CSSレンダリングはサポート対象外)

1.0 – 4.0

IBM DCA/RFT

Macintoshキャラクタ・セット

リッチ・テキスト・フォーマット(RTF)

Unicodeテキスト

UTF-8

Wireless Markup Language

XML (テキストのみ)

XHTML (ファイルIDのみ)

1.0

B.2.10 ワード処理形式およびデスクトップ・パブリッシング形式

形式

バージョン

Adobe FrameMaker (MIFのみ)

3.0 – 6.0

Adobe Illustrator Postscript

レベル2

Ami

Ami Pro for OS/2

Ami Pro for Windows

2.0, 3.0

DEC DX

4.0まで

DEC DX Plus

4.0, 4.1

Enable Word Processor

3.0 – 4.5

First Choice WP

1.0, 3.0

Framework WP

3.0

Hangul

97 – 2007

IBM DCA/FFT

IBM DisplayWrite

2.0 – 5.0

IBM Writing Assistant

1.01

Ichitaro

5.0, 6.0, 8.0 – 13.0, 2004, 2010

JustWrite

3.0まで

Kingsoft WPS Writer

2010

Legacy

1.1

Lotus Manuscript

2.0まで

Lotus WordPro

9.7、96 - Millennium 9.6

Lotus Word Pro (非Win32)

97 – Millennium 9.6

MacWrite II

1.1

Mass 11

8.0まで

Microsoft Publisher (ファイルIDのみ)

2003 – 2007

Microsoft Word for DOS

4.0 – 6.0

Microsoft Word for Macintosh

4.0 – 6.0, 98 – 2008

Microsoft Word for Windows

1.0 – 2010

Microsoft Word for Windows (XMLフィルタを介したテキストのみ)

2003 XML

Microsoft Word for Windows

98-J

Microsoft WordPad

Microsoft Works WP for DOS

2.0

Microsoft Works WP (Macintosh版)

2.0

Microsoft Works WP (Windows版)

3.0, 4.0

Microsoft Write (Windows版)

1.0 – 3.0

MultiMate

4.0まで

MultiMate Advantage

2.0

Navy DIF

Nota Bene

3.0

Novell PerfectWorks Word Processor

2.0

OfficeWriter

4.0 – 6.0

OpenOffice Writer

1.1 – 3.0

Oracle Open Office Writer

3.x

PC File Doc

5.0

PFS: Write

A、B

Professional Write for DOS

1.0, 2.0

Professional Write Plus for Windows

1.0

Q&A Write

2.0, 3.0

Samna Word IV

1.0 – 3.0

Samna Word IV+

Samsung JungUm Global (ファイルIDのみ)

Signature

1.0

SmartWare II WP

1.02

Sprint

1.0

StarOffice Writer

5.2 – 9.0

Total Word

1.2

Wang IWP

2.6まで

WordMarc Composer

WordMarc Composer+

WordMarc Word Processor

WordPerfect for DOS

4.2

WordPerfect for Macintosh

1.02 – 3.1

WordPerfect for Windows

5.1 – X4

WordStar 2000 for DOS

1.0 – 3.0

Wordstar for DOS

3.0 – 7.0

Wordstar for Windows

1.0

XyWrite

Through III+

C Oracle Textのテキストのロード例

この付録では、テキスト列にテキストをロードする方法の例を示し、ctxloadインポート・ファイルの構造についても説明します。この付録の内容は次のとおりです。

- SQLのINSERT例

- SQL*Loaderの例

- ctxloadシソーラス・インポート・ファイルの構造

C.1 SQL INSERTの例

テキスト表に移入する単純な方法としては、CREATE TABLEを使用してidとtextという2つの列を含む表を作成し、INSERT文を使用してデータをロードします。この例では、id列を主キーとしています(これはオプションです)。text列は、VARCHAR2です。

create table docs (id number primary key, text varchar2(80));

テキスト列を移入するには、次のようにINSERT文を使用します。

insert into docs values(1, 'this is the text of the first document');
insert into docs values(12, 'this is the text of the second document');

C.2 SQL*Loaderの例

次の例では、SQL*Loaderを使用してオペレーティング・システムからBLOB列に複合フォーマットのドキュメントをロードする方法を説明します。例には、次の2つのステップがあります。

- 表の作成

- SQL*Loaderコマンドの発行
SQL*Loaderコマンドは制御ファイルを読み込み、データを表にロードします

関連項目:

SQL*Loaderの使用方法の詳細は、『Oracle Databaseユーティリティ』を参照してください。

C.2.1 表の作成

この例では、articles_formatted表を次のように作成します。

CREATE TABLE articles_formatted (
ARTICLE_ID   NUMBER PRIMARY KEY ,
AUTHOR       VARCHAR2(30),
FORMAT       VARCHAR2(30),
PUB_DATE     DATE,
TITLE        VARCHAR2(256),
TEXT         BLOB
);

article_id列は、主キーです。ドキュメントは、BLOB型であるテキスト列にロードされます。

C.2.2 SQL*Loaderコマンドの発行

次のコマンドによって、制御ファイルLOADER1.DATを読み込むローダーを起動します。

sqlldr userid=demo/password control=loader1.dat log=loader.log

- 制御ファイル例: loader1.dat

- データ・ファイル例: loader2.dat

C.2.2.1 制御ファイル例: loader1.dat

このSQL*Loader制御ファイルは、ロードされる列を定義し、loader2.datからarticles_formatted表にデータを1行ずつロードするようにローダーに指示します。loader2.datの各行は、ロードするフィールドのカンマで区切られたリストを格納します。

-- load file example
load data
INFILE 'loader2.dat'
INTO TABLE articles_formatted
APPEND
FIELDS TERMINATED BY ','
(article_id SEQUENCE (MAX,1),
author CHAR(30),
format,
pub_date SYSDATE,
title,
ext_fname FILLER CHAR(80),
text LOBFILE(ext_fname) TERMINATED BY EOF)

この制御ファイルは、次の方法で、loader2.datからarticles_formatted表にデータをロードするようにローダーに指示します。

1. loader2.datのドキュメント・フィールドを示す行の順番を、article_id列に書き込みます。

2. 行の1番目のフィールドをauthor列に書き込みます。

3. 行の2番目のフィールドをformat列に書き込みます。

4. SYSDATEによって指定された現在の日付をpub_date列に書き込みます。

5. 行の3番目のフィールドであるドキュメントのタイトルを、title列に書き込みます。

6. ロードするドキュメントのすべての名前をext_fname一時変数にロードし、実際のドキュメントをBLOB型のtext列にロードします。

C.2.2.2 データ・ファイル例: loader2.dat

このファイルには、表articles_formattedの各行にロードされるデータが含まれます。

各行には、articles_formattedにロードされるフィールドの、カンマで区切られたリストがあります。各行の最後のフィールドは、テキスト列にロードされるファイルの名前を示します。

Ben Kanobi, plaintext,Kawasaki news article,../sample_docs/kawasaki.txt,
Joe Bloggs, plaintext,Java plug-in,../sample_docs/javaplugin.txt,
John Hancock, plaintext,Declaration of Independence,../sample_docs/indep.txt,
M. S. Developer, Word7,Newsletter example,../sample_docs/newsletter.doc,
M. S. Developer, Word7,Resume example,../sample_docs/resume.doc,
X. L. Developer, Excel7,Common example,../sample_docs/common.xls,
X. L. Developer, Excel7,Complex example,../sample_docs/solvsamp.xls,
Pow R. Point, Powerpoint7,Generic presentation,../sample_docs/generic.ppt,
Pow R. Point, Powerpoint7,Meeting presentation,../sample_docs/meeting.ppt,
Java Man, PDF,Java Beans paper,../sample_docs/j_bean.pdf,
Java Man, PDF,Java on the server paper,../sample_docs/j_svr.pdf,
Ora Webmaster, HTML,Oracle home page,../sample_docs/oramnu97.html,
Ora Webmaster, HTML,Oracle Company Overview,../sample_docs/oraoverview.html,
John Constable, GIF,Laurence J. Ellison : portrait,../sample_docs/larry.gif,
Alan Greenspan, GIF,Oracle revenues : Graph,../sample_docs/oragraph97.gif,
Giorgio Armani, GIF,Oracle Revenues : Trend,../sample_docs/oratrend.gif,

C.3 ctxloadシソーラス・インポート・ファイルの構造

この項では、ctxloadシソーラス・インポート・ファイルの構造について、次のトピックに分けて説明します。

- インポート・ファイルの形式

- 代替階層構造

- インポート・ファイル内の語句の使用上の注意

- インポート・ファイル内の関連語句の使用上の注意

- インポート・ファイル例

C.3.1 インポート・ファイルの形式

シソーラスのインポート・ファイルのエントリには、次の形式を使用する必要があります。

phrase
BT broader_term
NT narrower_term1
NT narrower_term2
. . .
NT narrower_termN

BTG broader_term
NTG narrower_term1
NTG narrower_term2
. . .
NTG narrower_termN

BTP broader_term
NTP narrower_term1
NTP narrower_term2
. . .
NTP narrower_termN

BTI broader_term
NTI narrower_term1
NTI narrower_term2
. . .
NTI narrower_termN

SYN synonym1
SYN synonym2
. . .
SYN synonymN

USE synonym1  or  SEE synonym1 or  PT  synonym1

RT related_term1
RT related_term2
. . .
RT related_termN

SN text

language_key: term

phrase

シノニム、上位語、下位語または関連語を持つワードまたは句です。

ISO-2788標準に従って、TTマーカーを句の前に置くことで、句が階層の最上位語であることを明示できますが、TTマーカーが必ず必要であるということはありません。実際、ctxloadはインポート時にTTマーカーを無視します。

最上位語は上位語(BT、BTG、BTPまたはBTI)を持たない句として識別されます。

注意:

シソーラス問合せ演算子(SYN、PT、BT、BTG、BTP、BTI、NT、NTG、NTP、NTIおよびRT)は予約語であるため、シソーラスのエントリで句として使用できません。

BT、BTG、BTP、BTI broader_termN

broader_termNがphraseの上位(汎用|部分|インスタンス)語であることを示すマーカーです。

broader_termNは、phraseの一般的な説明またはカテゴリを概念的に提供するワードまたは句です。たとえば、elephantというワードには、land mammalという上位語があります。

NT、NTG、NTP、NTI narrower_termN

narrower_termNがphraseの下位(汎用|部分|インスタンス)語であることを示すマーカーです。

phraseに上位(汎用|部分|インスタンス)語がなく、1つ以上の下位(汎用|部分|インスタンス)語がある場合、phraseは各階層内で最上位語として作成されます(Oracle Textのシソーラスでは、BT/NT、BTG/NTG、BTP/NTPおよびBTI/NTI階層は個別の構造体です)。

narrower_termNは、phraseの特定の説明(下位語)を概念的に提供するワードまたは句です。たとえば、elephantというワードには、indian elephantおよびafrican elephantという下位語があります。

SYN synonymN

phraseおよびsynonymNがシノニム・リング内でシノニムであることを示すマーカーです。

synonymNは、phraseと同じ意味を持つワードまたは句です。たとえば、dogというワードには、canineというシノニムがあります。

注意:

シノニム・リングは、Oracle Textのシソーラスでは明示的に定義されていません。これらは、シノニムの推移的な性質によって作成されます。

USE SEE PT synonym1

phraseおよびsynonym1がシノニム・リング内でシノニムであることを示すマーカーです(SYNに似ています)。

また、USEマーカー、SEEマーカーまたはPTマーカーは、synonym1がシノニム・リングに対する優先語であることを示します。すべてのマーカーがシノニム・リングに対する優先語を定義するために使用できます。

注意:

ユーザー定義のシソーラスをナレッジ・ベースのコンパイルに使用する場合は、シノニム・リングを宣言するときに優先語を指定する必要があります。キーワードUSE、SEEまたはPTのいずれかを使用して、問合せの一致をレポートするときに使用するシノニムを指定します。優先語に指定できるのは1つの語句のみです。

前述のキーワードを使用しないと、ワードのシノニムで定義した結果が戻されなくなります。同一のシノニム・リングの要素を宣言した複数のシソーラスをコンパイルすると、両方のファイルで優先語が同一になり、これによって、シノニム・リングで1つのワードのみが優先語として定義されます。

RT related_termN

related_termNがphraseの関連語であることを示すマーカーです。

related_termNは、phraseに関連する意味を持つが、必ずしもシノニムではないワードまたは句です。たとえば、dogというワードには、wolfという関連語があります。

注意:

関連語には推移性はありません。句に2つ以上の関連語がある場合、その語はそれぞれ親句と関連しているだけであり、関連語同士が互いに関連しているわけではありません。

SN text

後続のtextが、前のエントリのスコープ・ノート(たとえば、コメント)であることを示すマーカーです。

language_key term

termは、language_keyで指定された言語に翻訳された句です。

C.3.2 代替階層構造

シソーラスの規格に従い、ロード・ファイルは、最上位語の下に語句をインデントし、語句のレベルを含むNT(またはNTG、NTP、NTI)マーカーを使用することによって、書式設定階層(BT/NT、BTG/NTG、BTP、NTP、BTI/NTI)をサポートします。

phrase
NT1 narrower_term1
NT2 narrower_term1.1
NT2 narrower_term1.2
NT3 narrower_term1.2.1
NT3 narrower_term1.2.2
NT1 narrower_term2
. . .
NT1 narrower_termN

この方法によって、最上位語のブランチ全体を、ロード・ファイル内で階層的に表示できます。

C.3.3 インポート・ファイル内の語句の使用上の注意

インポート・ファイルのエントリの構造には、次の条件が適用されます。

- 各エントリ(phrase、BT、NTまたはSYN)は、改行に続く1行以内でまとめる必要があります。

- エントリは、1つのワードまたは句で構成されます。

- エントリ(phrase、BT、NTまたはSYN)の最大長は、255バイトです。この中にはBT、NTおよびSYNのマーカーまたは改行は含まれません。

- エントリにカッコまたはプラス符号は指定できません。

- 関連語句(BT、NTなど)で始まるファイルのすべての行は、行頭に1つ以上の空白が必要です。

- ファイルには、同じphraseを2回以上使用できます。

- 各phraseには1つ以上の下位語エントリ(NT、NTG、NTP)、上位語エントリ(BT、BTG、BTP)、シノニム・エントリおよび関連語エントリを指定できます。

- 上位語、下位語、シノニムおよび優先語のエントリは、それぞれ適切なマーカーで始める必要があります。また、マーカーは大文字で指定します。

- phraseには、上位語、下位語およびシノニムをどのような順序でも指定できます。

- 同形異義語を使用する場合は、その後に意味を限定する語をカッコで囲んで指定する必要があります。
たとえば、cranes(birds)、cranes(lifting equipment)のように指定します。

- コンパウンド語句は、各要素の間にプラス記号を入れます(例: buildings + construction)。

- コンパウンド語句は、他の語句に対するシノニムまたは優先語としてのみ使用できます。コンパウンド語句自体は語句として使用できません。また、階層関係にも使用できません。

- 語句に続く行に、最大2000バイトまでのスコープ・ノート(SN)を指定できます。

- 複数行に渡るスコープ・ノートを作成できますが、ノートの各行にSNマーカーが必要です。

不適切なSNの使用例

VIEW CAMERAS
SN Cameras with through-the lens focusing and a
range of movements of the lens plane relative to
the film plane

適切なSNの使用例

VIEW CAMERAS
SN Cameras with through-the lens focusing and a
SN range of movements of the lens plane relative
SN to the film plane

- 複数ワードの語句を、予約語で始めることはできません(たとえば、useという語句は予約語であるため、use other doorは語句として使用できません。ただし、useという語句は使用可能です)。

C.3.4 インポート・ファイル内の関連語句の使用上の注意

インポート・ファイルのエントリに定義される関連語句には、次の条件が適用されます。

- 関連語エントリは、句または別の関連語エントリの後に続けて指定する必要があります。

- 関連語エントリは1つ以上の空白から始め、RTマーカーの後に空白を入れ、その同じ行に関連語を指定します。

- 複数の関連語には複数のRTマーカーが必要です。
不適切なRTの使用例

MOVING PICTURE CAMERAS
RT CINE CAMERAS
TELEVISION CAMERAS

適切なRTの使用例

MOVING PICTURE CAMERAS
RT CINE CAMERAS
RT TELEVISION CAMERAS

- 語句には、複数の上位語、下位語および関連語を指定できます。

C.3.5 インポート・ファイル例

この項では、正しく形式設定されたシソーラスのインポート・ファイルの例を3つ示します。

- 例1(フラット構造)

- 例2(階層構造)

- 例3

C.3.5.1 例1(フラット構造)

cat
SYN feline
NT domestic cat
NT wild cat
BT mammal
mammal
BT animal
domestic cat
NT Persian cat
NT Siamese cat
wild cat
NT tiger
tiger
NT Bengal tiger
dog
BT mammal
NT domestic dog
NT wild dog
SYN canine
domestic dog
NT German Shepard
wild dog
NT Dingo

C.3.5.2 例2(階層構造)

animal
NT1 mammal
NT2 cat
NT3 domestic cat
NT4 Persian cat
NT4 Siamese cat
NT3 wild cat
NT4 tiger
NT5 Bengal tiger
NT2 dog
NT3 domestic dog
NT4 German Shepard
NT3 wild dog
NT4 Dingo
cat
SYN feline
dog
SYN canine

C.3.5.3 例3

35MM CAMERAS
BT MINIATURE CAMERAS
CAMERAS
BT OPTICAL EQUIPMENT
NT MOVING PICTURE CAMERAS
NT STEREO CAMERAS
LAND CAMERAS
USE VIEW CAMERAS
VIEW CAMERAS
SN Cameras with through-the lens focusing and a range of
SN movements of the lens plane relative to the film plane
UF LAND CAMERAS
BT STILL CAMERAS

D Oracle Textの多言語機能

この付録では、Oracle Textの多言語機能について説明します。この章の内容は次のとおりです。

- 概要

- 索引付け

- 問合せ

- 提供されるストップリスト

- ナレッジ・ベース

- 多言語機能のマトリックス

D.1 概要

この付録では、Oracle Textの主要な多言語機能の概要を説明します。

Oracleのグローバリゼーション・サポート言語およびキャラクタ・セット・サポートの完全なリストは、『Oracle Databaseグローバリゼーション・サポート・ガイド』を参照してください。

D.2 索引付け

次の各項目で、多言語索引付け機能について説明します。

- Oracle Textの索引タイプの多言語機能

- レクサー型

- 基本レクサー機能

- マルチレクサー機能

- Worldレクサー機能

D.2.1 Oracle Textの索引タイプの多言語機能

次の各項目で、Oracle Textの索引タイプでサポートされている多言語機能について説明します。

- CONTEXT索引タイプ

- CTXCAT索引タイプ

- CTXRULE索引タイプ

関連項目:

"使用可能なレクサーについては、「レクサー型」を参照してください。

D.2.1.1 CONTEXT索引タイプ

CONTEXT索引タイプは、言語およびキャラクタ・セット列の使用を含めて、多言語機能を完全にサポートしています。

次のレクサーをサポートしています。

- AUTO_LEXER

- MULTI_LEXER

- USER_LEXER

- WORLD_LEXER

- CHINESE_LEXER

- CHINESE_VGRAM_LEXER

- JAPANESE_LEXER

- JAPANESE_VGRAM_LEXER

- KOREAN_MORPH_LEXER

D.2.1.2 CTXCAT索引タイプ

CTXCATは、テーマの索引付けを除いたBASIC_LEXERの多言語機能をサポートしており、次の追加レクサーをサポートしています。

- USER_LEXER

- WORLD_LEXER

また、CTXCATは次のレクサーもサポートしています。

- CHINESE_LEXER

- CHINESE_VGRAM_LEXER

- JAPANESE_LEXER

- JAPANESE_VGRAM_LEXER

- KOREAN_MORPH_LEXER

D.2.1.3 CTXRULE索引タイプ

CTXRULE索引タイプは、ABOUT演算子およびSTEM演算子を含むBASIC_LEXERの多言語機能をサポートします。また、日本語、中国語および韓国語もサポートします(SVM_CLASSIFIERで使用される場合)。

D.2.2 レクサー型

Oracle Textでは、索引付け処理時にレクサーを選択可能にすることにより、異なる言語の索引付けをサポートしています。採用したレクサーにより、索引付けできる言語が決定します。表D-1は、サポートされているレクサーを示しています。

表D-1 Oracle Textのレクサー型

レクサー

サポート対象言語

BASIC_LEXER

空白のデリミタ付きワードを使用する英語およびほとんどの西ヨーロッパ言語。

MULTI_LEXER

英語、ドイツ語および日本語など、異なる複数言語のドキュメントを含む表の索引付けに使用するレクサー。

CHINESE_VGRAM

中国語テキストからのトークンの抽出に使用するレクサー。

CHINESE_LEXER

中国語テキストからのトークンの抽出に使用するレクサー。このレクサーは、CHINESE_VGRAMと比較して次の利点があります。

- 小型の索引の生成

- 問合せ応答時間の短縮

- 実ワード・トークンの生成による問合せ精度の向上

- ストップワードのサポート

JAPANESE_VGRAM

日本語テキストからのトークンの抽出に使用するレクサー。

JAPANESE_LEXER

日本語テキストからのトークンの抽出に使用するレクサー。このレクサーは、JAPANESE_VGRAMレクサーと比較して次の利点があります。

- 小型の索引の生成

- 問合せ応答時間の短縮

- 実ワード・トークンの生成による精度の向上

KOREAN_MORPH_LEXER

韓国語テキストからのトークンの抽出に使用するレクサー。

USER_LEXER

特定言語を索引付けするために作成するレクサー。

WORLD_LEXER

異なる複数言語のドキュメントを含む表の索引付けに使用する、ドキュメントの言語を自動検出するレクサー。

D.2.3 基本レクサー機能

次の機能は、BASIC_LEXERのプリファレンスでサポートされています。これらの機能は、BASIC_LEXERの属性で有効にします。検索結果の精度を上げるために、代替スペル、コンポジットおよび基本文字などの機能を同時に有効にできます。

- テーマ索引

- 代替スペル

- 基本文字変換

- コンポジット

- 索引の語幹

D.2.3.1 テーマ索引

CONTEXT索引タイプを持つABOUT演算子が含まれるドキュメントの概念に索引付けを行い、その後の問合せを可能にします。これらの概念は、Oracle Textのナレッジ・ベースから導出されます。この機能は、英語とフランス語でサポートされています。

この機能は、CTXCAT索引タイプではサポートされていません。

D.2.3.2 代替スペル

この機能により、ワードを代替スペルで検索できます。たとえば、ドイツ語で代替スペルを有効にすると、gross を検索した場合、großおよびgrossが含まれているドキュメントが戻されます。

この機能は、ドイツ語、デンマーク語およびスウェーデン語でサポートされています。

さらに、ドイツ語は、従来のスペルと改良された(新規の)スペルの両方の規則に基づいて索引付けできます。

関連項目:

"「代替スペル」および「ドイツ語の新スペル」

D.2.3.3 基本文字変換

この機能により、ティルデ、アクセントおよびウムラウトなどの発音区別記号が含まれているワードおよび含まれていないワードの両方を問い合せることができます。たとえば、スペイン語の基本文字索引を使用すると、energiaを検索した場合、energíaおよびenergiaの両方が含まれているドキュメントが検索されます。

この機能は、英語およびサポートされているその他すべての空白のデリミタ付き言語でサポートされています。英語およびフランス語では、基本レクサーを使用してテーマの索引付けを使用可能にできます。

関連項目:

"基本文字変換"

D.2.3.4 コンポジット

この機能により、指定した語句が複合語の要素として含まれているワードを検索できます。STEM($)演算子を使用する必要があります。この機能は、ドイツ語とオランダ語でサポートされています。

たとえば、ドイツ語で$registerを検索した場合、BruttoregistertonneおよびRegistertonneが含まれているドキュメントが検索されます。

D.2.3.5 索引の語幹

この機能により、語幹索引付けのステマーを指定できます。索引付け時に、トークンが通常の形式に加えて、単一の基本形にステミングされます。語幹索引付けを指定することによって、ステミング問合せ(例: $computed)の問合せパフォーマンスが向上します。

この機能は、英語、オランダ語、フランス語、ドイツ語、イタリア語およびスペイン語でサポートされています。

D.2.4 マルチレクサー機能

MULTI_LEXERレクサーは、異なる複数の言語のドキュメントを含む列の索引付けを可能にします。索引付け時に、Oracle Textは言語列を調べ、言語固有のレクサーに切り替えた後、ドキュメントを処理します。索引付けを実行する前に、各言語のレクサー・プリファレンスを定義します。

マルチレクサーを使用すると、言語ごとに異なるプリファレンスを設定できます。たとえば、ドイツ語のドキュメントではcompositeをTRUEに設定し、オランダ語のドキュメントではcompositeをFALSEに設定できます。

D.2.5 Worldレクサー機能

MULTI_LEXERと同様にWORLD_LEXERレクサーは、異なる複数の言語を含むドキュメントの索引付けを可能にします。ドキュメントの言語を自動的に検出するため、元表に言語列を作成する必要がありません。

WORLD_LEXERは、すべてのデータベース・キャラクタ・セットをサポートしており、Unicode 5.0標準をサポートしています。複数言語を使用するドキュメントでWORLD_LEXERを有効に活用するには、AL32UTF-8またはUTF8 Oracleキャラクタ・セット・エンコーディングを指定する必要があります。これには、補完、またはサロゲート・ペア文字も含まれます。

表D-2および表D-3に、WORLD_LEXERでサポートされる言語を示します。このリストはUnicode標準の変更に伴って変更される可能性があります。いずれにしても完全なリストとは考えないようにする必要があります。(言語は一般的なグループ分けではなく、Unicodeの言語システムに対応してグループ分けされています。)

表D-2 Worldレクサーでサポートされている言語(空白で区切られる言語)

言語グループ

含まれる言語

アラビア語

アラビア語、ファルシ語、クルド語、パシュトー語、シンド語、ウルドゥー語

アルメニア語

アルメニア語

ベンガル語

アッサム語、ベンガル語

Bopomofo

客家(ハッカ)語、ビンナン語

キリル語

ベラルーシ語、ブルガリア語、マケドニア語、モルダビア語、ロシア語、セルビア語、セルビア・クロアチア語、ウクライナ語を含む50以上の言語

デーヴァナーガリー文字

ボジュプリー語、ビハール語、ヒンディー語、カシミール語、マラーティー語、ネパール語、パーリ語、サンスクリット語

エチオピア語

アムハラ語、ゲーズ語、ティグリニャ語、ティグレ語

ジョージア語

ジョージア語

ギリシャ語

ギリシャ語

グジャラート語

グジャラート語、カッチ語

グルムキー語

パンジャブ語

ヘブライ語

ヘブライ語、ラディノ語、イディッシュ語

カガンガ文字

レジャン語

カンナダ語

カナラ語、カンナダ語

韓国語

韓国語、ハンジャ・ハングル語

ラテン語

アフリカーンス語、アルバニア語、バスク語、ブルトン語、カタロニア語、クロアチア語、チェコ語、デンマーク語、オランダ語、英語、エスペラント語、エストニア語、フェロー語、フィジー語、フィンランド語、フラマン語、フランス語、フリジア語、ドイツ語、ハワイ語、ハンガリー語、アイスランド語、インドネシア語、アイルランド語、イタリア語、ラップ語、古典ラテン語、ラトビア語、リトアニア語、マレー語、マルタ語、中国標準語(ピンイン表記)、マオリ語、ノルウェー語、ポーランド語、ポルトガル語、プロヴァンス語、ルーマニア語、サモア語、ゲール語(スコットランド)、スロバキア語、スロベニア語、ソルビア語、スペイン語、スワヒリ語、スウェーデン語、タガログ語、トルコ語、ベトナム語、ウェールズ語

マラヤーラム語

マラヤーラム語

モンゴル語

モンゴル語

オリヤー語

オリヤー語

シンハラ語

パーリ語、シンハラ語

シリア語

アラム語、シリア語

タミル語

タミル語

テルグ語

テルグ語

ターナ文字

ディベヒ語、モルディブ語

表D-3 Worldレクサーでサポートされている言語(空白で区切られない言語)

言語グループ

含まれる言語

中国語

広東語、中国標準語、ピンイン表音文字

日本語

日本語(ひらがな、漢字、カタカナ)

クメール語

カンボジア語、クメール語

ラオ語

ラオ語

ミャンマー語

ビルマ語

タイ語

タイ語

チベット語

ゾンカ語、チベット語

表D-4に、Worldレクサーでサポートされていない言語を示します。

表D-4 Worldレクサーでサポートされていない言語

言語グループ

含まれる言語

ブヒッド語

ブヒッド語

カナダ音節文字

ブラックフット語、カリエール語、クリー語、ダケール語、イヌイット語、イヌクティトゥト語、ナスカピ語、ヌナヴィク語、ヌナブト語、オジブウェー語、サリッシュ語、スレーベイ語

チェロキー語

チェロキー語

キプロス方言

キプロス方言

リンブ語

リンブ語

オガム文字

オガム文字

ルーン語

ルーン語

タイ・ルー語

タイ・ルー語

ウガリット語

ウガリット語

イ語

イ語

易経の六線星形

易経

D.3 問合せ

Oracle Textでは、様々な問合せ演算子の使用をサポートしています。一部の演算子は、ご使用の言語にあわせて動作するよう設定できます。この項では、これらの演算子の多言語問合せ機能の概要を説明します。

- ABOUT演算子を使用して概念を問い合せます。システムは、索引のテーマ・コンポーネントの概念情報を検索します。この機能は、CONTEXT索引を持つ英語とフランス語でサポートされています。

- Fuzzy演算子を使用すると、指定したワードと類似したスペルを持つワードを検索できます。Oracle Textでは、英語、フランス語、ドイツ語、イタリア語、オランダ語、スペイン語、ポルトガル語、日本語、光学式文字認識(OCR)および自動言語識別について、FUZZYをサポートしています。

- Stem演算子を使用して、指定した語句と同じ語根を持つ語を検索できます。たとえば、$singというステムは、sang、sung、singという語の問合せに拡張されます。Oracle Textのステマーは、英語、フランス語、スペイン語、イタリア語、ドイツ語、日本語およびオランダ語をサポートしています。

D.4 提供されるストップリスト

ストップリストは、索引付けされないワードのリストです。これらは通常、たとえば英語におけるthis、thatおよびcanなどのような、一般的な語です。

Oracle Textでは、英語、中国語(繁体字および簡体字)、デンマーク語、オランダ語、フィンランド語、フランス語、ドイツ語、イタリア語、ポルトガル語、スペイン語およびスウェーデン語に対して、デフォルトのストップリストが提供されています。「Oracle Textで提供されるストップリスト」に、様々な言語のストップリストを掲載しています。

D.5 ナレッジ・ベース

Oracle Textのナレッジ・ベースは、索引付け、ABOUT問合せ、およびドキュメント・サービスの導出テーマに使用される概念の階層ツリーです。

Oracle Textで提供されているナレッジ・ベースは、英語とフランス語のみです。これらのナレッジ・ベースはデフォルトでインストールされます。

シングルバイトの空白で区切られた言語の独自のナレッジ・ベースをロードして、スペイン語など、英語やフランス語以外の言語に対してテーマ機能を拡張できます。

D.6 多言語機能のマトリックス

次の表に、サポートされている言語の多言語機能の概要を示します。

表D-5 サポートされている言語の多言語機能

言語

代替スペル

ファジー・マッチング

言語固有レクサー

デフォルト・ストップリスト

ステミング

英語

該当なし

はい

はい

はい

はい

ドイツ語

はい

はい

はい

はい

はい

日本語

該当なし

はい

はい

いいえ

はい

フランス語

該当なし

はい

はい

はい

はい

スペイン語

該当なし

はい

はい

はい

はい

イタリア語

該当なし

はい

はい

はい

はい

オランダ語

該当なし

はい

はい

はい

はい

ポルトガル語

該当なし

はい

はい

はい

はい

韓国語

該当なし

いいえ

はい

いいえ

はい

中国語(簡体字)

該当なし

いいえ

はい

はい

はい

中国語(繁体字)

該当なし

いいえ

はい

はい

はい

デンマーク語

はい

いいえ

はい

いいえ

はい

スウェーデン語

はい

いいえ

はい

はい

はい

フィンランド語

該当なし

いいえ

はい

いいえ

はい

アラビア語

該当なし

いいえ

はい

いいえ

はい

ギリシャ語

該当なし

いいえ

はい

いいえ

はい

ノルウェー語(ブークモール)

該当なし

いいえ

はい

いいえ

はい

ポーランド語

該当なし

いいえ

はい

いいえ

はい

ロシア語

該当なし

いいえ

はい

いいえ

はい

スロベニア語

該当なし

いいえ

はい

いいえ

はい

タイ語

該当なし

いいえ

はい

いいえ

はい

カタロニア語

該当なし

いいえ

はい

いいえ

はい

クロアチア語

該当なし

いいえ

はい

いいえ

はい

ヘブライ語

該当なし

いいえ

はい

いいえ

はい

ノルウェー語(ニーノシュク)

該当なし

いいえ

はい

いいえ

はい

セルビア語

該当なし

いいえ

はい

いいえ

はい

トルコ語

該当なし

いいえ

はい

いいえ

はい

チェコ語

該当なし

いいえ

はい

いいえ

はい

ハンガリー語

該当なし

いいえ

はい

いいえ

はい

ペルシア語

該当なし

いいえ

はい

いいえ

はい

スロバキア語

該当なし

いいえ

はい

いいえ

はい

E Oracle Textで提供されるストップリスト

この付録では、サポートされるすべての言語に対するデフォルトのストップリストについて説明し、言語ごとにストップワードを示します。次のストップリストについて説明します。

- 英語のデフォルト・ストップリスト

- 中国語(繁体字)のストップリスト

- 中国語(簡体字)のストップリスト

- デンマーク語(dk)のデフォルト・ストップリスト

- オランダ語(nl)のデフォルト・ストップリスト

- フィンランド語(sf)のデフォルト・ストップリスト

- フランス語(f)のデフォルト・ストップリスト

- ドイツ語(d)のデフォルト・ストップリスト

- イタリア語(i)のデフォルト・ストップリスト

- ポルトガル語(pt)のデフォルト・ストップリスト

- スペイン語(e)のデフォルト・ストップリスト

- スウェーデン語(s)のデフォルト・ストップリスト

E.1 英語のデフォルト・ストップリスト

次の英語のワードが、ストップワードとして定義されています。

- a

- all

- almost

- also

- although

- an

- および

- any

- are

- as

- at

- be

- because

- been

- both

- but

- by

- can

- could

- d

- did

- do

- does

- either

- for

- from

- had

- has

- have

- having

- he

- her

- here

- hers

- him

- his

- how

- however

- i

- if

- in

- into

- is

- it

- its

- just

- ll

- me

- might

- Mr

- Mrs

- Ms

- my

- no

- non

- nor

- not

- of

- on

- one

- only

- onto

- または

- our

- ours

- s

- shall

- she

- should

- since

- so

- some

- still

- such

- t

- than

- that

- the

- their

- them

- then

- there

- therefore

- these

- they

- this

- those

- though

- through

- thus

- to

- too

- until

- ve

- very

- was

- we

- were

- what

- when

- where

- whether

- which

- while

- who

- whose

- why

- will

- with

- would

- yet

- you

- your

- yours

E.2 中国語(繁体字)のストップリスト

次の中国語(繁体字)のワードが、この言語に対するデフォルトのストップリストに定義されています。

E.3 中国語(簡体字)のストップリスト

次の中国語(簡体字)のワードが、この言語に対するデフォルトのストップリストに定義されています。

E.4 デンマーク語(dk)のデフォルト・ストップリスト

次のデンマーク語のワードが、この言語に対するデフォルトのストップリストに定義されています。

- af

- aldrig

- alle

- altid

- bagved

- de

- der

- du

- efter

- eller

- en

- et

- endnu

- få

- lidt

- fjernt

- for

- foran

- fra

- gennem

- god

- han

- her

- hos

- hovfor

- hun

- hvad

- hvem

- hvor

- hvorhen

- hvordan

- I

- De

- i

- imod

- ja

- jeg

- langsom

- mange

- måske

- med

- meget

- mellem

- mere

- mindre

- når

- hvonår

- nede

- nej

- nu

- og

- oppe

- på

- rask

- hurtig

- sammen

- temmelig

- nok

- til

- uden

- udenfor

- under

- ved

- vi

E.5 オランダ語(nl)のデフォルト・ストップリスト

次のオランダ語のワードが、この言語に対するデフォルトのストップリストに定義されています。

- aan

- aangaande

- aangezien

- achter

- achterna

- afgelopen

- al

- aldaar

- aldus

- alhoewel

- alias

- alle

- allebei

- alleen

- alsnog

- altijd

- altoos

- ander

- andere

- anders

- anderszins

- behalve

- behoudens

- beide

- beiden

- ben

- beneden

- bent

- bepaald

- betreffende

- bij

- binnen

- binnenin

- boven

- bovenal

- bovendien

- bovengenoemd

- bovenstaand

- bovenvermeld

- buiten

- daar

- daarheen

- daarin

- daarna

- daarnet

- daarom

- daarop

- daarvanlangs

- dan

- dat

- de

- die

- dikwijls

- dit

- door

- doorgaand

- dus

- echter

- eer

- eerdat

- eerder

- eerlang

- eerst

- elk

- elke

- en

- enig

- enigszins

- enkel

- er

- erdoor

- even

- eveneens

- evenwel

- gauw

- gedurende

- geen

- gehad

- gekund

- geleden

- gelijk

- gemoeten

- gemogen

- geweest

- gewoon

- gewoonweg

- haar

- had

- hadden

- hare

- heb

- hebben

- hebt

- heeft

- hem

- hen

- het

- hierbeneden

- hierboven

- hij

- hoe

- hoewel

- hun

- hunne

- ik

- ikzelf

- in

- inmiddels

- inzake

- is

- jezelf

- jij

- jijzelf

- jou

- jouw

- jouwe

- juist

- jullie

- kan

- klaar

- kon

- konden

- krachtens

- kunnen

- kunt

- later

- liever

- maar

- mag

- meer

- met

- mezelf

- mij

- mijn

- mijnent

- mijner

- mijzelf

- misschien

- mocht

- mochten

- moest

- moesten

- moet

- moeten

- mogen

- na

- naar

- nadat

- net

- niet

- noch

- nog

- nogal

- nu

- of

- ofschoon

- om

- omdat

- omhoog

- omlaag

- omstreeks

- omtrent

- omver

- onder

- ondertussen

- ongeveer

- ons

- onszelf

- onze

- ook

- op

- opnieuw

- opzij

- over

- overeind

- overigens

- pas

- precies

- reeds

- rond

- rondom

- sedert

- sinds

- sindsdien

- slechts

- sommige

- spoedig

- steeds

- tamelijk

- tenzij

- terwijl

- thans

- tijdens

- toch

- toen

- toenmaals

- toenmalig

- tot

- totdat

- tussen

- uit

- uitgezonderd

- vaak

- van

- vandaan

- vanuit

- vanwege

- veeleer

- verder

- vervolgens

- vol

- volgens

- voor

- vooraf

- vooral

- vooralsnog

- voorbij

- voordat

- voordezen

- voordien

- voorheen

- voorop

- vooruit

- vrij

- vroeg

- waar

- waarom

- wanneer

- want

- waren

- was

- wat

- weer

- weg

- wegens

- wel

- weldra

- welk

- welke

- wie

- wiens

- wier

- wij

- wijzelf

- zal

- ze

- zelfs

- zichzelf

- zij

- zijn

- zijne

- zo

- zodra

- zonder

- zou

- zouden

- zowat

- zulke

- zullen

- zult

E.6 フィンランド語(sf)のデフォルト・ストップリスト

次のフィンランド語のワードが、この言語に対するデフォルトのストップリストに定義されています。

- ään

- ah

- ai

- aina

- alla

- alle

- alta

- ansiosta

- edessä

- een

- ehkä

- ei

- eli

- elikkä

- ellei

- elleivät

- ellemme

- ellen

- ellet

- ellette

- enemmän

- eniten

- ennen

- eräs

- että

- hän

- harva

- he

- hei

- hitaasti

- hyi

- hyvin

- iin

- ilman

- itse

- ja

- jahka

- jälkeen

- jo

- joka

- jokainen

- joku

- jollei

- jolleivat

- jollemme

- jollen

- jollet

- jollette

- jos

- joskin

- jotta

- kaikki

- kanssa

- kaukana

- ken

- keneksi

- kenelle

- kenkään

- kenties

- keskellä

- kesken

- ketkä

- kohti

- koska

- koskaan

- ksi

- kuin

- kuinka

- kuka

- kukaan

- kukin

- kumpainen

- kumpainenkaan

- kumpainenkin

- kumpi

- kumpikaan

- kumpikin

- kun

- kunhan

- kunnes

- kuten

- kyllä

- kylliksi

- lähellä

- läpi

- liian

- lla

- llä

- lle

- lta

- ltä

- luona

- me

- mikä

- mikään

- mikäli

- mikin

- miksi

- milloin

- milloinkaan

- minä

- missä

- miten

- molemmat

- mutta

- na

- nä

- näin

- nämä

- ne

- niin

- nopeasti

- nuo

- nyt

- oi

- olemme

- olen

- olet

- olette

- oli

- olimme

- olin

- olit

- olitte

- olivat

- ollut

- on

- oon

- ovat

- paitsi

- paljon

- paremmin

- parhaiten

- pian

- se

- seen

- sekä

- sen

- siellä

- sieltä

- siin

- sillä

- sinä

- sinne

- ssa

- ssä

- sta

- stä

- suoraan

- ta

- tä

- tähden

- tahi

- tai

- taikka

- takana

- takia

- tämä

- tarpeeksi

- tässä

- te

- tokko

- tta

- ttä

- tuo

- ulkopuolella

- useammin

- useimmin

- usein

- vaan

- vähän

- vähemmän

- vähiten

- vaikka

- vailla

- varten

- vastaan

- vielä

- voi

- ympäri

E.7 フランス語(f)のデフォルト・ストップリスト

次のフランス語のワードが、この言語に対するデフォルトのストップリストに定義されています。

- a

- afin

- ailleurs

- ainsi

- alors

- après

- attendant

- au

- aucun

- aucune

- au-dessous

- au-dessus

- auprès

- auquel

- aussi

- aussitôt

- autant

- autour

- aux

- auxquelles

- auxquels

- avec

- à

- beaucoup

- ça

- ce

- ceci

- cela

- celle

- celles

- celui

- cependant

- certain

- certaine

- certaines

- certains

- ces

- cet

- cette

- ceux

- chacun

- chacune

- chaque

- chez

- combien

- comme

- comment

- concernant

- dans

- de

- dedans

- dehors

- déjà

- delà

- depuis

- des

- desquelles

- desquels

- dessus

- dès

- donc

- donné

- dont

- du

- duquel

- durant

- elle

- elles

- en

- encore

- entre

- et

- étaient

- était

- étant

- etc

- eux

- furent

- grâce

- hormis

- hors

- ici

- il

- ils

- jadis

- je

- jusqu

- jusque

- la

- laquelle

- là

- le

- lequel

- les

- lesquelles

- lesquels

- leur

- leurs

- lors

- lorsque

- lui

- ma

- mais

- malgré

- me

- même

- mêmes

- mes

- mien

- mienne

- miennes

- miens

- moins

- moment

- mon

- moyennant

- ne

- ni

- non

- nos

- notamment

- notre

- notres

- nôtre

- nôtres

- nous

- nulle

- nulles

- on

- ou

- où

- par

- parce

- parmi

- plus

- plusieurs

- pour

- pourquoi

- près

- puis

- puisque

- quand

- quant

- que

- quel

- quelle

- quelqu'un

- quelqu'une

- quelque

- quelques-unes

- quelques-uns

- quels

- qui

- quiconque

- quoi

- quoique

- sa

- sans

- sauf

- se

- selon

- ses

- sien

- sienne

- siennes

- siens

- soi

- soi-même

- soit

- sont

- suis

- sur

- ta

- tandis

- tant

- te

- telle

- telles

- tes

- tienne

- tiennes

- tiens

- toi

- ton

- toujours

- tous

- toute

- toutes

- très

- trop

- tu

- un

- une

- vos

- votre

- vôtre

- vôtres

- vous

- vu

- y

E.8 ドイツ語(d)のデフォルト・ストップリスト

次のドイツ語のワードが、この言語に対するデフォルトのストップリストに定義されています。

- ab

- aber

- allein

- als

- also

- am

- an

- auch

- auf

- aus

- außer

- bald

- bei

- beim

- bin

- bis

- bißchen

- bist

- da

- dabei

- dadurch

- dafür

- dagegen

- dahinter

- damit

- danach

- daneben

- dann

- daran

- darauf

- daraus

- darin

- darüber

- darum

- darunter

- das

- dasselbe

- daß

- davon

- davor

- dazu

- dazwischen

- dein

- deine

- deinem

- deinen

- deiner

- deines

- dem

- demselben

- den

- denn

- der

- derselben

- des

- desselben

- dessen

- dich

- die

- dies

- diese

- dieselbe

- dieselben

- diesem

- diesen

- dieser

- dieses

- dir

- doch

- dort

- du

- ebenso

- ehe

- ein

- eine

- einem

- einen

- einer

- eines

- entlang

- er

- es

- etwa

- etwas

- euch

- euer

- eure

- eurem

- euren

- eurer

- eures

- für

- fürs

- ganz

- gar

- gegen

- genau

- gewesen

- her

- herein

- herum

- hin

- hinter

- hintern

- ich

- ihm

- ihn

- Ihnen

- ihnen

- ihr

- ihre

- Ihre

- ihrem

- Ihrem

- ihren

- Ihren

- Ihrer

- ihrer

- ihres

- Ihres

- im

- in

- ist

- ja

- je

- jedesmal

- jedoch

- jene

- jenem

- jenen

- jener

- jenes

- kaum

- kein

- keine

- keinem

- keinen

- keiner

- keines

- man

- mehr

- mein

- meine

- meinem

- meinen

- meiner

- meines

- mich

- mir

- mit

- nach

- nachdem

- nämlich

- neben

- nein

- nicht

- nichts

- noch

- nun

- nur

- ob

- ober

- obgleich

- oder

- ohne

- paar

- sehr

- sei

- sein

- seine

- seinem

- seinen

- seiner

- seines

- seit

- seitdem

- selbst

- sich

- Sie

- sie

- sind

- so

- sogar

- solch

- solche

- solchem

- solchen

- solcher

- solches

- sondern

- sonst

- soviel

- soweit

- über

- um

- und

- uns

- unser

- unsre

- unsrem

- unsren

- unsrer

- unsres

- vom

- von

- vor

- während

- war

- wäre

- wären

- warum

- was

- wegen

- weil

- weit

- welche

- welchem

- welchen

- welcher

- welches

- wem

- wen

- wenn

- wer

- weshalb

- wessen

- wie

- wir

- wo

- womit

- zu

- zum

- zur

- zwar

- zwischen

E.9 イタリア語(i)のデフォルト・ストップリスト

次のイタリア語のワードが、この言語に対するデフォルトのストップリストに定義されています。

- a

- affinchè

- agl'

- agli

- ai

- al

- all'

- alla

- alle

- allo

- anzichè

- avere

- bensì

- che

- chi

- cioè

- come

- comunque

- con

- contro

- cosa

- da

- dachè

- dagl'

- dagli

- dai

- dal

- dall'

- dalla

- dalle

- dallo

- degl'

- degli

- dei

- del

- dell'

- delle

- dello

- di

- dopo

- dove

- dunque

- durante

- e

- egli

- eppure

- essere

- essi

- finché

- fino

- fra

- giacchè

- gl'

- gli

- grazie

- I

- il

- in

- inoltre

- io

- l'

- la

- le

- lo

- loro

- ma

- mentre

- mio

- ne

- neanche

- negl'

- negli

- nei

- nel

- nell'

- nella

- nelle

- nello

- nemmeno

- neppure

- noi

- nonchè

- nondimeno

- nostro

- o

- onde

- oppure

- ossia

- ovvero

- per

- perchè

- perciò

- però

- poichè

- prima

- purchè

- quand'anche

- quando

- quantunque

- quasi

- quindi

- se

- sebbene

- sennonchè

- senza

- seppure

- si

- siccome

- sopra

- sotto

- su

- subito

- sugl'

- sugli

- sui

- sul

- sull'

- sulla

- sulle

- sullo

- suo

- talchè

- tu

- tuo

- tuttavia

- tutti

- un

- una

- uno

- voi

- vostro

E.10 ポルトガル語(pt)のデフォルト・ストップリスト

次のポルトガル語のワードが、この言語に対するデフォルトのストップリストに定義されています。

- a

- abaixo

- adiante

- agora

- ali

- antes

- aqui

- até

- atras

- bastante

- bem

- com

- como

- contra

- debaixo

- demais

- depois

- depressa

- devagar

- direito

- e

- ela

- elas

- êle

- eles

- em

- entre

- eu

- fora

- junto

- longe

- mais

- menos

- muito

- não

- ninguem

- nós

- nunca

- onde

- ou

- para

- por

- porque

- pouco

- próximo

- qual

- quando

- quanto

- que

- quem

- se

- sem

- sempre

- sim

- sob

- sobre

- talvez

- todas

- todos

- vagarosamente

- você

- vocês

E.11 スペイン語(e)のデフォルト・ストップリスト

次のスペイン語のワードが、この言語に対するデフォルトのストップリストに定義されています。

- a

- acá

- ahí

- ajena

- ajenas

- ajeno

- ajenos

- al

- algo

- alguna

- algunas

- alguno

- algunos

- algún

- allá

- allí

- aquel

- aquella

- aquellas

- aquello

- aquellos

- aquí

- cada

- cierta

- ciertas

- cierto

- ciertos

- como

- cómo

- con

- conmigo

- consigo

- contigo

- cualquier

- cualquiera

- cualquieras

- cuan

- cuanta

- cuantas

- cuánta

- cuántas

- cuanto

- cuantos

- cuán

- cuánto

- cuántos

- de

- dejar

- del

- demasiada

- demasiadas

- demasiado

- demasiados

- demás

- el

- ella

- ellas

- ellos

- él

- esa

- esas

- ese

- esos

- esta

- estar

- estas

- este

- estos

- hacer

- hasta

- jamás

- junto

- juntos

- la

- las

- lo

- los

- mas

- más

- me

- menos

- mía

- mientras

- mío

- misma

- mismas

- mismo

- mismos

- mucha

- muchas

- muchísima

- muchísimas

- muchísimo

- muchísimos

- mucho

- muchos

- muy

- nada

- ni

- ninguna

- ningunas

- ninguno

- ningunos

- no

- nos

- nosotras

- nosotros

- nuestra

- nuestras

- nuestro

- nuestros

- nunca

- os

- otra

- otras

- otro

- otros

- para

- parecer

- poca

- pocas

- poco

- pocos

- por

- porque

- que

- querer

- qué

- quien

- quienes

- quienesquiera

- quienquiera

- quién

- ser

- si

- siempre

- sí

- sín

- Sr

- Sra

- Sres

- Sta

- suya

- suyas

- suyo

- suyos

- tal

- tales

- tan

- tanta

- tantas

- tanto

- tantos

- te

- tener

- ti

- toda

- todas

- todo

- todos

- tomar

- tuya

- tuyo

- tú

- un

- una

- unas

- unos

- usted

- ustedes

- varias

- varios

- vosotras

- vosotros

- vuestra

- vuestras

- vuestro

- vuestros

- y

- yo

E.12 スウェーデン語(s)のデフォルト・ストップリスト

次のスウェーデン語のワードが、この言語に対するデフォルトのストップリストに定義されています。

- ab

- aldrig

- all

- alla

- allt

- alltid

- allting

- än

- andra

- andre

- annan

- annat

- ännu

- är

- åter

- att

- av

- avse

- avsedd

- avsedda

- avser

- avses

- bakom

- bara

- bäst

- bättre

- bra

- bredvid

- då

- dålig

- där

- därför

- de

- dem

- den

- denna

- deras

- dess

- dessa

- det

- detta

- du

- efter

- efteråt

- eftersom

- ej

- eller

- emot

- en

- endast

- er

- era

- ert

- ett

- få

- fall

- färre

- fastän

- flest

- flesta

- för

- först

- första

- förste

- fort

- framför

- från

- genom

- god

- goda

- gott

- ha

- hade

- haft

- han

- hans

- här

- hellre

- henne

- hennes

- heta

- heter

- hette

- hon

- honom

- hos

- hur

- i

- fall

- ifall

- in

- inga

- ingen

- ingenting

- inget

- innan

- inte

- ja

- jag

- kan

- kort

- korta

- kunde

- kunna

- lång

- långa

- långsam

- långsamma

- långsamt

- långt

- lite

- liten

- litet

- man

- med

- medan

- mellan

- men

- mer

- mera

- mest

- mesta

- mindre

- minst

- minsta

- mot

- mycket

- någon

- någonting

- något

- några

- när

- nära

- ned

- nej

- ner

- nere

- ni

- nu

- och

- också

- om

- oss

- över

- överst

- översta

- övre

- på

- så

- sådan

- sådana

- sådant

- säga

- säger

- sägs

- sämre

- sämst

- sån

- sånt

- såsom

- sin

- sist

- sista

- ska

- skall

- skulle

- som

- ta

- till

- tillräcklig

- tillräckliga

- tillräckligt

- tillsammans

- tog

- trots att

- under

- underst

- undre

- upp

- uppe

- ut

- utan

- ute

- utom

- vad

- väl

- var

- vara

- varför

- vart

- vem

- vems

- vet

- veta

- vi

- vid

- vilken

- vill

- ville

- visste

- vore

F Oracle Textのスコア付けのアルゴリズム

この付録では、Oracle Textでワード問合せのスコア付けがどのように計算されるかを説明します。この方法は、英語でのABOUT問合せのスコア計算とは異なります。スコア付けはSCORE演算子を使用して取得されます。

この付録の内容は次のとおりです。

- ワード問合せのスコア付けのアルゴリズム

- ワードのスコア付けの例

- DMLおよびスコア付けのアルゴリズム

関連項目:

"ユーザー定義のスコア付けについては、「DEFINESCORE」および「DEFINEMERGE」を参照してください。

F.1 ワード問合せのスコア付けのアルゴリズム

ワード問合せで戻されたドキュメントの関連性スコアを計算するために、Oracle TextではSaltonの式に基づいた逆頻度アルゴリズムを使用します。

逆頻度スコア付けでは、ドキュメント・セットで頻出する語句はノイズ語句とみなされるため、これらの語句のスコアは低くなります。ドキュメントのスコアを高くするには、問合せ語句がそのドキュメント内では頻出し、ドキュメント・セット全体としてはほとんど出現しないことが必要です。

次の表では、Oracle Textの逆頻度スコア付けを示します。最初の列はドキュメント・セット内のドキュメントの数を示し、2番目の列はスコアが100になるために必要な、ドキュメント内の問合せ語句の出現回数を示しています。

この表では、ドキュメント・セット内の1つのドキュメントのみが問合せ語句を含んでいると仮定します。

ドキュメント・セット内のドキュメント数

スコアが100になるために必要なドキュメント内の問合せ語句の出現回数

1

34

5

20

10

17

50

13

100

12

500

10

1,000

9

10,000

7

100,000

6

1,000,000

5

セット・サイズによって、スコアが異なります。たとえば、セットの1つのドキュメントにのみ問合せ語句が含まれ、セットに5つのドキュメントが存在する場合、スコアを100にするには、ドキュメントに語句が20回出現する必要があります。1,000,000個のドキュメントがセットに存在する場合、ドキュメントに語句が5回出現するだけでスコアが100になります。

F.2 ワードのスコア付けの例

化学に関するドキュメントが5000あり、語句chemical がすべてのドキュメントに1回以上は出現するとします。この場合、ドキュメント・セットに対して、語句chemicalは頻出用語となります。

chemicalが5回出現し、語句hydrogenが5回出現するドキュメントが1つあるとします。その他のドキュメントには、語句hydrogenは含まれていません。この場合、ドキュメント・セットに対して、語句hydrogenは頻出用語になりません。

ドキュメント・セットでchemicalは頻繁に出現するため、この問合せ語句のドキュメントに対するスコアは、ドキュメント・セット全体ではほとんど出現しない hydrogenと比べて低くなります。このため、hydrogenに対するスコアは、chemicalに対するスコアより高くなります。両方の語句がそのドキュメントに5回ずつ出現する場合でも、結果は同じです。

注意:

ドキュメントで語句hydrogenが4回出現し、語句chemicalが5回出現する場合でも、hydrogen のスコアが高くなります。ドキュメント・セットでは、chemicalが頻出(5000回以上)するためです。

また、逆頻度スコア付けでも、hydrogen を含むドキュメントの追加によってドキュメントでのその語句のスコアが下がり、hydrogen を含まないドキュメントの追加によってスコアが上がります。

F.3 DMLおよびスコア付けのアルゴリズム

スコア付けのアルゴリズムはドキュメント・セット内のドキュメント数に基づいているため、ドキュメント・セット内でのドキュメントの挿入、更新または削除によって、DMLの前後に指定した任意の語句のスコアが変更されます。

DMLが重い場合は、索引を最適化する必要があります。索引を最適化した直後に問合せを実行すると、完全に関連ランク付けされます。

DMLが軽い場合でも、非常に正確な関連ランク付けが行われます。

いずれの場合も、CTX_DDL.SYNC_INDEXを使用して索引を同期化する必要があります。

関連項目:

"SYNC_INDEX"

G Oracle Textビュー

この付録では、Oracle Textが提供するすべてのビューについて説明します。システムが提供するビューは次のとおりです。

- CTX_ALEXER_DICTS

- CTX_AUTO_OPTIMIZE_INDEXES

- CTX_AUTO_OPTIMIZE_STATUS

- CTX_CLASSES

- CTX_FILTER_BY_COLUMNS

- CTX_FILTER_CACHE_STATISTICS

- CTX_INDEXES

- CTX_INDEX_ERRORS

- CTX_INDEX_OBJECTS

- CTX_INDEX_PARTITIONS

- CTX_INDEX_SETS

- CTX_INDEX_SET_INDEXES

- CTX_INDEX_SUB_LEXERS

- CTX_INDEX_SUB_LEXER_VALUES

- CTX_INDEX_VALUES

- CTX_OBJECTS

- CTX_OBJECT_ATTRIBUTES

- CTX_OBJECT_ATTRIBUTE_LOV

- CTX_ORDER_BY_COLUMNS

- CTX_PARAMETERS

- CTX_PENDING

- CTX_PREFERENCES

- CTX_PREFERENCE_VALUES

- CTX_SECTIONS

- CTX_SECTION_GROUPS

- CTX_SQES

- CTX_STOPLISTS

- CTX_STOPWORDS

- CTX_SUB_LEXERS

- CTX_THESAURI

- CTX_THES_PHRASES

- CTX_TRACE_VALUES

- CTX_USER_ALEXER_DICTS

- CTX_USER_AUTO_OPTIMIZE_INDEXES

- CTX_USER_EXTRACT_POLICIES

- CTX_USER_EXTRACT_POLICY_VALUES

- CTX_USER_EXTRACT_RULES

- CTX_USER_EXTRACT_STOP_ENTITIES

- CTX_USER_FILTER_BY_COLUMNS

- CTX_USER_INDEXES

- CTX_USER_INDEX_ERRORS

- CTX_USER_INDEX_OBJECTS

- CTX_USER_INDEX_PARTITIONS

- CTX_USER_INDEX_SETS

- CTX_USER_INDEX_SET_INDEXES

- CTX_USER_INDEX_SUB_LEXERS

- CTX_USER_INDEX_SUB_LEXER_VALS

- CTX_USER_INDEX_VALUES

- CTX_USER_ORDER_BY_COLUMNS

- CTX_USER_PENDING

- CTX_USER_PREFERENCES

- CTX_USER_PREFERENCE_VALUES

- CTX_USER_SECTIONS

- CTX_USER_SECTION_GROUPS

- CTX_USER_SQES

- CTX_USER_STOPLISTS

- CTX_USER_STOPWORDS

- CTX_USER_SUB_LEXERS

- CTX_USER_THESAURI

- CTX_USER_THES_PHRASES

- CTX_VERSION

G.1 CTX_ALEXER_DICTS

このビューは、ユーザーによって作成されたすべてのディクショナリを表示します。このビューは、CTXSYSによって問合せが可能です。

列名

データ型

説明

ALD_OWNER

VARCHAR2(30)

ディクショナリ所有者の名前

ALD_NAME

VARCHAR2(30)

ディクショナリの名前

ALD_LANG

VARCHAR2(30)

ディクショナリの言語

G.2 CTX_AUTO_OPTIMIZE_INDEXES

このビューは、自動最適化のために登録されるすべての索引を表示します。CTXSYSが問い合せることができます。

列名

データ型

説明

AOI_INDEX_OWNER

VARCHAR2(30)

索引の所有者

AOI_INDEX_NAME

VARCHAR2(30)

索引名

AOI_PARTITION_NAME

VARCHAR2(30)

パーティション名

G.3 CTX_AUTO_OPTIMIZE_STATUS

このビューは、自動最適化ジョブのステータスを表示します。CTXSYSが問い合せることができます。

列名

データ型

説明

AOS_TIMESTAMP

TIMESTAMP(6) WITH TIMEZONE

自動最適化ジョブが開始された時刻

AOS_STATUS

VARCHAR2(30)

自動最適化ジョブのステータス

AOS_ERROR

VARCHAR2(4000)

自動最適化ジョブによって発生したエラー

G.4 CTX_CLASSES

このビューは、テキスト・データ・ディクショナリに登録されているすべてのプリファレンス・カテゴリを表示します。すべてのユーザーが問い合せることができます。

列名

データ型

説明

CLA_NAME

VARCHAR2(30)

クラス名

CLA_DESCRIPTION

VARCHAR2(80)

クラスの説明

G.5 CTX_FILTER_BY_COLUMNS

このビューは、テキスト・データ・ディクショナリに登録されているすべてのFILTER BY列を表示します。すべてのユーザーが問い合せることができます。

列名

データ型

説明

FBC_INDEX_OWNER

VARCHAR2(30)

索引の所有者名

FBC_INDEX_NAME

VARCHAR2(30)

索引名

FBC_TABLE_OWNER

VARCHAR2(30)

表の所有者名

FBC_TABLE_NAME

VARCHAR2(30)

表名

FBC_COLUMN_NAME

VARCHAR2(256)

列名

FBC_COLUMN_TYPE

VARCHAR2(30)

列型

FBC_SECTION_TYPE

VARCHAR2(30)

セクション・タイプ

FBC_SECTION_NAME

VARCHAR2(30)

セクション名

FBC_SECTION_ID

NUMBER

セクションID

G.6 CTX_FILTER_CACHE_STATISTICS

このビューは、問合せフィルタ・キャッシュに関連する各種の統計を表示します。このビューは、すべてのユーザーが問合せ可能であり、すべての索引の統計が表示されます。

列名

データ型

説明

FCS_INDEX_OWNER

VARCHAR2(30)

索引の所有者名

FCS_INDEX_NAME

VARCHAR2(30)

索引名

FCS_PARTITION_NAME

VARCHAR2(30)

索引パーティション名

FCS_SIZE

NUMBER

フィルタ・キャッシュの現在のサイズ(バイト)

FCS_ENTRIES

NUMBER

結果がフィルタ・キャッシュにキャッシュされる問合せの数

FCS_REQUESTS

NUMBER

フィルタ・キャッシュに対する問合せリクエストの数

FCS_HITS

NUMBER

フィルタ・キャッシュで一致が見つかった問合せリクエストの数

G.7 CTX_INDEXES

このビューは、カレント・ユーザーのテキスト・データ・ディクショナリに登録されているすべての索引を表示します。CTXSYSが問い合せることができます。

列名

データ型

説明

IDX_CHARSET_COLUMN

VARCHAR2(256)

元表のキャラクタ・セット列名

IDX_DOCID_COUNT

NUMBER

索引付けされたドキュメント数

IDX_FORMAT_COLUMNS

VARCHAR2(256)

元表のフォーマット列名

IDX_ID

NUMBER

内部索引ID

IDX_KEY_NAME

VARCHAR2(256)

主キー列

IDX_LANGUAGE_COLUMN

VARCHAR2(256)

元表の言語列名

IDX_NAME

VARCHAR2(30)

索引名

IDX_OWNER

VARCHAR2(30)

索引の所有者

IDX_STATUS

VARCHAR2(12)

ステータス

IDX_SYNC_INTERVAL

VARCHAR2(2000)

スケジューラ・ジョブに必要な間隔文字列。AUTOMATIC同期化の場合にのみ有効です。MANUAL同期化およびON COMMIT同期化の場合は、常にNULLです。

IDX_SYNC_JOBNAME

VARCHAR2(50)

自動同期化用のスケジューラ・ジョブ名。AUTOMATIC同期化の場合にのみ有効で、他の同期化タイプでは常にNULLです。

IDX_SYNC_MEMORY

VARCHAR2(100)

同期化メモリー・サイズ。ON COMMITタイプおよびAUTOMATICタイプの同期化の場合にのみ有効です。MANUAL同期化の場合は、常にNULLです。

IDX_SYNC_PARA_DEGREE

NUMBER

同期化の並列度。AUTOMATICタイプの同期化の場合にのみ有効です。MANUAL同期化およびON COMMIT同期化の場合には、常にNULLです。

IDX_SYNC_TYPE

VARCHAR2(20)

同期化のタイプ(MANUAL、AUTOMATICまたはON COMMIT)

IDX_TABLE

VARCHAR2(30)

表名

IDX_TABLE_OWNER

VARCHAR2(30)

表の所有者

IDX_TEXT_NAME

VARCHAR2(30)

テキスト列名

IDX_TYPE

VARCHAR2(7)

索引のタイプ(CONTEXT、CTXCATまたはCTXRULE)

G.8 CTX_INDEX_ERRORS

このビューは、DMLエラーを表示し、CTXSYSで問い合せることができます。

列名

データ型

説明

ERR_INDEX_OWNER

VARCHAR2(30)

索引の所有者

ERR_INDEX_NAME

VARCHAR2(30)

索引名

ERR_TIMESTAMP

DATE

エラーの発生時間

ERR_TEXTKEY

VARCHAR2(18)

エラーが発生したドキュメントのROWID、またはエラーが発生した操作の名前(ALTER INDEXなど)

ERR_TEXT

VARCHAR2(4000)

エラー・テキスト

G.9 CTX_INDEX_OBJECTS

このビューは、索引中の各クラス用に使用されるオブジェクトを表示します。CTXSYSが問い合せることができます。

列名

データ型

説明

IXO_INDEX_OWNER

VARCHAR2(30)

索引の所有者

IXO_INDEX_NAME

VARCHAR2(30)

索引名

IXO_CLASS

VARCHAR2(30)

クラス名

IXO_OBJECT

VARCHAR2(30)

オブジェクト名

G.10 CTX_INDEX_PARTITIONS

このビューは、すべての索引パーティションを表示します。CTXSYSが問い合せることができます。

列名

データ型

説明

IXP_ID

NUMBER(38)

索引パーティションID

IXP_INDEX_OWNER

VARCHAR2(30)

索引の所有者

IXP_INDEX_NAME

VARCHAR2(30)

索引名

IXP_INDEX_PARTITION_NAME

VARCHAR2(30)

索引パーティション名

IXP_SYNC_TYPE

VARCHAR2(20)

同期化のタイプ(MANUAL、AUTOMATICまたはON COMMIT)

IXP_TABLE_OWNER

VARCHAR2(30)

表の所有者

IXP_TABLE_NAME

VARCHAR2(30)

表名

IXP_TABLE_PARTITION_NAME

VARCHAR2(30)

表パーティション名

IXP_DOCID_COUNT

NUMBER(38)

パーティションに関連付けられたドキュメント数

IXP_STATUS

VARCHAR2(12)

パーティションのステータス

G.11 CTX_INDEX_SETS

このビューは、すべての索引セット名を表示します。すべてのユーザーが問い合せることができます。

列名

データ型

説明

IXS_OWNER

VARCHAR2(30)

索引セットの所有者

IXS_NAME

VARCHAR2(30)

索引セット名

G.12 CTX_INDEX_SET_INDEXES

このビューは、索引セット内のすべてのサブ索引を表示します。すべてのユーザーが問い合せることができます。

列名

データ型

説明

IXX_INDEX_SET_OWNER

VARCHAR2(30)

索引セットの所有者

IXX_INDEX_SET_NAME

VARCHAR2(30)

索引セット名

IXX_COLLIST

VARCHAR2(500)

サブ索引の列リスト

IXX_STORAGE

VARCHAR2(500)

サブ索引の記憶域句

G.13 CTX_INDEX_SUB_LEXERS

このビューは、索引ごとに各言語のサブレクサーを表示します。CTXSYSが問い合せることができます。

列名

データ型

説明

ISL_INDEX_OWNER

VARCHAR2(30)

索引の所有者

ISL_INDEX_NAME

VARCHAR2(30)

索引名

ISL_LANGUAGE

VARCHAR2(30)

サブレクサーの言語

ISL_ALT_VALUE

VARCHAR2(30)

言語の代替値

ISL_OBJECT

VARCHAR2(30)

この言語で使用するレクサー・オブジェクト名

G.14 CTX_INDEX_SUB_LEXER_VALUES

このビューは、サブレクサー属性とその値を表示します。CTXSYSで、このビューにアクセスできます。

列名

データ型

説明

ISV_INDEX_OWNER

VARCHAR2(30)

索引の所有者

ISV_INDEX_NAME

VARCHAR2(30)

索引名

ISV_LANGUAGE

VARCHAR2(30)

サブレクサーの言語

ISV_OBJECT

VARCHAR2(30)

この言語で使用するレクサー・オブジェクト名

ISV_ATTRIBUTE

VARCHAR2(30)

サブレクサー属性の名前

ISV_VALUE

VARCHAR2(500)

サブレクサーの属性値

G.15 CTX_INDEX_VALUES

このビューは、索引で使用される各オブジェクトの属性値を表示します。CTXSYSで、このビューを問い合せることができます。

列名

データ型

説明

IXV_INDEX_OWNER

VARCHAR2(30)

索引の所有者

IXV_INDEX_NAME

VARCHAR2(30)

索引名

IXV_CLASS

VARCHAR2(30)

クラス名

IXV_OBJECT

VARCHAR2(30)

オブジェクト名

IXV_ATTRIBUTE

VARCHAR2(30)

属性名

IXV_VALUE

VARCHAR2(500)

属性値

G.16 CTX_OBJECTS

このビューは、テキスト・データ・ディクショナリに登録されているすべてのテキスト・オブジェクトを表示します。すべてのユーザーが、このビューを問い合せることができます。

列名

データ型

説明

OBJ_CLASS

VARCHAR2(30)

オブジェクト・クラス(データストア、フィルタ、レクサーなど)

OBJ_NAME

VARCHAR2(30)

オブジェクト名

OBJ_DESCRIPTION

VARCHAR2(80)

オブジェクトの説明

G.17 CTX_OBJECT_ATTRIBUTES

このビューは、各オブジェクトのプリファレンスに割り当てられる属性を表示します。すべてのユーザーが問い合せることができます。

列名

データ型

説明

OAT_CLASS

VARCHAR2(30)

オブジェクト・クラス(データストア、フィルタ、レクサーなど)

OAT_OBJECT

VARCHAR2(30)

オブジェクト名

OAT_ATTRIBUTE

VARCHAR2(64)

属性名

OAT_DESCRIPTION

VARCHAR2(80)

属性の説明

OAT_REQUIRED

VARCHAR2(1)

要求される属性(YまたはN)

OAT_STATIC

VARCHAR2(1)

現在は使用されていません。

OAT_DATATYPE

VARCHAR2(64)

属性データ型。値がPROCEDUREの場合は、オブジェクトの属性がストアド・プロシージャ名であることを示します。

OAT_DEFAULT

VARCHAR2(500)

属性のデフォルト値

OAT_MIN

NUMBER

最小値

OAT_MAX

NUMBER

最大値

OAT_MAX_LENGTH

NUMBER

最大長

G.18 CTX_OBJECT_ATTRIBUTE_LOV

このビューは、Oracle Textによって提供される特定のオブジェクト属性に対して使用可能な値を表示します。すべてのユーザーが問い合せることができます。

列名

データ型

説明

OAL_CLASS

NUMBER(38)

オブジェクトのクラス

OAL_OBJECT

VARCHAR2(30)

オブジェクト名

OAL_ATTRIBUTE

VARCHAR2(32)

属性名

OAl_LABEL

VARCHAR2(30)

属性値ラベル

OAL_VALUE

VARCHAR2(64)

属性値

OAL_DESCRIPTION

VARCHAR2(80)

属性値の説明

G.19 CTX_ORDER_BY_COLUMNS

このビューは、テキスト・データ・ディクショナリに登録されているすべてのORDER BY列を表示します。すべてのユーザーが問い合せることができます。

列名

データ型

説明

OBC_INDEX_OWNER

VARCHAR2(30)

索引の所有者

OBC_INDEX_NAME

VARCHAR2(30)

索引名

OBC_TABLE_OWNER

VARCHAR2(30)

表の所有者

OBC_TABLE_NAME

VARCHAR2(30)

表名

OBC_COLUMN_NAME

VARCHAR2(236)

列名

OBC_COLUMN_POSITION

VARCHAR2(30)

列の位置

OBC_COLUMN_TYPE

VARCHAR2(30)

列型

OBC_SECTION_NAME

VARCHAR2(30)

セクション名

OBC_SECTION_TYPE

VARCHAR2(30)

セクション・タイプ

OBC_SECTION_ID

NUMBER

セクションID

OBC_SORT_ORDER

VARCHAR2(8)

ソート順序

G.20 CTX_PARAMETERS

このビューは、CTXSYSによって定義されたすべてのシステム定義パラメータを表示します。すべてのユーザーが問い合せることができます。

列名

データ型

説明

PAR_NAME

VARCHAR2(30)

パラメータ名

auto_optimize

auto_optimize_logfile

max_index_memory

ctx_doc_key_type

default_index_memory

default_datastore

default_filter_binary

default_filter_text

default_filter_file

default_section_html

default_section_xml

default_section_text

default_lexer

default_stoplist

default_storage

default_wordlist

default_ctxcat_lexer

default_ctxcat_index_set

default_ctxcat_stoplist

default_ctxcat_storage

default_ctxcat_wordlist

default_ctxrule_lexer

default_ctxrule_stoplist

default_ctxrule_storage

default_ctxrule_wordlist

log_directory

file_access_role

PAR_VALUE

VARCHAR2(500)

パラメータ値。max_index_memoryおよびdefault_index_memoryの場合、PAR_VALUEはメモリー量を表す文字列を格納します。他のパラメータ名の場合、PAR_VALUEは索引作成用デフォルトとして使用されるプリファレンス名を格納します。

G.21 CTX_PENDING

このビューは、DMLキュー内のユーザーの各エントリの行を表示します。CTXSYSが問い合せることができます。

列名

データ型

説明

PND_INDEX_OWNER

VARCHAR2(30)

索引の所有者

PND_INDEX_NAME

VARCHAR2(30)

索引名

PND_PARTITION_NAME

VARCHAR2(30)

ローカル・パーティション索引のパーティション名。通常の索引の場合はNULLです。

PND_ROWID

ROWID

索引付けされるROWID

PND_TIMESTAMP

DATE

変更の時間

G.22 CTX_PREFERENCES

このビューは、 Oracle Textユーザーによって作成されるプリファレンスおよびOracle Textにあるすべてのシステム定義のプリファレンスを表示します。このビューは、各プリファレンスにつき1行を含みます。すべてのユーザーが問い合せることができます。

列名

データ型

説明

PRE_OWNER

VARCHAR2(30)

プリファレンス所有者のユーザー名

PRE_NAME

VARCHAR2(30)

プリファレンスの名前

PRE_CLASS

VARCHAR2(30)

プリファレンス・クラス

PRE_OBJECT

VARCHAR2(30)

使用されるオブジェクト

G.23 CTX_PREFERENCE_VALUES

このビューは、テキスト・データ・ディクショナリのすべてのプリファレンスに割り当てられた値を表示します。このビューは、各値につき1行を含みます。すべてのユーザーが問い合せることができます。

列名

データ型

説明

PRV_OWNER

VARCHAR2(30)

プリファレンス所有者のユーザー名

PRV_PREFERENCE

VARCHAR2(30)

プリファレンスの名前

PRV_ATTRIBUTE

VARCHAR2(64)

属性名

PRV_VALUE

VARCHAR2(500)

属性値

G.24 CTX_SECTIONS

このビューは、SDATAおよびMDATAの各セクションを含めて、テキスト・データ・ディクショナリで作成されたすべてのセクションの情報を表示します。すべてのユーザーが問い合せることができます。

列名

データ型

説明

SEC_OWNER

VARCHAR2(30)

セクション・グループの所有者

SEC_SECTION_GROUP

VARCHAR2(30)

セクション・グループ名

SEC_TYPE

VARCHAR2(30)

セクションのタイプ(ZONE、FIELD、SPECIAL、ATTRまたはSTOPのいずれか)

SEC_ID

NUMBER

セクションID

SEC_NAME

VARCHAR2(30)

セクション名

SEC_TAG

VARCHAR2(64)

セクション・タグ

SEC_VISIBLE

VARCHAR2(1)

YまたはN(フィールド・セクションのみが参照できるインジケータ)

SEC_DATATYPE

VARCHAR2(30)

セクションがSDATAセクションの場合に、データ型名(NUMBER、VARCHAR2、DATEまたはRAW)を表示します。それ以外の場合はNULLです。

G.25 CTX_SECTION_GROUPS

このビューは、テキスト・データ・ディクショナリで作成されたすべてのセクション・グループの情報を表示します。すべてのユーザーが問い合せることができます。

列名

データ型

説明

SGP_OWNER

VARCHAR2(30)

セクション・グループの所有者

SGP_NAME

VARCHAR2(30)

セクション・グループ名

SGP_TYPE

VARCHAR2(30)

セクション・グループのタイプ

G.26 CTX_SQES

このビューは、ユーザーが作成したすべてのSQEの定義を表示します。すべてのユーザーが問い合せることができます。

列名

データ型

説明

SQE_OWNER

VARCHAR2(30)

SQEの所有者

SQE_NAME

VARCHAR2(30)

SQEの名前

SQE_QUERY

CLOB

問合せテキスト

G.27 CTX_STOPLISTS

このビューは、ストップリストを表示します。すべてのユーザーが、このビューを問い合せることができます。

列名

データ型

説明

SPL_OWNER

VARCHAR2(30)

ストップリストの所有者

SPL_NAME

VARCHAR2(30)

ストップリスト名

SPL_COUNT

NUMBER

ストップワード数

SPL_TYPE

VARCHAR2(30)

ストップリストのタイプ(MULTIまたはBASIC)

G.28 CTX_STOPWORDS

このビューは、各ストップリストのストップワードを表示します。すべてのユーザーが、このビューを問い合せることができます。

列名

データ型

説明

SPW_OWNER

VARCHAR2(30)

ストップリストの所有者

SPW_STOPLIST

VARCHAR2(30)

ストップリスト名

SPW_TYPE

VARCHAR2(10)

ストップ・タイプ(STOP_WORD、STOP_CLASSまたはSTOP_THEMEのいずれか)

SPW_WORD

VARCHAR2(80)

ストップワード

SPW_LANGUAGE

VARCHAR2(30)

ストップワードの言語

SPW_PATTERN

VARCHAR2(512)

ストップ・パターン

G.29 CTX_SUB_LEXERS

このビューは、マルチレクサーおよびそれに含まれるサブレクサー・プリファレンスの情報を表示します。すべてのユーザーが問い合せることができます。

列名

データ型

説明

SLX_OWNER

VARCHAR2(30)

マルチレクサー・プリファレンスの所有者

SLX_NAME

VARCHAR2(30)

マルチレクサー・プリファレンスの名前

SLX_LANGUAGE

VARCHAR2(30)

参照されるレクサーの言語(略称ではなくフル・ネーム)

SLX_ALT_VALUE

VARCHAR2(30)

言語の代替値

SLX_SUB_OWNER

VARCHAR2(30)

サブレクサーの所有者

SLX_SUB_NAME

VARCHAR2(30)

サブレクサーの名前

G.30 CTX_THESAURI

このビューは、テキスト・データ・ディクショナリで作成されたすべてのシソーラスについての情報を表示します。すべてのユーザーが問い合せることができます。

列名

データ型

説明

THS_OWNER

VARCHAR2(30)

シソーラスの所有者

THS_NAME

VARCHAR2(30)

シソーラス名

G.31 CTX_THES_PHRASES

このビューは、テキスト・データ・ディクショナリにあるすべてのシソーラスの句に関する情報を表示します。すべてのユーザーが問い合せることができます。

列名

データ型

説明

THP_THESAURUS

VARCHAR2(30)

シソーラス名

THP_PHRASE

VARCHAR2(256)

シソーラスの句

THP_QUALIFIER

VARCHAR2(256)

シソーラスの修飾子

THP_SCOPE_NOTE

VARCHAR2(2000)

シソーラスのスコープ・ノート

G.32 CTX_TRACE_VALUES

このビューは、各アクティブ・トレースにつき1行を含み、各トレースの現行の値を表示します。

列名

データ型

説明

TRC_ID

BINARY_INTEGER

トレースID

TRC_VALUE

NUMBER

現行のトレース値

注意:

パッチ・リリースのインストール後の手順で「ORA-00955: すでに使用されているオブジェクト名です。」というエラーが発生した場合は、無視してかまいません。これは、パッチ対象のデータベースにこのビューが存在している場合に発生することがあります。

G.33 CTX_USER_ALEXER_DICTS

このビューは、現在のユーザーによって作成されたすべてのディクショナリを表示します。

列名

データ型

説明

ALD_NAME

VARCHAR2(30)

ディクショナリの名前

ALD_LANG

VARCHAR2(30)

ディクショナリの言語

G.34 CTX_USER_AUTO_OPTIMIZE_INDEXES

このビューは、自動最適化のために登録されるユーザー索引を表示します。すべてのユーザーが問い合せることができます。

列名

データ型

説明

AOI_INDEX_NAME

VARCHAR2(30)

索引名

AOI_PARTITION_NAME

VARCHAR2(30)

パーティション名

G.35 CTX_USER_EXTRACT_POLICIES

このビューは、カレント・ユーザーが所有するすべてのエンティティ抽出ポリシーを表示します。すべてのユーザーが、このビューを問い合せることができます。

列名

データ型

説明

EPL_NAME

VARCHAR2(30)

エンティティ抽出ポリシー名

G.36 CTX_USER_EXTRACT_POLICY_VALUES

このビューは、カレント・ユーザーが所有するすべてのエンティティ抽出ポリシーの値を表示します。すべてのユーザーが、このビューを問い合せることができます。

列名

データ型

説明

EPV_POLICY_NAME

VARCHAR2(30)

エンティティ抽出ポリシー名

EPV_CLASS

VARCHAR2(30)

オブジェクト・クラス

EPV_OBJECT

VARCHAR2(30)

オブジェクト名

EPV_ATTRIBUTE

VARCHAR2(30)

オブジェクトの属性名

EPV_VALUE

VARCHAR2(500)

オブジェクトの属性値

G.37 CTX_USER_EXTRACT_RULES

このビューは、カレント・ユーザーが所有するポリシーのエンティティ抽出ルールを表示します。すべてのユーザーが、このビューを問い合せることができます。

列名

データ型

説明

ERL_POLICY_NAME

VARCHAR2(30)

エンティティ抽出ポリシー名

ERL_RULE_ID

INTEGER

エンティティ抽出ルールID

ERL_LANGUAGE

VARCHAR2(30)

エンティティ抽出ルール言語

ERL_RULE

VARCHAR2(512)

エンティティ抽出ルールの内容

ERL_TYPE

VARCHAR2(4000)

逆参照とエンティティ・タイプをマップした文字列

ERL_STATUS

VARCHAR2(30)

エンティティ抽出ルール・ステータス(compiled、not compiled、to be deleted)

ERL_COMMENTS

VARCHAR2(4000)

コメント

G.38 CTX_USER_EXTRACT_STOP_ENTITIES

このビューは、カレント・ユーザーが所有するストップ・エンティティを表示します。すべてのユーザーが、このビューを問い合せることができます。

列名

データ型

説明

ESE_POLICY_NAME

VARCHAR2(30)

エンティティ抽出ポリシー名

ESE_NAME

VARCHAR2(512)

ストップ・エンティティ名

ESE_TYPE

VARCHAR2(30)

ストップ・エンティティ・タイプ

ESE_STATUS

VARCHAR2(30)

エンティティ抽出ルール・ステータス(compiled、not compiled、to be deleted、subset)

ESE_COMMENTS

VARCHAR2(4000)

コメント

G.39 CTX_USER_ FILTER_BY_COLUMNS

このビューは、カレント・ユーザーのテキスト・データ・ディクショナリに登録されているすべてのFILTER BY列を表示します。すべてのユーザーが問い合せることができます。

列名

データ型

説明

FBC_INDEX_NAME

VARCHAR2(30)

索引名

FBC_TABLE_OWNER

VARCHAR2(30)

表の所有者名

FBC_TABLE_NAME

VARCHAR2(30)

表名

FBC_COLUMN_NAME

VARCHAR2(256)

列名

FBC_COLUMN_TYPE

VARCHAR2(30)

列型

FBC_SECTION_TYPE

VARCHAR2(30)

セクション・タイプ

FBC_SECTION_NAME

VARCHAR2(30)

セクション名

FBC_SECTION_ID

NUMBER

セクションID

G.40 CTX_USER_INDEXES

このビューは、カレント・ユーザーのテキスト・データ・ディクショナリに登録されているすべての索引を表示します。すべてのユーザーが問い合せることができます。

列名

データ型

説明

IDX_CHARSET_COLUMN

VARCHAR2(256)

元表のキャラクタ・セット列名

IDX_DOCID_COUNT

NUMBER

索引付けされたドキュメント数

IDX_FORMAT_COLUMN

VARCHAR2(256)

元表のフォーマット列名

IDX_ID

NUMBER

内部索引ID

IDX_KEY_NAME

VARCHAR(256)

主キー列

IDX_LANGUAGE_COLUMN

VARCHAR2(256)

元表の言語列名

IDX_NAME

VARCHAR2(30)

索引名

IDX_STATUS

VARCHAR2(12)

ステータス(INDEXEDまたはINDEXING)

IDX_SYNC_INTERVAL

VARCHAR2(2000)

スケジューラ・ジョブに必要な間隔文字列。AUTOMATIC同期化の場合にのみ有効です。MANUAL同期化およびON COMMIT同期化の場合は、常にNULLです。

IDX_SYNC_JOBNAME

VARCHAR2(50)

自動同期化用のスケジューラ・ジョブ名。AUTOMATIC同期化の場合にのみ有効で、他の同期化タイプでは常にNULLです。

IDX_SYNC_MEMORY

VARCHAR2(100)

同期化メモリー・サイズ。ON COMMITタイプおよびAUTOMATICタイプの同期化の場合にのみ有効です。MANUAL同期化の場合は、常にNULLです。

IDX_SYNC_PARA_DEGREE

NUMBER

同期化の並列度。AUTOMATICタイプの同期化の場合にのみ有効です。MANUAL同期化およびON COMMIT同期化の場合には、常にNULLです。

IDX_SYNC_TYPE

VARCHAR2(20)

同期化のタイプ(AUTOMATIC、MANUALまたはON COMMIT)

IDX_TABLE

VARCHAR2(30)

表名

IDX_TABLE_OWNER

VARCHAR2(30)

表の所有者

IDX_TEXT_NAME

VARCHAR2(30)

テキスト列名

IDX_TYPE

VARCHAR2(30)

索引のタイプ(CONTEXT、CTXCATまたはCTXRULE)

G.41 CTX_USER_INDEX_ERRORS

このビューは、カレント・ユーザーの索引エラーを表示します。すべてのユーザーが、このビューを問い合せることができます。

列名

データ型

説明

ERR_INDEX_NAME

VARCHAR2(30)

索引名

ERR_TIMESTAMP

DATE

エラーの発生時間

ERR_TEXTKEY

VARCHAR2(18)

エラーが発生したドキュメントのROWID、またはエラーが発生した操作の名前(ALTER INDEXなど)

ERR_TEXT

VARCHAR2(4000)

エラー・テキスト

G.42 CTX_USER_INDEX_OBJECTS

このビューは、カレント・ユーザー用に定義された索引に連結されているプリファレンスを表示します。すべてのユーザーが問い合せることができます。

列名

データ型

説明

IXO_INDEX_NAME

VARCHAR2(30)

索引名

IXO_CLASS

VARCHAR2(30)

オブジェクト名

IXO_OBJECT

VARCHAR2(80)

オブジェクトの説明

G.43 CTX_USER_INDEX_PARTITIONS

このビューは、カレント・ユーザーのすべての索引パーティションを表示します。すべてのユーザーが問い合せることができます。

列名

データ型

説明

IXP_DOCID_COUNT

NUMBER(38)

索引パーティションに関連付けられたドキュメント数

IXP_ID

NUMBER(38)

索引パーティションID

IXP_INDEX_NAME

VARCHAR2(30)

索引名

IXP_INDEX_PARTITION_NAME

VARCHAR2(30)

索引パーティション名

IDX_SYNC_INTERVAL

VARCHAR2(2000)

スケジューラ・ジョブに必要な間隔文字列。AUTOMATIC同期化の場合にのみ有効です。MANUAL同期化およびON COMMIT同期化の場合は、常にNULLです。

IDX_SYNC_JOBNAME

VARCHAR2(50)

自動同期化用のスケジューラ・ジョブ名。AUTOMATIC同期化の場合にのみ有効で、他の同期化タイプでは常にNULLです。

IDX_SYNC_MEMORY

VARCHAR2(100)

同期化メモリー・サイズ。ON COMMITタイプおよびAUTOMATICタイプの同期化の場合にのみ有効です。MANUAL同期化の場合は、常にNULLです。

IDX_SYNC_PARA_DEGREE

NUMBER

同期化の並列度。AUTOMATICタイプの同期化の場合にのみ有効です。MANUAL同期化およびON COMMIT同期化の場合には、常にNULLです。

IDX_SYNC_TYPE

VARCHAR2(20)

同期化のタイプ(AUTOMATIC、MANUALまたはON COMMIT)

IXP_STATUS

VARCHAR2(12)

パーティションのステータス

IXP_TABLE_OWNER

VARCHAR2(30)

表の所有者

IXP_TABLE_NAME

VARCHAR2(30)

表名

IXP_TABLE_PARTITION_NAME

VARCHAR2(30)

表パーティション名

G.44 CTX_USER_INDEX_SETS

このビューは、カレント・ユーザーに属するすべての索引セット名を表示します。すべてのユーザーが問い合せることができます。

列名

データ型

説明

IXS_NAME

VARCHAR2(30)

索引セット名

G.45 CTX_USER_INDEX_SET_INDEXES

このビューは、カレント・ユーザーに属する索引セット内のすべての索引を表示します。すべてのユーザーが問い合せることができます。

列名

データ型

説明

IXX_INDEX_SET_NAME

VARCHAR2(30)

索引セット名

IXX_COLLIST

VARCHAR2(500)

索引の列リスト

IXX_STORAGE

VARCHAR2(500)

索引の記憶域句

G.46 CTX_USER_INDEX_SUB_LEXERS

このビューは、問合せを実行するユーザーに対して、索引ごとに各言語のサブレクサーを表示します。すべてのユーザーが、このビューを問い合せることができます。

列名

データ型

説明

ISL_INDEX_NAME

VARCHAR2(30)

索引名

ISL_LANGUAGE

VARCHAR2(30)

サブレクサーの言語

ISL_ALT_VALUE

VARCHAR2(30)

言語の代替値

ISL_OBJECT

VARCHAR2(30)

この言語で使用するレクサー・オブジェクト名

G.47 CTX_USER_INDEX_SUB_LEXER_VALS

このビューは、問合せを実行するユーザーに対して、サブレクサー属性とその値を表示します。すべてのユーザーが、このビューを問い合せることができます。

列名

データ型

説明

ISV_INDEX_NAME

VARCHAR2(30)

索引名

ISV_LANGUAGE

VARCHAR2(30)

サブレクサーの言語

ISV_OBJECT

VARCHAR2(30)

この言語で使用するレクサー・オブジェクト名

ISV_ATTRIBUTE

VARCHAR2(30)

サブレクサー属性の名前

ISV_VALUE

VARCHAR2(500)

サブレクサー属性の値

G.48 CTX_USER_INDEX_VALUES

このビューは、カレント・ユーザーの索引で使用される各オブジェクトの属性値を表示します。すべてのユーザーが、このビューを問い合せることができます。

列名

データ型

説明

IXV_INDEX_NAME

VARCHAR2(30)

索引名

IXV_CLASS

VARCHAR2(30)

クラス名

IXV_OBJECT

VARCHAR2(30)

オブジェクト名

IXV_ATTRIBUTE

VARCHAR2(30)

属性名

IXV_VALUE

VARCHAR2(500)

属性値

G.49 CTX_USER_ORDER_BY_COLUMNS

このビューは、カレント・ユーザーのテキスト・データ・ディクショナリに登録されているすべてのORDER BY列を表示します。すべてのユーザーが問い合せることができます。

列名

データ型

説明

OBC_INDEX_NAME

VARCHAR2(30)

索引名

OBC_TABLE_OWNER

VARCHAR2(30)

表の所有者

OBC_TABLE_NAME

VARCHAR2(30)

表名

OBC_COLUMN_NAME

VARCHAR2(236)

列名

OBC_COLUMN_POSITION

VARCHAR2(30)

列の位置

OBC_COLUMN_TYPE

VARCHAR2(30)

列型

OBC_SECTION_NAME

VARCHAR2(30)

セクション名

OBC_SECTION_TYPE

VARCHAR2(30)

セクション・タイプ

OBC_SECTION_ID

NUMBER

セクションID

OBC_SORT_ORDER

VARCHAR2(8)

ソート順序

G.50 CTX_USER_PENDING

このビューは、DMLキュー内のユーザーの各エントリの行を表示します。すべてのユーザーが問い合せることができます。

列名

データ型

説明

PND_INDEX_NAME

VARCHAR2(30)

索引名

PND_PARTITION_NAME

VARCHAR2(30)

ローカル・パーティション索引のパーティション名。通常の索引の場合はNULLです。

PND_ROWID

ROWID

索引付けされるROWID

PND_TIMESTAMP

DATE

変更の時間

G.51 CTX_USER_PREFERENCES

このビューは、カレント・ユーザーによって定義されたすべてのプリファレンスを表示します。すべてのユーザーが問い合せることができます。

列名

データ型

説明

PRE_NAME

VARCHAR2(30)

プリファレンスの名前

PRE_CLASS

VARCHAR2(30)

プリファレンス・クラス

PRE_OBJECT

VARCHAR2(30)

使用されるオブジェクト

G.52 CTX_USER_PREFERENCE_VALUES

このビューは、カレント・ユーザーによって定義されたプリファレンスのすべての値を表示します。すべてのユーザーが問い合せることができます。

列名

データ型

説明

PRV_PREFERENCE

VARCHAR2(30)

プリファレンスの名前

PRV_ATTRIBUTE

VARCHAR2(64)

属性名

PRV_VALUE

VARCHAR2(500)

属性値

G.53 CTX_USER_SECTIONS

このビューは、カレント・ユーザーのテキスト・データ・ディクショナリに作成されたセクションに関する情報を表示します。すべてのユーザーが問い合せることができます。

列名

データ型

説明

SEC_DATATYPE

VARCHAR2(30)

セクションがSDATAセクションの場合に、データ型名(NUMBER、VARCHAR2、DATEまたはRAW)を表示します。それ以外の場合はNULLです。

SEC__SECTION_GROUP

VARCHAR2(30)

セクション・グループ名

SEC_TYPE

VARCHAR2(30)

セクションのタイプ(ZONE、FIELD、SPECIAL、STOPまたはATTRのいずれか)

SEC_ID

NUMBER

セクションID

SEC_NAME

VARCHAR2(30)

セクション名

SEC_TAG

VARCHAR2(64)

セクション・タグ

SEC_VISIBLE

VARCHAR2(1)

YまたはN(フィールド・セクションのみが参照できるインジケータ)

G.54 CTX_USER_SECTION_GROUPS

このビューは、カレント・ユーザーのテキスト・データ・ディクショナリに作成されたセクション・グループに関する情報を表示します。すべてのユーザーが問い合せることができます。

列名

データ型

説明

SGP_NAME

VARCHAR2(30)

セクション・グループ名

SGP_TYPE

VARCHAR2(30)

セクション・グループのタイプ

G.55 CTX_USER_SESSION_SQES

このビューは、カレント・ユーザーによって作成されたすべてのセッション期間SQEの定義を表示します。

列名

データ型

説明

SQE_OWNER

VARCHAR2(30)

SQEの所有者の名前

SQE_NAME

VARCHAR2(30)

SQEの名前(永続期間とセッション期間の間の共有ネームスペース)

SQE_QUERY

CLOB

問合せテキスト(最大サイズは32K)

G.56 CTX_USER_SQES

このビューは、カレント・ユーザーによって作成されたすべての永続期間SQEの定義を表示します。つまり、セッション中SQEは表示されません。

列名

データ型

説明

SQE_OWNER

VARCHAR2(30)

SQEの所有者

SQE_NAME

VARCHAR2(30)

SQEの名前

SQE_QUERY

CLOB

問合せテキスト

G.57 CTX_USER_STOPLISTS

このビューは、カレント・ユーザーのストップリストを表示します。すべてのユーザーが問い合せることができます。

列名

データ型

説明

SPL_NAME

VARCHAR2(30)

ストップリスト名

SPL_COUNT

NUMBER

ストップワード数

SPL_TYPE

VARCHAR2(30)

ストップリストのタイプ(MULTIまたはBASIC)

G.58 CTX_USER_STOPWORDS

このビューは、カレント・ユーザーの各ストップリストのストップワードを表示します。すべてのユーザーが、このビューを問い合せることができます。

列名

データ型

説明

SPW_STOPLIST

VARCHAR2(30)

ストップリスト名

SPW_TYPE

VARCHAR2(10)

ストップ・タイプ(STOP_WORD、STOP_CLASSまたはSTOP_THEMEのいずれか)

SPW_WORD

VARCHAR2(80)

ストップワード

SPW_LANGUAGE

VARCHAR2(30)

ストップワードの言語

SPW_PATTERN

VARCHAR2(512)

ストップ・パターン

G.59 CTX_USER_SUB_LEXERS

このビューは、カレント・ユーザーに対して、マルチレクサーおよびそれに含まれるサブレクサー・プリファレンスの情報を表示します。すべてのユーザーが問い合せることができます。

列名

データ型

説明

SLX_NAME

VARCHAR2(30)

マルチレクサー・プリファレンスの名前

SLX_LANGUAGE

VARCHAR2(30)

参照されるレクサーの言語(略称ではなくフル・ネーム)

SLX_ALT_VALUE

VARCHAR2(30)

言語の代替値

SLX_SUB_OWNER

VARCHAR2(30)

サブレクサーの所有者

SLX_SUB_NAME

VARCHAR2(30)

サブレクサーの名前

G.60 CTX_USER_THESAURI

このビューは、カレント・ユーザーによってシステムに作成されたすべてのシソーラスに関する情報を表示します。すべてのユーザーが問い合せることができます。

列名

データ型

説明

THS_NAME

VARCHAR2(30)

シソーラス名

G.61 CTX_USER_THES_PHRASES

このビューは、カレント・ユーザーが所有するすべてのシソーラス内の句に関する情報を表示します。すべてのユーザーが問い合せることができます。

列名

データ型

説明

THP_THESAURUS

VARCHAR2(30)

シソーラス名

THP_PHRASE

VARCHAR2(256)

シソーラスの句

THP_QUALIFIER

VARCHAR2(256)

句の修飾子

THP_SCOPE_NOTE

VARCHAR2(2000)

句のスコープ・ノート

G.62 CTX_VERSION

このビューは、CTXSYSデータ・ディクショナリとコードのバージョン・ナンバー情報を表示します。

列名

データ型

説明

VER_DICT

CHAR(9)

CTXSYSデータ・ディクショナリのバージョン・ナンバー

VER_CODE

VARCHAR2(9)

Oracle Databaseシャドウ・プロセスにリンクするコードのバージョン・ナンバー

この列は、リンクされているコードのバージョン・ナンバーをフェッチします。このため、パッチ・リリースの検出および確認には、この列を使用します。

H Oracle Textでのストップワード変換

この付録では、それぞれの演算子に対するストップワードの書換え(変換)について説明します。すべての表のストップワード式の列では、問合せ式または問合せ式のコンポーネントを示します。また、右側の列では、Oracle Textによる問合せの書換えを示します。

この付録の内容は次のとおりです。

- ストップワード変換の理解

- 句問合せのストップワードについて

- ワード変換

- AND変換

- OR変換

- ACCUMulate変換

- MINUS変換

- MNOT変換

- NOT変換

- EQUIValence変換

- NEAR変換

- WEIGHT変換

- THRESHOLD変換

- WITHIN変換

H.1 ストップワード変換の理解

ストップワードまたはストップワードのみからなる句を問合せ演算子のオペランドとして使用すると、Oracle Textは式を書き換えてストップワードまたはストップワードのみからなる句を排除した後、問合せを実行します。

トークンstopwordは、ストップワードまたはストップワードのみからなる句を表します。

トークンnon_stopwordは、ストップワード以外のワード、ストップワード以外のワードのみからなる句、ストップワード以外のワードとストップワードの両方で構成される句のいずれかを表します。

トークンno_lexは、ストップワードでもなく、索引が作成されるワードでもない、単一文字または文字列を表します。たとえば、トークンno_lexの例として単独の文字+があります。

ストップワード式の列で問合せ式を示している場合、変換後の式no_tokenは、この問合せを入力するとヒットが戻らないことを意味します。

ストップワード式の列で複数の演算子のある問合せ式のコンポーネントを示している場合、変換後の式no_tokenは、no_tokenの値が変換後の式の次の段階に渡されることを意味します。

ストップワード式 の列でオペランドとしてno_tokenが指定されている変換は中間の変換です(ここでは、no_tokenが前の変換の結果です)。この中間の変換は、元の問合せ式に少なくとも1つのストップワードおよび複数の演算子がある場合に適用されます。

たとえば、次のコンパウンド問合せ式について考えます。

'(this NOT dog) AND cat'

この式でのストップワードがthisのみの場合、Oracle Textは次の順に次の変換を適用します。

stopword NOT non-stopword => no_token

no_token AND non_stopword => non_stopword

結果式は次のとおりです。

'cat'

H.2 句問合せのストップワードについて

句問合せで使用する場合、ワードがストップワードかどうかに関係なく、ストップワードは1つのワードと一致します。たとえば、「in」および「to」がストップワードで、「throughout」がそうではない場合、問合せ「hiking in California」は次の句と一致します。

- hiking in California

- hiking to California

- hiking throughout California

H.3 ワード変換

ストップワード式

変換後の式

ストップワード

no_token

no_lex

no_token

最初の変換は、問合せ式でのストップワードまたはストップワードのみからなる句自体はヒットを戻さないことを意味します。

2番目の変換は、+のように索引が作成されない問合せ語句は、ヒットを戻さないことを表しています。

H.4 AND変換

ストップワード式

変換後の式

non_stopword AND stopword

non_stopword

non_stopword AND no_token

non_stopword

stopword AND non_stopword

non_stopword

no_token AND non_stopword

non_stopword

stopword AND stopword

no_token

no_token AND stopword

no_token

stopword AND no_token

no_token

no_token AND no_token

no_token

H.5 OR変換

ストップワード式

変換後の式

non_stopword OR stopword

non_stopword

non_stopword OR no_token

non_stopword

stopword OR non_stopword

non_stopword

no_token OR non_stopword

non_stopword

stopword OR stopword

no_token

no_token OR stopword

no_token

stopword OR no_token

no_token

no_token OR no_token

no_token

H.6 ACCUMulate変換

ストップワード式

変換後の式

non_stopword ACCUM stopword

non_stopword

non_stopword ACCUM no_token

non_stopword

stopword ACCUM non_stopword

non_stopword

no_token ACCUM non_stopword

non_stopword

stopword ACCUM stopword

no_token

no_token ACCUM stopword

no_token

stopword ACCUM no_token

no_token

no_token ACCUM no_token

no_token

H.7 MINUS変換

ストップワード式

変換後の式

non_stopword MINUS stopword

non_stopword

non_stopword MINUS no_token

non_stopword

stopword MINUS non_stopword

no_token

no_token MINUS non_stopword

no_token

stopword MINUS stopword

no_token

no_token MINUS stopword

no_token

stopword MINUS no_token

no_token

no_token MINUS no_token

no_token

H.8 MNOT変換

ストップワード式

変換後の式

non_stopword MNOT stopword

non_stopword

non_stopword MNOT no_token

non_stopword

stopword MNOT non_stopword

no_token

no_token MNOT non_stopword

no_token

stopword MNOT stopword

no_token

no_token MNOT stopword

no_token

stopword MNOT no_token

no_token

no_token MNOT no_token

no_token

H.9 NOT変換

ストップワード式

変換後の式

non_stopword NOT stopword

non_stopword

non_stopword NOT no_token

non_stopword

stopword NOT non_stopword

no_token

no_token NOT non_stopword

no_token

stopword NOT stopword

no_token

no_token NOT stopword

no_token

stopword NOT no_token

no_token

no_token NOT no_token

no_token

H.10 EQUIValence変換

ストップワード式

変換後の式

non_stopword EQUIV stopword

non_stopword

non_stopword EQUIV no_token

non_stopword

stopword EQUIV non_stopword

non_stopword

no_token EQUIV non_stopword

non_stopword

stopword EQUIV stopword

no_token

no_token EQUIV stopword

no_token

stopword EQUIV no_token

no_token

no_token EQUIV no_token

no_token

注意:

問合せ実行計画を使用する場合は、すべてのEQUIVALENCE変換がEXPLAIN表に表示されるわけではありません。

H.11 NEAR変換

ストップワード式

変換後の式

non_stopword NEAR stopword

non_stopword

non_stopword NEAR no_token

non_stopword

stopword NEAR non_stopword

non_stopword

no_token NEAR non_stopword

non_stopword

stopword NEAR stopword

no_token

no_token NEAR stopword

no_token

stopword NEAR no_token

no_token

no_token NEAR no_token

no_token

H.12 WEIGHT変換

ストップワード式

変換後の式

stopword * n

no_token

no_token * n

no_token

H.13 THRESHOLD変換

ストップワード式

変換後の式

stopword > n

no_token

no_token > n

no_token

H.14 WITHIN変換

ストップワード式

変換後の式

stopword WITHIN section

no_token

no_token WITHIN section

no_token

索引

A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X  Z

記号

- _ ワイルドカード 1

- ,演算子 1

- !演算子 1

- ?演算子 1

- {} エスケープ文字 1

- $演算子 1

- *演算子 1

- \エスケープ文字 1

- % ワイルドカード 1

- = 演算子 1 , 2 , 3

- >演算子 1

- -演算子 1

A

- ABOUT問合せ

- 例 1

- ハイライト・マークアップ 1 , 2

- ハイライト・オフセット 1 , 2

- 表示の拡張 1

- ACCUMULATE演算子

- スコア付け 1

- ストップワード変換 1

- ADD_ATTR_SECTIONプロシージャ 1

- ADD_AUTO_OPTIMIZEプロシージャ 1

- ADD_EVENTプロシージャ 1

- ADD_FIELD_SECTIONプロシージャ 1

- ADD_INDEXプロシージャ 1

- ADD_MDATA_SECTIONプロシージャ 1

- ADD_MDATAプロシージャ 1 , 2

- ADD_SDATA_COLUMNプロシージャ 1

- ADD_SDATA_SECTIONプロシージャ 1

- ADD_SPECIAL_SECTIONプロシージャ 1

- ADD_STOP_SECTIONプロシージャ 1

- ADD_STOPCLASSプロシージャ 1

- ADD_STOPTHEMEプロシージャ 1

- ADD_STOPWORDプロシージャ 1

- ADD_SUB_LEXERプロシージャ

- 例 1

- ADD_TRACEプロシージャ 1

- ADD_ZONE_SECTIONプロシージャ 1

- イベントの追加 1

- トレースの追加 1

- メタデータの追加 1 , 2 , 3

- 構造化データの追加 1 , 2

- AL32UTF8キャラクタ・セット 1 , 2 , 3 , 4

- ALTER_PHRASEプロシージャ 1

- ALTER_THESAURUSプロシージャ 1

- ALTER INDEX

- セクション追加時の制約 1

- ALTER INDEX文

- 例 1

- パラメータ構文 1

- REBUILD構文 1

- RENAME構文 1

- 構文の概要 1

- alternate_spelling属性 1 2

- 代替文法テンプレート 1

- 代替言語テンプレート 1

- 代替スペル

- 概要 1

- ベース文字 1

- デンマーク語 1

- 使用禁止の例 1 , 2

- 使用可能にする例 1

- ドイツ語 1

- 正規化された形式および元の形式 1

- オーバーライド 1

- スウェーデン語 1

- 代替スコアリング・テンプレート 1

- ALTER TABLE

- コンポジット・ドメイン索引 1

- UPDATE GLOBAL INDEXES 1

- ALTER TABLE文 1

- アメリカ英語

- 索引デフォルト 1

- 問合せの分析 1

- AND演算子

- ストップワード変換 1

- アジアの言語

- CTXRULE索引 1

- 属性

- alternate_spelling 1 , 2

- auto_filter_output_formatting 1

- base_letter 1 , 2

- base_letter_type 1

- バイナリ 1

- コマンド 1

- コンポジット 1

- 継続 1

- detail_key 1

- detail_lineno 1

- detail_table 1

- detail_text 1

- 無効化 1 , 2

- endjoin 1

- ftp_proxy 1

- fuzzy_match 1

- fuzzy_numresults 1

- fuzzy_score 1

- http_proxy 1

- i_index_clause 1

- i_table_clause 1

- index_text 1

- index_themes 1

- k_table_clause 1

- maxthreads 1

- maxurls 1

- mixed_case 1

- n_table_clause 1

- new_german_spelling 1 , 2

- 改行 1

- no_proxy 1

- numgroup 1

- numjoin 1

- output_type 1

- override_base_letter 1

- p_table_clause 1

- path 1

- printjoin 1

- プロシージャ 1

- punctuation 1

- r_table_clause 1

- 設定 1 , 2

- skipjoin 1

- startjoin 1

- stemmer 1

- timeout 1

- urlsize 1

- 表示 1

- 可能な値の表示 1

- 空白 1

- 属性セクション

- 動的な追加 1

- 定義 1

- 動的な追加 1

- 問合せ 1

- WITHINの例 1

- AUTO_FILTER_OUTPUT_FORMATTING属性 1

- AUTO_FILTERドキュメント・フィルタ処理テクノロジ

- サポートされているプラットフォーム 1

- AUTO_FILTERフィルタ

- キャラクタ・セットの変換 1

- 索引プリファレンス・オブジェクト 1

- 設定 1

- サポートされている書式 1

- サポートされているプラットフォーム 1

- サポートされていない形式 1

- AUTO_SECTION_GROUPの例 1

- 自動索引同期化,automatic index synchronization 1 , 2

- 自動最適化

- 索引の追加 1

- パーティションの追加 1

- 索引の削除 1

- パーティションの削除 1

- AUTOステミング 1

- 有効なトレース 1

B

- バックスラッシュ・エスケープ文字 1

- base_letter_type属性 1 2

- base_letter属性 1 2

- 基本文字変換 1

- 基本文字変換, オーバーライド 1

- BASIC_LEXERオブジェクト 1

- BASIC_LEXERシステム定義プリファレンス 1

- BASIC_LEXER型

- 例 1

- BASIC_STOPLISTタイプ 1

- BASIC_STORAGEオブジェクト

- 属性 1

- デフォルト値 1

- 例 1

- BASIC_WORDLISTオブジェクト

- 属性 1

- 例 1

- BFILE列

- 索引付け 1

- binary属性 1 2

- バイナリ・ドキュメント

- フィルタ処理 1

- BINARYフォーマット列の値 1

- BLOB列

- 索引付け 1

- ロード, 例 1

- 中カッコ・エスケープ文字 1

- 大カッコ

- 優先順位の変更 1 2

- グループ化文字 1

- BROADER TERM演算子

- 例 1

- 上位語問合せフィードバック 1

- BROWSE_WORDSプロシージャ 1

- 索引内のワードのブラウズ 1

- BT関数 1

- BTG関数 1

- BTG演算子 1

- BTI関数 1

- BTI演算子 1

- BT演算子 1

- BTP関数 1

- BTP演算子 1

C

- 大/小文字区別

- ABOUT問合せ 1

- 大/小文字が区別される索引

- 作成 1

- CATSEARCH演算子 1

- 文字

- 継続 1

- numgroup 1

- numjoin 1

- printjoin 1

- punctuation 1

- skipjoin 1

- newlineの指定 1

- whitespaceの指定 1

- startjoinおよびendjoin 1

- キャラクタ・セット

- 中国語 1

- AUTO_FILTERによる変換 1

- 日本語 1

- 韓国語 1

- CHAR列

- 索引付け 1

- キャラクタ・セット列 1

- 中国語

- ファジー・マッチング 1

- CHINESE_LEXER属性 1

- CHINESE_VGRAM_LEXERオブジェクト 1

- 中国語キャラクタ・セットのサポート 1

- 中国語レキシコン, 変更 1

- 中国語テキスト

- 索引付け 1

- ドキュメントの分類

- クラスタリング 1 , 2

- CLOB列

- 索引付け 1

- クランプ 1

- NEAR演算子のクランプ・サイズ 1

- クラスタリング

- KMEAN_CLUSTERING 1

- 型 1

- CLUSTERINGプロシージャ 1

- クラスタリングの型 1

- 列型

- CTXCAT索引でのサポート 1

- CTXRULE索引でのサポート 1

- 索引付けでのサポート 1

- command属性 1

- コンパイラ, 字句 1

- compMem要素 1

- composite属性

- BASIC_LEXER 1

- KOREAN_MORPH_LEXER 1

- コンポジット・ドメイン索引 1

- コンポジット・テキストキー

- エンコーディング 1

- コンポジット・ワード・ディクショナリ 1

- コンポジット・ワードの索引付け

- ドイツ語またはオランダ語テキストの作成 1

- コンポジット・ワード

- 表示 1

- コンコーダンス 1

- CONTAINS演算子

- 例 1

- 構文 1

- CONTEXT索引

- 概要 1

- デフォルトのパラメータ 1

- 構文 1

- CONTEXT索引タイプ 1

- continuation属性 1

- 制御ファイル例

- SQL*Loader 1

- COPY_POLICYプロシージャ 1

- CREATE_INDEX_SCRIPTプロシージャ 1

- CREATE_INDEX_SETプロシージャ 1 , 2 , 3

- CREATE_PHRASEプロシージャ 1

- CREATE_POLICY_SCRIPTプロシージャ 1

- CREATE_POLICYプロシージャ 1

- CREATE_PREFERENCEプロシージャ 1

- CREATE_RELATIONプロシージャ 1

- CREATE_SECTION_GROUPプロシージャ 1

- CREATE_STOPLISTプロシージャ 1

- CREATE_THESAURUS関数 1

- CREATE_TRANSLATIONプロシージャ 1

- CREATE INDEX文

- CONTEXT 1

- CTXCAT 1

- CTXRULE 1

- デフォルトのパラメータ 1 , 2

- 障害 1

- 索引レポートの作成 1

- CTX_ADM.MARK_FAILED 1

- CTX_ADMパッケージ

- MARK_FAILED 1

- RECOVER 1

- RESET_AUTO_OPTIMIZE_STATUS 1

- SET_PARAMETER 1

- CTX_AUTO_OPTIMIZE_INDEXESビュー 1

- CTX_AUTO_OPTIMIZE_STATUSビュー 1

- CTX_CLASSESビュー 1 , 2 , 3 , 4 , 5 , 6

- CTX_CLS

- CLUSTERING 1

- TRAIN 1

- CTX_DDL.ADD_INDEXプロシージャ 1

- CTX_DDLパッケージ

- ADD_ATTR_SECTION 1

- ADD_AUTO_OPTIMIZE 1

- ADD_FIELD_SECTION 1

- ADD_MDATA 1 , 2

- ADD_MDATA_SECTION 1

- ADD_SDATA_COLUMN 1

- ADD_SDATA_SECTION 1

- ADD_SPECIAL_SECTION 1

- ADD_STOP_SECTION 1

- ADD_STOPCLASS 1

- ADD_STOPTHEME 1

- ADD_STOPWORD 1

- ADD_SUB_LEXER 1

- ADD_ZONE_SECTION 1

- COPY_POLICY 1

- CREATE_INDEX_SET 1 , 2 , 3

- CREATE_POLICY 1

- CREATE_PREFERENCE 1

- CREATE_SECTION_GROUP 1

- CREATE_STOPLIST 1

- DROP_POLICY 1

- DROP_PREFERENCE 1

- DROP_STOPLIST 1

- OPTIMIZE_INDEXプロシージャ 1

- PREFERENCE_IMPLICIT_COMMIT変数 1

- REMOVE_AUTO_OPTIMIZE 1

- REMOVE_MDATA 1

- REMOVE_SECTION 1

- REMOVE_STOPCLASS 1

- REMOVE_STOPTHEME 1

- REMOVE_STOPWORD 1

- REMOVE_SUB_LEXER 1

- REPLACE_INDEX_METADATA 1

- SET_ATTRIBUTE 1

- SET_SECTION_ATTRIBUTE 1

- SYNC_INDEXプロシージャ 1

- UNSET_ATTRIBUTE 1 , 2

- UPDATE_SUB_LEXER 1

- CTX_DOCパッケージ

- FILTER 1

- GIST 1

- HIGHLIGHT 1

- IFILTER 1

- MARKUP 1

- PKENCODE 1

- POLICY_FILTER 1

- POLICY_GIST 1

- POLICY_HIGHLIGHT 1

- POLICY_MARKUP 1

- POLICY_SNIPPET 1

- POLICY_THEMES 1

- POLICY_TOKENS 1

- 結果表 1

- SET_KEY_TYPE 1

- SNIPPET 1

- THEMES 1

- TOKENS 1

- CTX_FEEDBACK_ITEM_TYPEタイプ 1

- CTX_FEEDBACK_TYPEタイプ 1 , 2

- CTX_FILTER_CACHE_STATISTICSビュー 1

- CTX_INDEX_ERRORSビュー

- 例 1

- CTX_INDEX_OBJECTSビュー 1

- CTX_INDEX_SET_INDEXESビュー

- ビュー

- CTX_INDEX_SET_INDEXES 1

- CTX_INDEX_SUB_LEXERS_VALUESビュー 1

- CTX_INDEX_SUB_LEXERSビュー 1 , 2

- CTX_INDEX_VALUESビュー 1

- CTX_INDEXESビュー 1

- CTX_OBJECT_ATTRIBUTE_LOVビュー 1

- CTX_OBJECT_ATTRIBUTESビュー 1

- CTX_OBJECTSビュー 1

- CTX_OUTPUTパッケージ

- ADD_EVENT 1

- ADD_TRACE 1

- DISABLE_QUERY_STATS 1

- ENABLE_QUERY_STATS 1

- END_LOG 1

- GET_TRACE_VALUE 1

- LOG_TRACES 1

- LOGFILENAME 1

- REMOVE_EVENT 1

- REMOVE_TRACE 1

- RESET_TRACE 1

- START_LOG 1

- CTX_PARAMETERSビュー 1 , 2

- CTX_PENDINGビュー 1

- CTX_PREFERENCE_VALUESビュー 1

- CTX_PREFERENCESビュー 1

- CTX_QUERY.disable_transactional_queryセッション変数 1

- CTX_QUERYパッケージ

- BROWSE_WORDS 1

- EXPLAIN 1

- HFEEDBACK 1

- REMOVE_SQE 1

- 結果表 1

- STORE_SQE 1

- CTX_REPORT出力形式 1 , 2 , 3 , 4 , 5

- CTX_REPORTパッケージ

- CREATE_INDEX_SCRIPT 1

- CREATE_POLICY_SCRIPT 1

- DESCRIBE_INDEX 1

- DESCRIBE_POLICY 1

- プロシージャのファンクション・バージョン 1

- INDEX_SIZE 1

- INDEX_STATS 1

- QUERY_LOG_SUMMARY 1

- TOKEN_INFO 1

- TOKEN_TYPE 1

- CTX_SECTION_GROUPSビュー 1

- CTX_SECTIONSビュー 1

- CTX_SQESビュー 1

- CTX_STOPLISTSビュー 1

- CTX_STOPWORDSビュー 1

- CTX_SUB_LEXERSビュー 1

- CTX_THES.CREATE_TRANSLATION 1

- CTX_THES.DROP_TRANSLATION 1

- CTX_THES.UPDATE_TRANSLATION 1

- CTX_THESAURIビュー 1

- CTX_THESパッケージ

- ALTER_PHRASE 1

- ALTER_THESAURUS 1

- BT 1

- BTG 1

- BTI 1

- BTP 1

- CREATE_PHRASE 1

- CREATE_RELATION 1

- CREATE_THESAURUS 1

- DROP_PHRASE 1

- DROP_RELATION 1

- DROP_THESAURUS 1

- NT 1

- NTG 1

- NTI 1

- NTP 1

- OUTPUT_STYLE 1

- PT 1

- 結果表 1

- RT 1

- SN 1

- SYN 1

- THES_TT 1

- TR 1

- TRSYN 1

- TT 1

- CTX_TRACE_VALUESビュー 1

- CTX_ULEXERパッケージ 1

- CTX_USER_AUTO_OPTIMIZE_STATUSビュー 1

- CTX_USER_INDEX_ERRORSビュー

- 例 1

- CTX_USER_INDEX_OBJECTSビュー 1

- CTX_USER_INDEX_SET_INDEXESビュー 1

- CTX_USER_INDEX_SETSビュー 1

- CTX_USER_INDEX_SUB_LEXERSビュー 1

- CTX_USER_INDEX_VALUESビュー 1

- CTX_USER_INDEXESビュー 1

- CTX_USER_PENDINGビュー 1

- CTX_USER_PREFERENCE_VALUESビュー 1

- CTX_USER_PREFERENCESビュー 1

- CTX_USER_SECTION_GROUPSビュー 1

- CTX_USER_SECTIONSビュー 1

- CTX_USER_SQESビュー 1 , 2

- CTX_USER_STOPLISTSビュー 1

- CTX_USER_STOPWORDSビュー 1

- CTX_USER_SUB_LEXERSビュー 1

- CTX_USER_THES_PHRASESビュー 1

- CTX_USER_THESAURIビュー 1

- CTX_VERSIONビュー 1

- CTXCAT索引

- 概要 1

- デフォルトのパラメータ 1

- サポートされているプリファレンス 1

- 構文 1

- サポートされないプリファレンス 1

- CTXFILTERCACHE演算子 1

- ctxkbtcコンパイラ 1

- ctxlc (字句コンパイラ) 1

- ctxload

- 例 1

- インポート・ファイルの構造 1

- CTXRULE索引

- 概要 1

- アジアの言語 1

- 多言語のサポート 1

- デフォルトのパラメータ 1

- レクサー・タイプ 1

- 構文 1

- CTXRULE索引の制限事項 1

- CTXSYS.AUTO_FILTERシステム・プリファレンス 1

- CTXSYS.DEFAULT_STOPLIST 1

- CTXSYS.INSO_FILTERシステム・プリファレンス(非推奨) 1

D

- デンマーク語

- 代替スペル 1

- 索引デフォルト 1

- 提供されるストップリスト 1

- データ記憶域

- プロシージャ的に定義 1

- 直接 1

- 例 1

- 外部 1

- マスター/ディテール 1

- URL 1

- データストア型 1

- DBMS_PCLUTIL

- BUILD_PART_INDEX 1

- DEFAULT_CTXRULE_LEXERシステム・パラメータ 1

- DEFAULT_CTXRULE_STOPLISTシステム・パラメータ 1

- DEFAULT_CTXRULE_WORDLISTシステム・パラメータ 1

- DEFAULT_DATASTOREシステム定義索引付けプリファレンス, 1

- DEFAULT_RULE_STORAGEシステム・パラメータ 1

- DEFAULT_STORAGEシステム定義プリファレンス 1

- DEFAULT_WORDLISTシステム定義プリファレンス 1

- デフォルトの索引

- 例 1

- デフォルトのパラメータ

- 変更 1

- CONTEXT索引 1

- CTXCAT索引 1

- CTXRULE索引 1

- 表示 1

- 索引付けのデフォルト

- 表示 1

- DEFAULTシソーラス 1 , 2

- DEFINEMERGE演算子 1

- DEFINESCORE演算子 1

- 派生語のステミング

- 英語での使用可能 1

- DESCRIBE_INDEXプロシージャ 1

- DESCRIBE_POLICYプロシージャ 1

- 索引の説明 1

- DETAIL_DATASTOREオブジェクト

- 例 1

- detail_key属性 1

- detail_lineno attribute 1

- detail_table属性 1

- detail_text属性 1

- ディクショナリ

- 中国語 1

- 日本語 1

- 韓国語 1

- 変更 1

- ユーザー 1

- DIRECT_DATASTOREオブジェクト

- 例 1

- DISABLE_QUERY_STATSプロシージャ 1

- トランザクション問合せの使用禁止 1

- 意味を限定する語

- シソーラスの問合せ 1

- シソーラス・インポート・ファイル内 1

- DML

- スコア付けへの影響 1

- DMLエラー

- 表示 1

- DML処理

- バッチ 1

- DMLキュー

- 表示 1

- ドキュメント

- 分類 1

- クラスタリング 1

- HTMLおよびプレーン・テキストに対するフィルタ処理 1

- ドキュメント・フィルタ処理

- AUTO_FILTER 1

- ドキュメント形式

- サポート対象 1

- 非サポート 1

- ドキュメントのロード

- SQL*Loader 1

- ドキュメントの表示方法

- プロシージャ 1

- ドキュメント・サービス

- ロギング

- リクエスト 1

- ドメイン索引 1

- 左右切捨て問合せ 1

- 左右切捨て検索

- パフォーマンスの向上 1

- DROP_PHRASEプロシージャ 1

- DROP_POLICYプロシージャ 1

- DROP_PREFERENCEプロシージャ 1

- DROP_RELATIONプロシージャ 1

- DROP_STOPLISTプロシージャ 1

- DROP_THESAURUSプロシージャ 1

- DROP_TRANSLATIONプロシージャ 1

- DROP INDEX文 1

- スクリプトによる索引の複製 1

- スクリプトによるポリシーの複製 1

- オランダ語

- コンポジット・ワードの索引付け 1

- ファジー・マッチング 1

- 索引デフォルト 1

- ステミング 1

- 提供されるストップリスト 1

E

- 電子メール

- フィルタ処理および索引付け 1

- 埋込み画像 1

- EMPTY_STOPLISTシステム定義プリファレンス 1

- 空の索引

- 作成 1

- POPULATE | NOPOPULATE 1

- ENABLE_QUERY_STATSプロシージャ 1

- トレースを有効にする 1

- END_LOGプロシージャ 1

- END_QUERY_LOGプロシージャ 1

- ログの停止 1

- 問合せログの停止 1

- endjoin属性 1

- 英語

- ファジー・マッチング 1

- 索引デフォルト 1

- 提供されるストップリスト 1

- english属性(韓国語レクサー) 1

- エンティティ抽出 1

- 環境変数

- AUTO_FILTERフィルタの設定 1

- EQUIVALENCE演算子

- ストップワード変換 1

- NEAR 1

- エラー

- 索引付け 1

- 特殊文字のエスケープ 1

- イベント

- 追加 1

- 削除 1

- EVERYパラメータ 1 , 2

- EXP_TAB表型 1

- 拡張演算子

- SOUNDEX 1

- stem 1

- 表示 1

- EXPLAINプロシージャ

- 例 1

- 結果表 1

- 実行計画表

- 作成 1

- データの取出し例 1

- 構造 1

- EXPORT_THESAURUSプロシージャ 1

- ナレッジ・ベースの拡張 1

- 外部フィルタ

- 指定 1

F

- 失敗した索引操作

- 再開 1

- 索引ロードの失敗 1

- 高速フィルタ処理 1

- フィールド・セクション

- 動的な追加 1

- 定義 1

- 制限事項 1

- 問合せ 1

- 繰返し 1

- WITHINの例 1

- FILE_DATASTOREオブジェクト

- 例 1

- ファイル・データ記憶域

- 例 1

- フィルタ

- INSO (非推奨) 1

- filter属性

- MULTI_COLUMN_DATASTORE 1

- FILTER BY 1

- FILTER BYおよびORDER BYと索引作成の例 1

- フィルタ形式

- サポート対象 1

- フィルタ処理

- 高速, AUTO_FILTER_OUTPUT_FORMATTING属性 1

- multi_column_datastore 1

- ストアド・プロシージャ 1

- プレーン・テキスト 1

- プレーン・テキストおよびHTML 1

- FILTERプロシージャ

- 例 1

- インメモリーの例 1

- 結果表 1

- フィルタ

- AUTO_FILTER 1 , 2

- ユーザー 1

- フィルタ表

- 構造 1

- フィルタ型 1

- フィンランド語

- 索引デフォルト 1

- 提供されるストップリスト 1

- 形式列 1

- 形式設定されたドキュメント

- フィルタ処理 1

- 索引の断片化 1

- フランス語

- ファジー・マッチング 1

- 提供されるストップリスト 1

- フランス語ステミング 1

- ftp_proxy属性 1

- fuzzy_match属性 1

- fuzzy_numresults属性 1

- fuzzy_score属性 1

- ファジー・マッチング

- 自動言語識別 1

- 使用可能化の例 1

- 言語の指定 1

- FUZZY演算子 1

G

- ドイツ語

- alternate spelling属性 1

- 代替スペルの規則 1

- コンポジット・ワードの索引付け 1

- ファジー・マッチング 1

- 索引デフォルト 1

- 新スペル, 問合せ 1 , 2

- ステミング 1

- 提供されるストップリスト 1

- GET_TRACE_VALUEプロシージャ 1

- 要点

- 生成 1

- POLICY_GISTによる生成 1

- GISTプロシージャ

- 例 1

- 結果表 1

- 更新済の構文 1

- 要点表

- 構造 1

- グラフィックス

- 埋込み 1

- スタンドアロン 1

H

- hanja属性 1

- HASPATH演算子

- 特殊文字 1

- HFEEDBACKプロシージャ

- 例 1

- 結果表 1

- 階層問合せフィードバック情報

- 生成 1

- 階層関係

- シソーラス・インポート・ファイル内 1

- ハイライト表示

- マークアップの生成 1 , 2

- オフセットの生成 1 , 2

- NEAR演算子 1

- HIGHLIGHTプロシージャ

- 例 1

- 結果表 1

- ハイライト表

- 例 1

- 構造 1

- 同形異義語

- BROADER TERM問合せ 1

- 問合せ内 1

- シソーラス・インポート・ファイル内 1

- HTML

- フィルタ処理のバイパス 1

- フィルタリング 1

- 生成 1

- ハイライト・オフセットの生成 1 , 2

- ハイライトの例 1

- ハイライト・マークアップ 1 , 2

- 索引付け 1

- ゾーン・セクションの例 1

- HTML_SECTION_GROUP

- 例 1

- HTML_SECTION_GROUPオブジェクト

- NULL_FILTER 1

- http_proxy属性 1

I

- i_index_clause属性 1

- i_table_clause属性 1

- IFILTERプロシージャ 1

- IGNORE形式の列の値 1

- IMPORT_THESAURUSプロシージャ 1

- インポート・ファイル

- 例 1

- 構造 1

- 索引

- 作成 1

- レポートの作成 1

- 索引スクリプトの作成 1

- 説明 1

- スクリプトによる複製 1

- ロードの失敗 1

- 名前の変更 1

- スクリプト 1

- オブジェクトのサイズの表示 1

- 統計の表示 1

- 同期 1 2

- トランザクション 1

- トランザクションCONTEXT 1 , 2

- 登録の表示 1

- INDEX_PROCEDURE user_lexer属性 1

- INDEX_SIZEプロシージャ 1

- INDEX_STATSプロシージャ 1

- index_stems属性 1

- index_text属性 1

- index_themes属性 1

- 索引の作成

- カスタム・プリファレンスの例 1

- デフォルトの例 1

- 索引作成パラメータ

- 例 1

- 索引エラー

- 削除 1

- 表示 1

- 索引の断片化 1

- 索引付け

- マスター/ディテールの例 1

- マルチ言語ドキュメント 1 , 2 , 3

- パラレル 1 , 2

- テーマ 1

- 索引付けの型

- 分類子 1

- クラスタリング 1

- データストア 1

- filter 1

- レクサー 1

- セクション・グループ 1

- 記憶域 1

- プリファレンス 1

- ワードリスト 1

- 索引なしのドキュメント・サービス, 「ポリシーベースのドキュメント・サービス」を参照 1

- 索引メンテナンス 1

- 索引オブジェクト

- 表示 1 , 2

- 索引構成表 1

- 索引プリファレンス

- 概要 1

- 作成 1 , 2

- 索引レポート 1

- 索引要求

- ロギング 1

- 索引のステータス 1

- 索引表領域パラメータ

- 指定 1

- 索引トークン

- ドキュメントに対しての生成 1 , 2

- 索引タイプCONTEXT 1

- 語形変化のステミング

- 有効化 1

- INPATH演算子

- 特殊文字 1

- INPUT_TYPE user_lexer属性 1

- INSERT文

- ロード, 例 1

- INSO_FILTER (非推奨) 1

- 逆頻度スコア付け 1

- イタリア語

- ファジー・マッチング 1

- ステミング 1

- 提供されるストップリスト 1

J

- JA16EUCキャラクタ・セット 1 2

- JA16EUCTILDEキャラクタ・セット 1 2

- JA16EUCYENキャラクタ・セット 1 2

- JA16SJISキャラクタ・セット 1 2

- JA16SJISTILDEキャラクタ・セット 1 2

- JA16SJISYENキャラクタ・セット 1 2

- 日本語

- ファジー・マッチング 1

- 索引デフォルト 1

- 索引付け 1

- ステミング 1

- JAPANESE_LEXER 1

- JAPANESE_LEXER属性 1

- JAPANESE_VGRAM_LEXER属性 1

- JAPANESE_VGRAM_LEXERオブジェクト 1

- japanese属性(韓国語レクサー) 1

- 日本語キャラクタ・セットのサポート 1

- 日本語EUCキャラクタ・セット 1

- 日本語レキシコン 1

- 日本語のステミング 1 , 2

- JOB_QUEUE_PROCESSES初期化パラメータ 1

- JSON_SECTTION_GROUP 1 , 2

K

- k_table_clause属性 1

- Key Word in Context，「KWIC」を参照 1

- KMEAN_CLUSTERINGオブジェクト 1

- ナレッジ・ベース

- サポートされているキャラクタ・セット 1

- ユーザー定義 1

- ナレッジ・ベース拡張コンパイラ 1

- KO16KSC5601キャラクタ・セット 1

- KO16MSWIN949キャラクタ・セット 1

- 韓国語

- ファジー・マッチング 1

- 索引デフォルト 1

- Unicodeキャラクタのサポート 1

- KOREAN_MORPH_LEXER

- compositeの例 1

- 提供されるディクショナリ 1

- Unicodeサポート 1

- KOREAN_MORPH_LEXER属性 1

- 韓国語キャラクタ・セットのサポート 1

- 韓国語テキスト

- 索引付け 1

- KWIC(Key Word in Context) 1

L

- 言語

- 設定 1

- 言語列 1

- 言語依存のレクサー・テンプレート 1

- 左側切捨て検索

- パフォーマンスの向上 1

- レクサー・タイプ

- CTXRULE索引 1

- 字句コンパイラ 1

- レキシコン，「ディクショナリ」の下位項目を参照 1

- テキストのロード

- SQL*Loaderの例 1

- SQL INSERTの例 1

- シソーラスのロード 1

- LOB列

- ロード 1

- ローカル・パーティション索引 1

- ローカル・パーティション索引

- parallelism 1

- LOG_DIRECTORYシステム・パラメータ 1

- LOG_TRACESプロシージャ 1

- LOGFILENAMEプロシージャ 1

- ロギング

- 終了 1

- ログの停止 1

- ログ・ファイル名の取得 1

- 索引要求 1

- 問合せロギング 1

- トレースのロギング 1

- 論理演算子

- NEAR 1

- long_word属性 1

- LONG列

- 索引付け 1

M

- MAIL_FILTER_CONFIG_FILEシステム・パラメータ 1

- MAIL_FILTERオブジェクト 1

- メール・フィルタ構成ファイル 1

- メール・フィルタ処理, 「電子メール」を参照 1

- 索引のメンテナンス 1

- MARK_FAILEDプロシージャ 1

- MARKUPプロシージャ

- 例 1

- HTMLハイライト例 1

- 結果表 1

- マークアップ表

- 例 1

- 構造 1

- マスター表/ディテール表のデータ記憶域

- 例 1 , 2

- マスター表/ディテール表

- 索引付けの例 1

- MATCH_SCORE演算子 1

- MATCHES演算子 1

- NEAR演算子のmax_spanパラメータ 1

- maxthreads属性 1

- maxurls属性 1

- MDATA演算子 1

- MDATAセクション 1 , 2 , 3 , 4

- メモリー

- 索引付け 1 , 2

- メタデータ

- 置換 1

- METADATAキーワード

- ALTER INDEXの例 1

- メタデータ・セクション 1 , 2 , 3 , 4

- METAタグ

- フィールド・セクションの作成 1

- ゾーン・セクションの作成 1

- MINUS演算子

- ストップワード変換 1

- mixed_case属性 1

- 複合フォーマット列

- フィルタ処理 1

- 索引付け 1

- サポートされている形式 1

- ユーザー・ディクショナリの変更 1

- morpheme属性 1

- MULTI_COLUMN_DATASTORE制約 1

- MULTI_LEXERオブジェクト

- CREATE INDEXの例 1

- 例 1

- MULTI_LEXERタイプ 1

- MULTI_STOPLISTタイプ 1

- マルチ言語の索引付け 1 , 2 , 3 , 4

- マルチ言語のストップリスト 1 , 2

- マルチ言語表

- 問合せ 1 , 2

- マルチレクサーの例

- 単一言語からの移行 1

N

- n_table_clause属性 1

- NARROWER TERM演算子

- 例 1

- 下位語問合せフィードバック 1

- NEAR演算子

- 後方互換性 1

- ハイライト表示 1

- スコア付け 1

- ストップワード変換 1

- その他の演算子 1

- WITHIN 1

- nested_column属性 1

- NESTED_DATASTORE属性 1

- NESTED_DATASTOREオブジェクト 1

- nested_lineno属性 1

- nested_text属性 1

- nested_type属性 1

- ネストされたセクション検索 1

- ネストされたゾーン・セクション 1

- new_german_spelling属性 1 , 2

- newline属性 1

- NLS_LENGTH_SEMANTICSパラメータ 1

- no_proxy属性 1

- 索引パラメータの非移入 1

- パラメータの非移入 1

- normalization_expr属性 1

- 正規化されたワードの形式 1

- ノルウェー語

- 索引デフォルト 1

- NOT演算子

- ストップワード変換 1

- NT関数 1

- NTG関数 1

- NTG演算子 1

- NTI関数 1

- NTI演算子 1

- NT演算子 1

- NTP関数 1

- NTP演算子 1

- NULL_FILTERオブジェクト 1

- number属性 1

- numgroup属性 1

- numjoin属性 1

O

- オブジェクト

- 索引の表示 1

- オブジェクト値

- 表示 1

- ハイライト表示のオフセット 1 , 2

- コミット時 1 , 2

- one_char_word属性 1

- ONLINE

- CREATE INDEX 1

- 実行計画表のOPERATION列

- 値 1

- 演算子

- ABOUT 1

- ACCUMulate 1

- BROADER TERM 1

- equivalence 1

- FUZZY 1

- HASPATH 1

- INPATH 1

- MATCH_SCORE 1

- MATCHES 1

- MDATA 1

- MINUS 1

- NARROWER TERM 1

- NEAR 1

- NOT 1

- OR 1

- PREFERRED TERM 1

- RELATED TERM 1

- SCORE 1

- スコア付け 1 2

- SDATA 1

- SOUNDEX 1

- SQE 1

- stem 1

- synonym 1

- THRESHOLD 1

- TOP TERM 1

- TRANSFORM 1

- TRANSLATION TERM 1 , 2

- TRANSLATION TERM SYNONYM 1

- WEIGHT 1

- WITHIN 1

- 演算子の拡張

- 表示 1

- 演算子の優先順位

- 例 1

- 表示 1

- 演算子 1

- 最適化

- 戦略 1

- OPTIMIZE_INDEXプロシージャ 1

- OPTIONS列

- 実行計画表 1

- HFEEDBACK表 1

- ORDER BY

- PL/SQLパッケージでの制限事項 1

- ワードの元の形式 1

- OR演算子

- ストップワード変換 1

- OUTPUT_STYLEプロシージャ 1

- output_type属性 1

- ゾーン・セクションのオーバーラップ 1

- override_base_letter属性 1

- 代替スペルのオーバーライド 1

- 基本文字変換のオーバーライド 1

P

- p_table_clause 1

- PARAGRAPHキーワード 1

- 段落セクション

- 定義 1

- 問合せ 1

- パラレル索引の作成 1

- パラレル索引付け

- DBMS_PCLUTIL.BUILD_PART_INDEX 1

- 例 1

- ローカル・パーティション索引 1

- パラメータ

- トランザクショナル 1 , 2

- パラメータ

- 設定 1

- システム定義の表示 1

- カッコ

- 優先順位の変更 1 2

- グループ化文字 1

- パーティション索引

- ローカル・パーティション索引のパラレル作成 1

- 例 1

- ローカル 1

- パラレル作成 1

- 再構築の例 1

- パーティション索引の作成

- 例 1

- パーティション表

- 変更 1

- PATH_SECTION_GROUPシステム定義プリファレンス 1

- path属性 1

- 保留中のDML

- 表示 1

- パフォーマンス

- ワイルドカード検索 1

- PKENCODE関数 1

- プレーン・テキスト

- フィルタ処理のバイパス 1

- フィルタリング 1 , 2

- ハイライト・マークアップ 1 , 2

- NULL_FILTERによる索引付け 1

- ハイライト表示のオフセット 1

- policy

- スクリプトの作成 1

- スクリプトによる複製 1

- レポートの説明 1

- POLICY_FILTERプロシージャ 1

- POLICY_GISTプロシージャ 1

- POLICY_HIGHLIGHTプロシージャ 1

- POLICY_MARKUPプロシージャ 1

- POLICY_SNIPPETプロシージャ 1

- POLICY_THEMESプロシージャ

- 構文 1

- POLICY_TOKENSプロシージャ

- 構文 1

- ポリシーベースのドキュメント・サービス 1

- 索引パラメータの移入 1

- パラメータの移入 1

- ポルトガル語

- 提供されるストップリスト 1

- 演算子の優先順位

- 変更 1

- EQUIVALENCE演算子 1

- 例 1

- 表示 1

- PREFERENCE_IMPLICIT_COMMIT 1

- プリファレンス・クラス

- 表示 1 , 2 , 3 , 4 , 5 , 6

- プリファレンス

- 概要 1

- 変更 1

- 作成 1

- 削除 1

- 置換 1

- 索引付けの指定 1

- システム定義 1

- 表示 1

- 型 1

- プリファレンス値

- 表示 1

- PREFERRED TERM演算子

- 例 1

- prefix_index属性 1

- prefix_max_length属性 1

- prefix_min_length属性 1

- printjoin属性 1

- 権限

- 索引付けに必要 1

- プロシージャ

- COPY_POLICY 1

- CTX_DDL.ADD_INDEX 1

- CTX_DDL.REPLACE_INDEX_METADATA 1

- CTX_OUTPUT_LOG_TRACES 1

- CTX_OUTPUT.ADD_TRACE 1

- CTX_OUTPUT.END_QUERY_LOG 1

- CTX_OUTPUT.GET_TRACE_VALUE 1

- CTX_OUTPUT.REMOVE_TRACE 1

- CTX_OUTPUT.RESET_TRACE 1

- PROCEDURE_FILTERオブジェクト 1

- procedure属性 1

- 漸進的緩和テンプレート 1

- prove_themes属性 1

- 近接演算子, 「NEAR演算子」を参照 1

- PT関数 1

- PT演算子 1

- punctuation属性 1

Q

- 問合せ

- ACCUMulate 1

- 分析 1

- AND 1

- BROADER TERM 1

- equivalence 1

- 例 1

- 階層フィードバック 1

- MINUS 1

- NARROWER TERM 1

- NOT 1

- 非同期索引 1

- OR 1

- PREFERRED TERM 1

- RELATED TERM 1

- ログのレポート 1

- スコア付け 1 2

- ストアド 1

- synonym 1

- THRESHOLD 1

- TOP TERM 1

- トランザクショナル 1 , 2

- TRANSLATION TERM 1 , 2

- TRANSLATION TERM SYNONYM 1

- 加重 1

- query_filter_cache_size基本記憶域属性 1

- QUERY_LOG_SUMMARYプロシージャ 1

- QUERY_PROCEDURE user_lexer属性 1

- 問合せ緩和テンプレート 1

- クエリー・リライト・テンプレート 1

- 問合せテンプレート 1 , 2

R

- r_table_clause 1

- 索引の再構築

- 例 1

- 構文 1

- RECOVERプロシージャ 1

- RELATED TERM演算子 1

- 関連語問合せフィードバック 1

- 問合せの緩和 1

- 関連ランク付け

- ワード問合せ 1

- REMOVE_AUTO_OPTIMIZEプロシージャ 1

- REMOVE_EVENTプロシージャ 1

- REMOVE_MDATAプロシージャ 1

- REMOVE_SECTIONプロシージャ 1

- REMOVE_SQEプロシージャ 1

- REMOVE_STOPCLASSプロシージャ 1

- REMOVE_STOPTHEMEプロシージャ 1

- REMOVE_STOPWORDプロシージャ 1

- REMOVE_SUB_LEXERプロシージャ 1

- REMOVE_TRACEプロシージャ 1

- トレースの削除 1

- メタデータの削除 1

- 索引の名前変更 1

- 繰返しフィールド・セクション

- 問合せ 1

- REPLACE_INDEX_METADATAプロシージャ 1

- 置換 1

- メタデータの置換 1

- プリファレンスの置換 1

- レポート

- 索引の説明 1

- ポリシーの説明 1

- 索引オブジェクト 1

- 索引サイズ 1

- 索引統計 1

- ログ記録された問合せ 1

- トークン情報 1

- 予約語

- エスケープ 1

- RESET_AUTO_OPTIMIZE_STATUSプロシージャ 1

- RESET_TRACEプロシージャ 1

- トレースのリセット 1

- 結果セット・インタフェース 1

- 結果セット 1

- 結果表

- TOKENS 1

- 結果表

- CTX_DOC 1

- CTX_QUERY 1

- CTX_THES 1

- 失敗した索引の再開

- 例 1

- 問合せのリライト 1

- RFC 1738 URL仕様 1

- RFC-2045メッセージ

- フィルタ処理 1

- RFC-822メッセージ

- フィルタ処理 1

- RT関数 1

- RT演算子 1

- RULE_CLASSIFIERタイプ 1

- ルール

- 生成 1

S

- スコア付けのSaltonの式 1

- スコープ・ノート

- 検索 1

- SCORE演算子 1

- スコア付け

- ACCUMulate 1

- DMLの影響 1

- NEAR演算子 1

- スコア付けのアルゴリズム

- ワード問合せ 1

- スクリプト

- CREATE INDEX 1

- CREATE POLICY 1

- SDATA演算子 1

- SDATAセクション 1 , 2

- セクション・グループ

- 作成 1

- 情報の表示 1

- セクション・グループの例 1

- セクション・グループのタイプ 1 , 2

- セクション

- 動的な追加 1

- 動的な追加の制約 1

- 属性の作成 1

- フィールドの作成 1

- ゾーンの作成 1

- ネスト 1

- オーバーラップ 1

- 削除 1

- 繰返しフィールド 1

- 繰返しゾーン 1

- 情報の表示 1

- セクション検索

- ネスト 1

- SENTENCEキーワード 1

- 文セクション

- 定義 1

- 問合せ 1

- SET_ATTRIBUTEプロシージャ 1

- SET_KEY_TYPEプロシージャ 1

- SET_PARAMETERプロシージャ 1 , 2

- SET_SECTION_ATTRIBUTEプロシージャ 1

- 索引オブジェクトのサイズの表示 1

- 中国語(簡体字)

- 索引デフォルト 1

- シングルバイト言語

- 索引付け 1

- skipjoin属性 1

- SNIPPETプロシージャ 1

- SNプロシージャ 1

- SOUNDEX演算子 1

- スペイン語

- ファジー・マッチング 1

- ステミング 1

- 提供されるストップリスト 1

- 特殊文字

- INPATHおよびHASPATH演算子 1

- 特殊セクション

- 定義 1

- 問合せ 1

- スペル

- alternate 1

- ベース文字 1

- 新規ドイツ語 1

- 代替のオーバーライド 1

- スペル, 代替 1

- スペル, 新規ドイツ語 1

- SQE演算子 1

- SQL*Loader

- 例 1

- 制御ファイル例 1

- データ・ファイル例 1

- SQLコマンド

- ALTER INDEX 1

- CREATE INDEX 1

- DROP INDEX 1

- sqlldr例 1

- SQL演算子

- CONTAINS 1

- MATCH_SCORE 1

- MATCHES 1

- SCORE 1

- スタンドアロンのグラフィック 1

- START_LOGプロシージャ 1

- startjoin属性 1

- 統計 1

- 統計, 使用可能 1

- 統計, 索引の表示 1

- 語幹索引付け 1

- stemmer属性 1

- ステミング

- 自動 1

- 使用可能化の例 1

- stem演算子 1

- stop_dic属性 1

- ストップクラス

- 定義 1

- 削除 1

- ストップリスト

- 作成 1

- デンマーク語 1

- 削除 1

- オランダ語 1

- 英語 1

- フィンランド語 1

- フランス語 1

- ドイツ語 1

- イタリア語 1

- 変更 1

- マルチ言語 1 , 2

- ポルトガル語 1

- スペイン語 1

- スウェーデン語 1

- ストップリスト

- 概要 1

- 作成 1

- 表示 1

- 停止セクション

- 動的な追加 1

- 動的な追加の例 1

- 停止セクション

- 追加 1

- ストップテーマ

- 定義 1

- 削除 1

- ストップワード

- 動的な追加 1

- 定義 1

- 削除 1

- ストップリストへのすべての表示 1

- ストップワード

- 動的な追加 1

- 削除 1

- ストップワード変換

- 表示 1

- 記憶域デフォルト 1

- 記憶域索引プリファレンス

- 例 1

- 記憶域オブジェクト 1

- STORE_SQEプロシージャ

- 例 1

- 構文 1

- ストアド・クエリー 1

- ストアド・クエリー式

- 作成 1

- 削除 1

- 表示 1 , 2

- 定義の表示 1

- 構造化データ 1

- 構造化データ・セクション 1 , 2

- サブレクサーのプリファレンス

- 削除 1

- サブレクサー

- 表示 1 , 2 , 3 , 4

- サブレクサーの値

- 表示 1

- substring_index属性 1

- サブストリング索引

- 作成の例 1

- 提供されるストップリスト 1

- AUTO_FILTERでサポートされているプラットフォーム 1

- スウェーデン語

- 代替スペル 1

- 索引デフォルト 1

- 提供されるストップリスト 1

- SYNC_INDEXプロシージャ 1

- SYNC EVERYパラメータ 1 , 2

- 索引の同期化 1 , 2

- SYNC ON COMMITパラメータ 1 , 2

- パラメータの同期化 1 , 2

- SYN関数 1

- SYNONYM演算子 1

- SYN演算子 1

- システム定義プリファレンス

- CTXSYS.AUTO_FILTER 1

- システム・パラメータ

- 索引付けのデフォルト 1 , 2

- システムのリカバリ

- 手動 1

T

- 表構造

- EXPLAIN 1

- filter 1

- 要点 1

- HFEEDBACK 1

- highlight 1

- マークアップ 1

- テーマ 1

- タグ付きテキスト

- 検索 1

- テンプレートによる問合せ 1 , 2

- テキスト列

- サポートされているタイプ 1

- テキスト・データ・ディクショナリ

- クリーン・アップ 1 , 2

- TEXT形式の列の値 1

- テキストのみの索引

- 有効化 1

- 例 1

- theme_language属性 1

- テーマ機能

- サポートされる言語 1

- テーマ・ハイライト

- マークアップの生成 1

- オフセットの生成 1 , 2

- HTMLマークアップ例 1

- HTMLオフセット例 1

- テーマ索引

- 英語のデフォルト 1

- 作成 1

- テーマの検証

- 有効化 1

- テーマ

- ドキュメントに対しての生成 1 , 2

- ハイライト・マークアップの生成 1 , 2

- ハイライト・オフセット例 1

- 索引付け 1

- トップnの取得 1

- THEMESプロシージャ

- 結果表 1

- 構文 1

- テーマ・サマリー

- 生成 1

- トップnの生成 1

- テーマ表

- 構造 1

- THES_TTプロシージャ 1

- シソーラス

- コンパイル 1

- 作成 1

- リレーションシップの作成 1

- DEFAULT 1

- 削除 1

- インポート 1

- インポート/エクスポート 1

- 参照用プロシージャ 1

- 名前変更および切捨て 1

- 情報の表示 1

- シソーラス・インポート・ファイル

- 例 1

- 構造 1

- シソーラス句

- 変更 1

- 削除 1

- シソーラスのリレーション

- 作成 1

- 削除 1

- シソーラスのスコープ・ノート

- 検索 1

- シソーラスの最上位語

- すべて検索 1

- THRESHOLD演算子

- ストップワード変換 1

- timeout属性 1

- to_upper属性 1

- TOKEN_INFOプロシージャ 1

- TOKEN_TYPEプロシージャ 1

- トークン 1

- トークン・レポート, 生成 1

- TOKENSプロシージャ

- 結果表 1

- 構文 1

- TOP TERM 1

- TOP TERM演算子 1

- トレース, 有効な 1

- トレース値

- 取得 1

- トレース

- トレースの追加 1

- 有効なトレース 1

- CTX_TRACE_VALUESビュー 1

- 有効化 1

- トレース値の取得 1 , 2

- トレースのロギング 1

- トレースの削除 1

- トレースのリセット 1

- TRAINプロシージャ 1

- トランザクションCONTEXT索引 1 , 2

- トランザクション索引 1

- TRANSACTIONALパラメータ 1 , 2

- トランザクション・テキスト問合せ

- 使用禁止 1

- 変換

- ストップワード 1

- TRANSFORM演算子 1

- 翻訳

- シソーラスに追加 1

- 削除 1

- 英語名から数値のトークンへ 1

- 更新 1

- TRANSLATION TERM演算子 1 , 2

- TRANSLATION TERM SYNONYM演算子 1

- 透過的データ暗号化

- 列に対するOracle Text索引 1

- TR関数 1

- TR演算子 1 , 2

- TRSYN関数 1

- TRSYN演算子 1

- TT関数 1

- TT演算子 1

- 型

- MULTI_LEXER 1

- WORLD_LEXER 1 , 2

- 型

- 索引付け 1

- 「索引付の型」も参照 1

U

- 韓国語レクサーでのUnicodeのサポート 1

- UNSET_ATTRIBUTEプロシージャ 1 , 2

- 非管理型分類, 「クラスタ化」を参照 1

- UPDATE_SDATAプロシージャ 1

- UPDATE_SUB_LEXERプロシージャ 1

- UPDATE_TRANSLATIONプロシージャ 1

- UPDATE GLOBAL INDEXES 1

- URL_DATASTOREオブジェクト

- 属性 1

- 例 1

- urlsize属性 1

- URL構文 1

- USER_DATASTOREオブジェクト

- 例 1

- USER_DATSTORE

- バイナリ・ドキュメントのフィルタ処理 1

- user_dic属性 1

- USER_FILTERオブジェクト

- 例 1

- USER_LEXERオブジェクト 1

- ユーザー・ディクショナリ, 変更 1

- UTF8 1

- UTF8キャラクタ・セット 1 , 2 , 3 , 4

- ユーティリティ

- ctxload 1

V

- VARCHAR2列

- 索引付け 1

- verb_adjective属性 1

- バージョン・ナンバー

- 表示 1

- 表示

- 演算子の拡張 1

- 演算子の優先順位 1

- ビュー

- CTX_AUTO_OPTIMIZE_INDEXES 1

- CTX_AUTO_OPTIMIZE_STATUS 1

- CTX_CLASSES 1 , 2 , 3 , 4 , 5 , 6

- CTX_INDEX_ERRORS 1

- CTX_INDEX_OBJECTS 1

- CTX_INDEX_SUB_LEXER 1

- CTX_INDEX_SUB_LEXERS 1

- CTX_INDEX_SUB_LEXERS_VALUES 1

- CTX_INDEX_VALUES 1

- CTX_INDEXES 1

- CTX_OBJECT_ATTRIBUTE_LOV 1

- CTX_OBJECT_ATTRIBUTES 1

- CTX_OBJECTS 1

- CTX_PARAMETERS 1

- CTX_PENDING 1

- CTX_PREFERENCE_VALUES 1

- CTX_PREFERENCES 1

- CTX_SECTION_GROUPS 1

- CTX_SECTIONS 1

- CTX_SQES 1

- CTX_STOPLISTS 1

- CTX_STOPWORDS 1

- CTX_SUB_LEXERS 1

- CTX_THESAURI 1

- CTX_TRACE_VALUES 1

- CTX_USER_AUTO_OPTIMIZE_STATUS 1

- CTX_USER_INDEX_ERRORS 1

- CTX_USER_INDEX_OBJECTS 1

- CTX_USER_INDEX_SET_INDEXES 1

- CTX_USER_INDEX_SETS 1

- CTX_USER_INDEX_SUB_LEXERS 1

- CTX_USER_INDEX_VALUES 1

- CTX_USER_INDEXES 1

- CTX_USER_PENDING 1

- CTX_USER_PREFERENCE_VALUES 1

- CTX_USER_PREFERENCES 1

- CTX_USER_SECTION_GROUPS 1

- CTX_USER_SECTIONS 1

- CTX_USER_SQES 1 , 2

- CTX_USER_STOPLISTS 1

- CTX_USER_STOPWORDS 1

- CTX_USER_SUB_LEXERS 1

- CTX_USER_THES_PHRASES 1

- CTX_USER_THESAURI 1

- CTX_VERSION 1

- フィールド・セクションに対するvisibleフラグ 1

- フィールド・セクションのvisibleフラグ 1

W

- WEIGHT演算子

- ストップワード変換 1

- whitespace属性 1

- wildcard_maxterms属性 1

- WILDCARD_TABタイプ 1

- ワイルド・カード問合せ

- パフォーマンスの向上 1

- ワイルドカード検索

- パフォーマンスの向上 1

- WITHIN演算子

- 属性セクション 1

- 制限事項 1

- ネスト 1

- 優先順位 1

- ストップワード変換 1

- ワードの形式

- 元の形式および正規化された形式 1

- WORLD_LEXERタイプ 1 , 2

X

- xml_enable 1

- XML_SECTION_GROUP

- 例 1

- XMLドキュメント

- 属性セクション 1

- ドキュメント・タイプ別のセクション 1

- 問合せ 1

- XMLIndex 1

- XMLレポートの出力形式 1 , 2 , 3 , 4 , 5

- XML検索 1

- XML検索索引 1

- XMLセクション化 1

Z

- ZHS16CGB231280キャラクタ・セット 1

- ZHS16GBKキャラクタ・セット 1

- ZHS32GB18030キャラクタ・セット 1

- ZHT16BIG5キャラクタ・セット 1

- ZHT16HKSCSキャラクタ・セット 1

- ZHT16MSWIN950キャラクタ・セット 1

- ZHT32EUCキャラクタ・セット 1

- ZHT32TRISキャラクタ・セット 1

- ゾーン・セクション

- 動的な追加 1

- 作成 1

- 動的な追加の例 1

- 問合せ 1

- 繰返し 1

Oracleの法律上の注意点

コピーライト

Copyright © 1994-2017, Oracle and/or its affiliates. All rights reserved.

ライセンス制約の保証と結果的に生じる損害の免責

このソフトウェアおよび関連ドキュメントの使用と開示は、ライセンス契約の制約条件に従うものとし、知的財産に関する法律により保護されています。ライセンス契約で明示的に許諾されている場合もしくは法律によって認められている場合を除き、形式、手段に関係なく、いかなる部分も使用、複写、複製、翻訳、放送、修正、ライセンス供与、送信、配布、発表、実行、公開または表示することはできません。このソフトウェアのリバース・エンジニアリング、逆アセンブル、逆コンパイルは互換性のために法律によって規定されている場合を除き、禁止されています。

保証免責

ここに記載された情報は予告なしに変更される場合があります。また、誤りが無いことの保証はいたしかねます。誤りを見つけた場合は、オラクルまでご連絡ください。

制限付権利について

このソフトウェアまたは関連ドキュメントを、米国政府機関もしくは米国政府機関に代わってこのソフトウェアまたは関連ドキュメントをライセンスされた者に提供する場合は、次の通知が適用されます。

U.S. GOVERNMENT END USERS: Oracle programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, delivered to U.S. Government end users are "commercial computer software" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations. As such, use, duplication, disclosure, modification, and adaptation of the programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, shall be subject to license terms and license restrictions applicable to the programs. No other rights are granted to the U.S. Government.

危険な用途への使用について

このソフトウェアまたはハードウェアは様々な情報管理アプリケーションでの一般的な使用のために開発されたものです。このソフトウェアまたはハードウェアは、危険が伴うアプリケーション(人的傷害を発生させる可能性があるアプリケーションを含む)への用途を目的として開発されていません。このソフトウェアまたはハードウェアを危険が伴うアプリケーションで使用する際、安全に使用するために、適切な安全装置、バックアップ、冗長性(redundancy)、その他の対策を講じることは使用者の責任となります。このソフトウェアまたはハードウェアを危険が伴うアプリケーションで使用したことに起因して損害が発生しても、Oracle Corporationおよびその関連会社は一切の責任を負いかねます。

商標と登録商標について

OracleおよびJavaはオラクルおよびその関連会社の登録商標です。その他の社名、商品名等は各社の商標または登録商標である場合があります。

Intel、Intel Xeonは、Intel Corporationの商標または登録商標です。すべてのSPARCの商標はライセンスをもとに使用し、SPARC International, Inc.の商標または登録商標です。AMD、Opteron、AMDロゴ、AMD Opteronロゴは、Advanced Micro Devices, Inc.の商標または登録商標です。UNIXは、The Open Groupの登録商標です。

第三者のコンテンツ、製品、サービスに対する免責事項

このソフトウェアまたはハードウェア、そしてドキュメントは、第三者のコンテンツ、製品、サービスへのアクセス、あるいはそれらに関する情報を提供することがあります。適用されるお客様とOracle Corporationとの間の契約に別段の定めがある場合を除いて、Oracle Corporationおよびその関連会社は、第三者のコンテンツ、製品、サービスに関して一切の責任を負わず、いかなる保証もいたしません。適用されるお客様とOracle Corporationとの間の契約に定めがある場合を除いて、Oracle Corporationおよびその関連会社は、第三者のコンテンツ、製品、サービスへのアクセスまたは使用によって損失、費用、あるいは損害が発生しても一切の責任を負いかねます。

Pre-General Availability (一般提供前)版のドキュメントについて

このドキュメントがPre-General Availability (一般提供前)版の場合:

このドキュメントはPre-General Availability (一般提供前)版であり、デモおよび暫定使用のみを目的としたものです。このソフトウェアを使用するハードウェアに限定するものではありません。Oracle Corporationおよびその関連会社は、このドキュメントに関して一切の責任を負わず、いかなる保証もいたしません。また、このドキュメントを使用したことによって損失、費用、あるいは損害が発生しても、一切の責任を負いかねます。

非公開のPre-General Availability (一般提供前)版のドキュメントについて

このドキュメントが非公開のPre-General Availability (一般提供前)版の場合:

このドキュメントに含まれる情報は、情報の共有のみを目的としたものであって、顧客諮問委員会(Customer Advisory Board)のメンバーとしてのお客様の立場でのみ、またはお客様のPre-General Availability Trial Agreement (Pre-GAトライアル契約)のみに従って検討されるべきものとします。マテリアル、コード、または機能の提供をお約束するものではなく、購入決定を行う際の判断材料とすべきではありません。このドキュメントに記載されている特徴または機能の開発、リリースおよび時期については、オラクルの裁量により決定されます。

このドキュメントには、ソフトウェアまたは印刷物などの形式を問わず、オラクルが独占的な権利を有する財産的情報が含まれています。この機密資料へのアクセスと使用は、お客様とオラクルとの間で締結され、お客様が遵守に同意した、Oracle Master Agreement、Oracle License and Oracle Services Agreement (オラクル・ライセンスおよびサービスに関する契約書)、Oracle Partner Network Agreement、Oracle Distribution Agreementまたはその他のライセンス契約の条件に従うものとします。このドキュメントとその内容の開示、コピー、複製および配布には、オラクルによる事前の承諾を必要とします。このドキュメントはライセンス契約の一部となるものではなく、オラクルおよびその子会社や関連会社との契約を構成するものではありません。

ドキュメントのアクセシビリティ

オラクルのアクセシビリティについての詳細情報は、Oracle Accessibility ProgramのWebサイト(http://www.oracle.com/pls/topic/lookup?ctx=acc&id=docacc)を参照してください。

Oracle Supportへのアクセス

サポートをご契約のお客様には、My Oracle Supportを通して電子支援サービスを提供しています。詳細情報は(http://www.oracle.com/pls/topic/lookup?ctx=acc&id=info)か、聴覚に障害のあるお客様は(http://www.oracle.com/pls/topic/lookup?ctx=acc&id=trs)を参照してください。