WEB开发网
开发学院数据库Oracle 使用Oracle Text构建全文搜索应用程序 阅读

使用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');

搜索

上一页  1 2 3 4 5 6  下一页

Tags:使用 Oracle Text

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接