使用Oracle Text构建全文搜索应用程序(2)
Oracle Text 具有适合不同用途的不同索引类型。对于大型文档的全文搜索,适合使用 CONTEXT 索引类型。该索引进程包括以下几个阶段:
◆数据检索:只是将数据从数据存储(例如 Web 页面、数据库大型对象或本地文件系统)中取出,然后作为数据流传送到下一个阶段。
◆过滤:过滤器负责将各种文件格式的数据转换为纯文本格式。索引管道中的其他组件只能处理纯文本数据,不能识别 Microsoft Word 或 Excel 等文件格式。
◆分段:分段器添加关于原始数据项结构的元数据。
◆词法分析:根据数据项的语言将字符流分为几个字词。
◆索引:最后一个阶段将关键字添加到实际索引中。
索引构建完成后,应用程序即可通过普通的 SQL 查询执行最终用户输入的搜索。
安装 Oracle Text
在默认情况下,Oracle Text 随 Oracle 数据库 XE 一起安装。如何使用的是其他数据库版本,您需要自己安装 Oracle Text 功能。安装了此功能后,您只需创建一个普通的数据库用户,并赋予该用户 CTXAPP 角色。这样,用户即可执行特定的索引管理过程:
CREATE USER ot1 IDENTIFIED BY ot1; GRANT connect,resource, ctxapp TO ot1;
文件索引
此处,您要创建一个文本表,用于为存储在问题跟踪系统中的附加文件内容建立索引。附加文件存储在文件系统中。除了应用程序的数据模型所需的列之外,文本基表还包括一个绝对文件路径和一个格式列。
CREATE TABLE files ( id NUMBER PRIMARY KEY, issue_id NUMBER, path VARCHAR(255) UNIQUE, ot_format VARCHAR(6) ); INSERT INTO files VALUES (1, 1, /tmp/oracletext/found1.txt, NULL); INSERT INTO files VALUES (2, 2, /tmp/oracletext/found2.doc, NULL); INSERT INTO files VALUES (3, 2, /tmp/oracletext/notfound.txt, IGNORE);
此处 ot_format 的值是 Oracle Text 在索引过程中解析出来的。NULL 值表明系统会为文件自动选择一个过滤器,而如果值为 IGNORE,系统会跳过整个文件。
可以使用以下语句创建文本索引:
CREATE INDEX file_index ON files(path) INDEXTYPE IS ctxsys.context PARAMETERS (datastore ctxsys.file_datastore format column ot_format);
该语句将启动索引进程,索引进程将通过存储在基表中的路径在文件系统中检索文件,然后对内容进行过滤并建立索引。这样便创建了一个区分大小写并具有精确匹配语义的 CONTEXT 索引。该索引进程可以多种方式进行自定义,例如支持前缀和后缀匹配。
虽然大部分时间过滤阶段无需为每个文件指定文件格式即可很好地运行,但是,在基表中添加这一列可以对索引进程进行进一步控制。例如,使用格式列,您可以跳过某些文件类型不为其建立索引。当您只想正式支持应用程序中 Oracle Text 所支持的部分文件格式时,这一列非常有用。
相关新闻>>
- 发表评论
-
- 最新评论 更多>>