The following example assumes that the table of queries profiles has a CTXRULE index associated with it. It also assumes that the table newsfeed contains a set of news articles to be categorized.
This example loops through the newsfeed table, categorizing each article using the MATCHES operator. The results are stored in the results table.
PROMPT Populate the category table based on newsfeed articles
PROMPT
set serveroutput on;
declare
mypk number;
mytitle varchar2(1000);
myarticles clob;
mycategory varchar2(100);
cursor doccur is select pk,title,articles from newsfeed;
cursor mycur is select category from profiles where matches(rule, myarticles)>0;
cursor rescur is select category, pk, title from results order by category,pk;
begin
dbms_output.enable(1000000);
open doccur;
loop
fetch doccur into mypk, mytitle, myarticles;
exit when doccur%notfound;
open mycur;
loop
fetch mycur into mycategory;
exit when mycur%notfound;
insert into results values(mycategory, mypk, mytitle);
end loop;
close mycur;
commit;
end loop;
close doccur;
commit;
end;
The following example displays the categorized articles by category.
PROMPT display the list of articles for every category
PROMPT
set serveroutput on;
declare
mypk number;
mytitle varchar2(1000);
mycategory varchar2(100);
cursor catcur is select category from profiles order by category;
cursor rescur is select pk, title from results where category=mycategory order by pk;
begin
dbms_output.enable(1000000);
open catcur;
loop
fetch catcur into mycategory;
exit when catcur%notfound;
dbms_output.put_line('********** CATEGORY: '||mycategory||' *************');
open rescur;
loop
fetch rescur into mypk, mytitle;
exit when rescur%notfound;
dbms_output.put_line('** ('||mypk||'). '||mytitle);
end loop;
close rescur;
dbms_output.put_line('**');
dbms_output.put_line('*******************************************************');
end loop;
close catcur;
end;
Classifying Documents in Oracle Text for more extended classification examples