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でのドキュメントの分類」を参照してください