6 CTX_ANLパッケージ
この章の内容は以下のとおりです。
6.1 CTX_ANLパッケージのプロシージャについて
CTX_ANL
PL/SQLパッケージは、AUTO_LEXERとともに使用し、レクサーからカスタム・ディクショナリを追加および削除するプロシージャが用意されています。カスタム・ディクショナリは、学問や業界の専門分野に特化して作成されたものであることがあります。ほとんどの場合、Oracle Textに用意されているディクショナリだけで要件に十分対応できます。
関連項目:
AUTO_LEXERとサポートされている言語の詳細は、「AUTO_LEXER」を参照してください。
CTX_ANL
パッケージには、次のプロシージャが含まれています。
名前 | 説明 |
---|---|
カスタム・ディクショナリをレクサーに追加します。 |
|
カスタム・ディクショナリをレクサーから削除します。 |
ノート:
CTX_ANL
のプロシージャを使用できるのは、CTXSYS
ユーザーのみです。
CTX_ANL
パッケージのAPIは、スキーマまたは所有者名を接頭辞として使用する識別子をサポートしていません。
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つの要素単語をサポートします。
- 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; /
6.3 DROP_DICTIONARY
AUTO_LEXERからカスタム・ディクショナリを作成するには、このプロシージャを使用します。
構文
CTX_ANL.DROP_DICTIONARY( name in VARCHAR2, language in VARCHAR2, dictionary in CLOB );
例
begin CTX_ANL.DROP_DICTIONARY('dict1', 'english', 'dictionary'); end;