a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 110|回复: 0

[考试辅导] Oracle技术:创建并使用oracle全文搜索

[复制链接]
发表于 2012-8-4 14:06:19 | 显示全部楼层 |阅读模式
说明:使用全文索引需要使用词法分析器,什么叫词法分析器呢,如:你想搜索"中国人",那么数据库的底层就会给你以“中国”、“国人”等等进行解析去搜索,大概就是这样,oracle有几个可供选择的分析器,默认创建全文搜索时会默认有一个分析器,不过对中文搜索支持的不是太好,其中'chinese_vgram_lexer'分析器是对中文支持最好的,所以呢在创建全文搜索时应该要制定一个索引的解析器,之后就可以利用sql语句去根据建立的索引字段并利用contains(字段名称,'关键字')0 的函数去查询了,很简单,下面上代码:   --定义词法分析器BEGIN ctx_ddl.create_preference ('joblexer', 'chinese_vgram_lexer');、END;
. j# s  J' g& Q) s3 C  说明:'joblexer'代表你使用的定义的分析器的名称,名字可以随便写,便于创建索引时使用2 o& w1 f- [6 f2 b9 h$ u* C) U% N
  --创建全文索引并制定分析器CREATE INDEX 索引的名称 ON 表名(表字段) indextype is ctxsys.context parameters('lexer 自定义的分析器的代指名称');
. t1 [2 r7 v7 }5 v6 I2 o0 v  如:CREATE INDEX jobindex ON mr_job(name) indextype is ctxsys.context parameters('lexer joblexer');9 j& B7 i' [2 m( f/ F
  --删除索引(不想要了,可以执行这条语句删除)drop index jobindex force& @6 ?; b) B% k# t) E5 m- |  R
  --sql查询语句select j.name from mr_job j where contains(j.name,'服务员')0
+ h6 t" h) u: R8 m3 \  --同步索引BEGINctx_ddl.sync_index('jobindex');END;
: A, l6 O5 Z6 x; l, k  (当我们对表执行了删除、修改、增加的操作的话,就要对搜因进行一下跟新了,不更新的话,索引对以前的信息有效,搜索的还是以前的信息,更改的或者添加的就永远也搜不到,所以修改了或者添加了就需要更新下索引了)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-4 18:14 , Processed in 0.226761 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表