使用Oracle Text构建全文搜索应用程序(4)
用户索引
Oracle Text 可为来自不同数据源的数据建立索引。Oracle Text 可用于问题跟踪系统,提供对问题元数据的全文搜索。在默认情况下,您可为单个列中的值建立索引,但是,如果要合并多个表的数据,您需要创建一个自定义的 PL/SQL 过滤器过程。我将演示如何创建这样的过程,这个过程将起到存储抽象的作用。然后,该索引进程将迭代文本表中所有的行,为每一行调用过滤器过程。过滤器过程将返回所有与问题相关的有待建立索引的文本。
-- declare indexing procedure
CREATE PACKAGE ot_search AS
PROCEDURE issue_filter(rid IN ROWID, tlob IN OUT NOCOPY CLOB);
END ot_search;
/
-- define indexing procedure
CREATE PACKAGE BODY ot_search AS
PROCEDURE issue_filter(rid IN ROWID, tlob IN OUT NOCOPY CLOB) IS
BEGIN
FOR c1 IN (SELECT author, summary, description FROM issues WHERE rowid = rid)
LOOP
dbms_lob.writeappend(tlob, LENGTH(c1.summary)+1, c1.summary || );
dbms_lob.writeappend(tlob, LENGTH(c1.author)+1, c1.author || );
dbms_lob.writeappend(tlob, LENGTH(c1.description), c1.description);
END LOOP;
END issue_filter;
END ot_search;
/
-- define datastore preference for issues
BEGIN
ctx_ddl.create_preference(issue_store, user_datastore);
ctx_ddl.set_attribute(issue_store, procedure, ot_search.issue_filter);
ctx_ddl.s
相关新闻>>
- 发表评论
-
- 最新评论 更多>>