zoukankan      html  css  js  c++  java
  • Oracle全文检索配置与实践

        在Web项目中使用Oracle全文检索的话,首先要进行Oracle数据库相关表的全文检索配置,所做的准备工作就是要给当前使用用户赋予ctx_ddl包操作权限,有了权限才能进行所要操作表的全文检索配置,接下来看一下具体的配置方法。

    1、创建分析器。

        分析器就是用来将需要检索的记录,按照一定的方式进行词组拆分,然后存放在索引表中。检索的时候根据索引表中存放的拆分词组,对传入的关键字进行匹配,并返回匹配结果。

        oracle text中的分析器有3种:

        (1)basic_lexer:只能根据空格和标点来进行拆分。

        (2)chinese_vgram_lexer:专门的汉语分析器,按字单元进行拆分。这种方式的好处是能够将所有有可能的词组全部保存进索引表,使得数据不会遗漏。

        (3)chinese_lexer:一种新的汉语分析器,能够认识大部分常用的汉语词汇,并按常用词汇进行拆分存储。

        每一种分析器都有它最适合的应用环境,这个要根据自己数据库的编码方式和数据存储情况进行选择。

        我的表结构如下图:

    我要对info字段进行全文检索,info字段中大多存储的时中文介绍信息,选择chinese_vgram_lexer分析器最合适,创建分析器的命令:

    exec ctx_ddl.create_preference ('my_lexer','chinese_vgram_lexer');

    或者:

    beigin 

    ctx_ddl.create_preference ('my_lexer','chinese_vgram_lexer');

    end;

    接下来如果根据项目需求需要过滤词组的话再进行创建过滤词组,不需要的话就可以忽略了。

    2、创建索引

        我要对TOUR_STRATEGY表中的info字段进行检索,接下来就要对info字段建立索引,建立索引的命令:

    create index TOUR_STRATEGY_INDEX on TOUR_STRATEGY(info) indextype is CTXSYS.CONTEXT parameters('lexer my_lexer ');

    索引创建成功以后,就可以在项目中使用了。

    select * from tour_strategy where contains(info,'乘物')>0;

    3、索引与数据变化同步

    当我们需要修改tour_strategy表中的数据,比如添加、删除、更新等操作时,TOUR_STRATEGY_INDEX索引是不会同步更新数据的,需要我们在程序中手动的更新,可以写一个oracle的触发器,当添加、删除、修改操作时,进行索引更新。也可以定时进行更新。更新命令:

    exec ctx_ddl.sync_index('yu_test_index');

    或者:

    begin

    ctx_ddl.sync_index('yu_test_index');

    end;

    另外,如果前面创建全文索引的时候带上了参数“sync(on commit)”,则同步不需要手工去执行,当数据变动时,会自动进行同步操作;操作命令:

     create index TOUR_STRATEGY_INDEX on TOUR_STRATEGY(info) indextype is CTXSYS.CONTEXT parameters('lexer my_lexer sync(on commit)');

  • 相关阅读:
    JVM 综述
    看 Netty 在 Dubbo 中如何应用
    Netty 心跳服务之 IdleStateHandler 源码分析
    Netty 高性能之道
    Netty 解码器抽象父类 ByteToMessageDecoder 源码解析
    Netty 源码剖析之 unSafe.write 方法
    Netty 出站缓冲区 ChannelOutboundBuffer 源码解析(isWritable 属性的重要性)
    Netty 源码剖析之 unSafe.read 方法
    Netty 内存回收之 noCleaner 策略
    Netty 源码阅读的思考------耗时业务到底该如何处理
  • 原文地址:https://www.cnblogs.com/sd-axin/p/8026517.html
Copyright © 2011-2022 走看看