The following example shows how to classify documents by defining simple categories, creating a CTXRULE
index, and using MATCHES
, using the CTXAPP
role user myuser
.
Connect as the CTXAPP
role user myuser
:
CONNECT myuser;
We must create a rule table and populate it with query rules. In this example, we create a table called queries
. Each row defines a category with an ID, and a rule which is a query string:
CREATE TABLE queries ( query_id NUMBER, query_string VARCHAR2(80) ); INSERT INTO queries VALUES (1, 'oracle'); INSERT INTO queries VALUES (2, 'larry or ellison'); INSERT INTO queries VALUES (3, 'oracle and text'); INSERT INTO queries VALUES (4, 'market share');
Create a CTXRULE
index as follows:
CREATE INDEX queryx ON queries(query_string) INDEXTYPE IS CTXSYS.CTXRULE;
Use the MATCHES
operator in the WHERE
clause of a SELECT
statement to match documents to queries and hence classify.
COLUMN query_string FORMAT a35; SELECT query_id,query_string FROM queries WHERE MATCHES(query_string, 'Oracle announced that its market share in databases increased over the last year.')>0; QUERY_ID QUERY_STRING ---------- ----------------------------------- 1 oracle 4 market share
As shown, the document string matches categories 1 and 4. With this classification you can perform an action, such as writing the document to a specific table or e-mailing a user.
Classifying Documents in Oracle Text for more extended classification examples