Oracle 全文索引
艺俊
希望通过自己的努力可以一步一步的慢慢向技术大牛靠近~
展开
-
Oracle全文索引之一 原理
原理Oracle实现全文检索,其机制其实很简单。即通过Oracle专利的词法分析器(lexer),将文章中所有的表意单元(Oracle 称为 term)找出来,记录在一组 以dr$开头的表中,同时记下该term出现的位置、次数、hash 值等信息。检索时,Oracle 从这组表中查找相应的term,并计算其出现频率,根据某个算法来计算每个文档的得分(score),即所谓的‘匹配率’。而lexer则是原创 2017-04-19 14:39:03 · 568 阅读 · 0 评论 -
Oracle全文索引之二 创建
创建创建索引的准备工作测试环境在测试用户myoralce用户下执行:create table YU_TEST( id number, name varchar2(50) );插入测试数据:insert into YU_TEST values(1,'重庆市沙坪坝区'); insert into YU_TEST values原创 2017-04-20 14:27:34 · 794 阅读 · 0 评论 -
Oracle全文索引之三 检索
检索可以用contains来使用oracle的全文检索:select * from YU_TEST where contains(name,'重庆')>0; 这样查出来的数据是没有经过排序的,有时候我们的需求是按照关键字的匹配程度排序,使用下面的语句:select score(1),y.* from YU_TEST y where contains(name,'重庆',1)>0 order by原创 2017-04-20 14:28:04 · 381 阅读 · 0 评论 -
Oracle全文索引之四 维护
索引的维护对于CTXSYS.CONTEXT索引,当应用程序对基表进行DML操作后,对基表的索引维护是必须的。索引维护包括索引同步和索引优化。在索引建好后,我们可以在该用户下查到Oracle自动产生了以下几个表:(假设索引名为myindex): DRmyindexmyindexI、DRmyindexmyindexK、DRmyindexmyindexR、DRmyindexmyindexN其中以I表最重原创 2017-04-20 15:07:42 · 2895 阅读 · 0 评论 -
Oracle全文索引之五 测试
测试在前面的基础上,myoracle用户下执行检索:select * from yu_test where contains(name,'重庆')>0结果:ID NAME 1 重庆市沙坪坝区 4 重庆市两江新区使用chinese_vgram_lexer分析器和chinese_lexer分析器比较执行如下sql查看不同分析器的分词情况:SELECT token_text, to原创 2017-04-20 15:08:09 · 378 阅读 · 0 评论