使用Oracle Text构建全文搜索应用程序
2007-05-08 12:09:32 来源:WEB开发网核心提示: ot_version 列为索引列,可用于强制为特定文档重新建立索引,使用Oracle Text构建全文搜索应用程序(5),该表可使用测试数据填充:INSERT INTO issues VALUES (1, 'Jane', 'Text does not make te
ot_version 列为索引列,可用于强制为特定文档重新建立索引。该表可使用测试数据填充:
INSERT INTO issues VALUES (1, 'Jane', 'Text does not make tea',
'Oracle Text is unable to make morning tea', 1);
INSERT INTO issues VALUES (2, 'John', 'It comes in the wrong color',
'I want to have Text in pink', 1);
用户索引
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.set_attribute('issue_store', 'output_type', 'CLOB');
END;
/
-- index issues
CREATE INDEX issue_index ON issues(ot_version) INDEXTYPE IS ctxsys.context
PARAMETERS ('datastore issue_store');
搜索
- ››使用linux中的quota教程
- ››oracle 中 UPDATE nowait 的使用方法
- ››Oracle ORA-12560解决方法
- ››Oracle 10g RAC 常用维护命令
- ››Oracle如何在ASM中定位文件的分布
- ››使用jxl生成带动态折线图的excel
- ››Oracle的DBMS_RANDOM.STRING 的用法
- ››oracle 外部表导入时间日期类型数据,多字段导入
- ››Oracle中查找重复记录
- ››oracle修改用户登录密码
- ››Oracle创建删除用户、角色、表空间、导入导出等命...
- ››Oracle中登陆时报ORA-28000: the account is lock...
更多精彩
赞助商链接