14 CTX_THESパッケージ
この章では、シソーラスを管理および参照するためのCTX_THES
パッケージの使用方法について説明します。これらのシソーラスのファンクションは、特に指定されていない場合は、ISO-2788およびANSI Z39.19規格に基づいています。
シソーラスへの情報の格納方法を理解しておくと、シソーラス演算子を使用した問合せを記述する際に役立ちます。また、シソーラスを使用して、英語とフランス語でのABOUT
問合せおよびドキュメント・テーマの生成に使用するナレッジ・ベースを拡張できます。
CTX_THES
には、次のストアド・プロシージャおよびファンクションが含まれています。
名前 | 説明 |
---|---|
シソーラス句を変更します。 |
|
シソーラスを名前変更または切り捨てます。 |
|
句のすべての上位語を戻します。 |
|
句のすべての上位汎用語を戻します。 |
|
句のすべての上位インスタンス語を戻します。 |
|
句のすべての上位部分語を戻します。 |
|
指定されたシソーラスに句を追加します。 |
|
2つの句の間にリレーションを作成します。 |
|
指定されたシソーラスを作成します。 |
|
句に対する新しい翻訳を作成します。 |
|
シソーラスから句を削除します。 |
|
2つの句の間のリレーションを削除します。 |
|
指定されたシソーラスをシソーラス表から削除します。 |
|
句に対する翻訳を削除します。 |
|
シソーラス表からシソーラスをエクスポートします。 |
|
シソーラス・リレーションの存在の有無をテストします。 |
|
シソーラス表にシソーラスをインポートします。 |
|
句のすべての下位語を戻します。 |
|
句のすべての下位汎用語を戻します。 |
|
句のすべての下位インスタンス語を戻します。 |
|
句のすべての下位部分語を戻します。 |
|
拡張ファンクションの出力スタイルを設定します。 |
|
句の優先語を戻します。 |
|
句の関連語を戻します。 |
|
句のスコープ・ノートを戻します。 |
|
句のシノニム語句を戻します。 |
|
句のすべての最上位語を戻します。 |
|
句の外国語の等価語を戻します。 |
|
句の外国語の等価語、句のシノニムおよびシノニムの外国語の等価語を戻します。 |
|
句の最上位語を戻します。 |
|
既存の翻訳を更新します。 |
ノート:
CTX_THES
パッケージのAPIは、スキーマまたは所有者名を接頭辞として使用する識別子をサポートしていません。
関連項目:
シソーラス演算子の詳細は、「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);
例
シソーラス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}
表結果
次の例は、表の結果を利用してbrown wolfに対する広義用語の検索を実行します。
set serveroutput on declare xtab ctx_thes.exp_tab; begin ctx_thes.bt(xtab, 'brown 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 BROWN WOLF BT WOLF BT CANINE BT ANIMAL
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;
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;
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;
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);
例
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);
例
次のコードは、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
優先語の指定を句から削除します。句はシノニム・リングに残ります。
(なし)
言語
翻訳を句から削除します。
オプションで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.14 DROP_TRANSLATION
このプロシージャを使用して、句に対する1つ以上の翻訳を削除します。
構文
CTX_THES.DROP_TRANSLATION (tname in varchar2, phrase in varchar2, language in varchar2 default null, translation in varchar2 default null);
例
次のコードは、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);
例
次の例では、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;
例
次の例では、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 BROWN WOLF NT GREY WOLF NT DOG (Canis familiaris) NT PIT BULL NT DASCHUND NT CHIHUAHUA NT HYENA (Canis mesomelas) NT COYOTE (Canis latrans)
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;
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;
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;
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 );
ノート
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 preferred term for automobile is: '||terms); end;
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}
14.25 SN
このファンクションは、指定された句のスコープ・ノートを戻します。
構文
CTX_THES.SN(phrase IN VARCHAR2, tname IN VARCHAR2 DEFAULT 'DEFAULT') RETURN VARCHAR2;
戻り値
このファンクションは、スコープ・ノートを文字列として戻します。
例
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
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}
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}
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}
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;