科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道用Oracle Text构建全文搜索应用程序(2)

用Oracle Text构建全文搜索应用程序(2)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

Oracle Text 是一种功能强大的搜索技术,它内置于 Oracle 数据库的所有版本(包括免费提供的快捷版 (XE))中。它所提供的开发 API 使软件开发人员能够轻松实现功能齐备的内容搜索应用程序。

作者:changelive 来源:赛迪网技术社区 2007年9月5日

关键字: 程序 搜索 数据库 ORACLE

  • 评论
  • 分享微博
  • 分享邮件

文件索引 .*P4Tlwq  
1EVxO&'M`  
  此处,您要创建一个文本表,用于为存储在问题跟踪系统中的附加文件内容建立索引。附加文件存储在文件系统中。除了应用程序的数据模型所需的列之外,文本基表还包括一个绝对文件路径和一个格式列。 K(RkA $p  
ZMA#r^p   
X)0cfVR3a  
LygSrEa>b  
  CREATE TABLE files ( H];W?nwV  
  id NUMBER PRIMARY KEY, 82LM}8   
  issue_id NUMBER, ,mkU8Jd7  
  path VARCHAR(255) UNIQUE, /J^\pD>'Q[  
  ot_format VARCHAR(6) +#.r/2{F^  
  ); 4 |q |`$a0  
  INSERT INTO files VALUES (1, 1, '/tmp/oracletext/found1.txt', NULL); <TJl;YKa7  
  INSERT INTO files VALUES (2, 2, '/tmp/oracletext/found2.doc', NULL); FEvsl+  
  INSERT INTO files VALUES (3, 2, '/tmp/oracletext/notfound.txt', 'IGNORE'); e@Wgea  
N-NYq8g  
;1O`T#8'^  
  此处 ot_format 的值是 Oracle Text 在索引过程中解析出来的。NULL 值表明系统会为文件自动选择一个过滤器,而如果值为 IGNORE,系统会跳过整个文件。 ]Mg0-tS  
+ BD8'C)  
  可以使用以下语句创建文本索引: 6F\T(U3E  
T%D=fYq!  
  CREATE INDEX file_index ON files(path) INDEXTYPE IS ctxsys.context ;RYjxZ"Ds  
  PARAMETERS ('datastore ctxsys.file_datastore format column ot_format'); St,&h+o  
|uH<24(w<  
x`4VMG=j  
  该语句将启动索引进程,索引进程将通过存储在基表中的路径在文件系统中检索文件,然后对内容进行过滤并建立索引。这样便创建了一个区分大小写并具有精确匹配语义的 CONTEXT 索引。该索引进程可以多种方式进行自定义,例如支持前缀和后缀匹配。 \'4$  
;BJ yN5=  
  虽然大部分时间过滤阶段无需为每个文件指定文件格式即可很好地运行,但是,在基表中添加这一列可以对索引进程进行进一步控制。例如,使用格式列,您可以跳过某些文件类型不为其建立索引。当您只想正式支持应用程序中 Oracle Text 所支持的部分文件格式时,这一列非常有用。 IKJIj#}*  
H1dq;M  
  Oracle Text 还可用于元数据的全文搜索。在示例应用程序中,有一个名为 issues 用于存储问题元数据的表。该表的定义如下: ^N!LQ]'A2  
,r^+{#7["  
  CREATE TABLE issues (  HTl=/  
  id NUMBER, "O;Ki.6 <  
  summary VARCHAR(120), V9[`.8E B  
  description CLOB, c}c2+$w  
  author VARCHAR(80), Q"/-"cHtJ  
  ot_version VARCHAR(10) CaB`x%tE  
  ); o-F+n`  
PgkR!I7})  
Yfm;#;Vj  
  ot_version 列为索引列,可用于强制为特定文档重新建立索引。该表可使用测试数据填充: Lkp. SSX  
?lCQv%  
  INSERT INTO issues VALUES (1, 'Jane', 'Text does not make tea', h"4x$  
  'Oracle Text is unable to make morning tea', 1); _7\;Xk}  
  INSERT INTO issues VALUES (2, 'John', 'It comes in the wrong color', &0rCFwFr2  
  'I want to have Text in pink', 1); w\zoGsV  
' />D,r  
Ip/ JjRP  

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章