4.7 CTXRULE索引の作成
ドキュメント分類アプリケーションを作成するには、表または問合せにCTXRULE
索引を使用します。着信ドキュメントのストリームがコンテンツで分類されると、問合せによりカテゴリが定義されます。単一ドキュメントの分類には、MATCHES
演算子を使用できます。
CTXRULE
索引および単純なドキュメント分類アプリケーションを作成するには、次の手順に従います。
-
問合せの表を作成します。
カテゴリ名および問合せテキストを保持する
myqueries
表を作成し、この表に分類と各分類を定義する問合せを移入します。CREATE TABLE myqueries ( queryid NUMBER PRIMARY KEY, category VARCHAR2(30), query VARCHAR2(2000) );
たとえば、主題US Politics、MusicおよびSoccerの分類を考えてみます。
INSERT INTO myqueries VALUES(1, 'US Politics', 'democrat or republican'); INSERT INTO myqueries VALUES(2, 'Music', 'ABOUT(music)'); INSERT INTO myqueries VALUES(3, 'Soccer', 'ABOUT(soccer)');
ヒント:
ルール(または問合せ)の表の生成には、
CTX_CLS.TRAIN
プロシージャも使用できます。このプロシージャは入力としてドキュメント・トレーニング・セットを取ります。 -
CTXRULE
索引を作成します。CREATE INDEX
文を使用してCTXRULE
索引を作成し、必要に応じてレクサー、記憶域、セクション・グループおよびワードリストの各パラメータを指定します。CREATE INDEX myruleindex ON myqueries(query) INDEXTYPE IS CTXRULE PARAMETERS ('lexer lexer_pref storage storage_pref section group section_pref wordlist wordlist_pref');
-
ドキュメントを分類します。
MATCHES
演算子を使用してドキュメントを分類します。着信ドキュメントは表
news
に格納されるとします。CREATE TABLE news ( newsid NUMBER, author VARCHAR2(30), source VARCHAR2(30), article CLOB);
必要に応じて、
MATCHES
で「BEFORE INSERT」トリガーを作成して、各ドキュメントをそれぞれの分類に基づいて別の表news_route
にルーティングします。BEGIN -- find matching queries FOR c1 IN (select category from myqueries where MATCHES(query, :new.article)>0) LOOP INSERT INTO news_route(newsid, category) VALUES (:new.newsid, c1.category); END LOOP; END;
関連項目:
-
ドキュメントの分類および
CTXRULE
索引の詳細は、「Oracle Textでのドキュメントの分類」を参照してください