• ORACLE全文检索文件路径版


    一、创建示例表

    CREATE TABLE T_FULLTEXT_DEMO(
            ID          NUMBER      NOT NULL,
            TITLE       VARCHAR2(
    100
    )   NULL,
            REMARK      VARCHAR2(
    200
    )   NULL,
            FILE_NAME   VARCHAR2(
    200
    )   NULL,
            CONSTRAINT T_FULLTEXT_DEMO_PK PRIMARY KEY ( ID ));
    二、对TITLEREMARK建立索引

    BEGIN
        CTXSYS.CTX_DDL.CREATE_PREFERENCE(
    'MYMDS','MULTI_COLUMN_DATASTORE');    
        CTXSYS.CTX_DDL.SET_ATTRIBUTE(
    'MYMDS', 'COLUMNS', 'TITLE, REMARK'
    );
    END;

    CREATE INDEX T_FULLTEXT_DEMO_IDX ON T_FULLTEXT_DEMO(TITLE) INDEXTYPE IS CTXSYS.CONTEXT PARAMETERS(
    'DATASTORE MYMDS'
    );
    三、建立存储选项参数、语法分析器

    BEGIN
       
    --CTX_DDL.DROP_PREFERENCE('MY_LEXER');
       
    --CTX_DDL.DROP_PREFERENCE('MY_DATASTORE_PREFS');
        CTX_DDL.CREATE_PREFERENCE (
    'MY_LEXER', 'CHINESE_VGRAM_LEXER');  
        CTX_DDL.CREATE_PREFERENCE (
    'MY_DATASTORE_PREFS', 'FILE_DATASTORE'
    ); 
        CTX_DDL.SET_ATTRIBUTE (
    'MY_DATASTORE_PREFS', 'PATH', 'F:\TEMP'
    );
    END;

    四、对文档建立全文检索索引

    CREATE INDEX T_FULLTEXT_DEMO_FILE_IDX ON T_FULLTEXT_DEMO(FILE_NAME)
    INDEXTYPE IS CTXSYS.CONTEXT  PARAMETERS(
    'DATASTORE MY_DATASTORE_PREFS LEXER MY_LEXER');
    五、插入测试数据

    INSERT INTO T_FULLTEXT_DEMO(ID,TITLE,REMARK,FILE_NAME) VALUES(
    1,'德鲁克的《管理:任务、责任、实践》','管理类书籍','WordDoc1.doc');
    INSERT INTO T_FULLTEXT_DEMO(ID,TITLE,REMARK,FILE_NAME) VALUES(
    2,'PB控件的属性事件和函数','PB技术书籍','PB控件的属性事件和函数.pdf'
    );
    INSERT INTO T_FULLTEXT_DEMO(ID,TITLE,REMARK,FILE_NAME) VALUES(
    3,'微软产品报价','微软软件产品报价','微软产品报价.xls'
    );
    INSERT INTO T_FULLTEXT_DEMO(ID,TITLE,REMARK,FILE_NAME)
    VALUES(4,'JavaScript 5.5','JavaScript语言帮助文档','JavaScript 5.5.CHM'
    );
    INSERT INTO T_FULLTEXT_DEMO(ID,TITLE,REMARK,FILE_NAME) VALUES(
    5,'ASCII','ASCII码的各种进制表示方式和代表的意思','ASCII.htm'
    );
    INSERT INTO T_FULLTEXT_DEMO(ID,TITLE,REMARK,FILE_NAME) VALUES(
    6,'UML数据库建模','UML数据库建模的相关知识','UML数据库建模.ppt'
    );

     

     

    六、同步索引和优化索引若此时检索,应没有数据。
    select * from T_FULLTEXT_DEMOwhere contains(TITLE,'管理')>0;

    需要将索引同步

    BEGIN 

    CTXSYS.CTX_DDL.SYNC_INDEX('T_FULLTEXT_DEMO_FILE_IDX');  CTXSYS.CTX_DDL.SYNC_INDEX('T_FULLTEXT_DEMO_IDX');

    END;

    七、测试全文索引

    select * from T_FULLTEXT_DEMO where contains(TITLE,'管理')>0;
    select * from T_FULLTEXT_DEMO where contains(FILE_NAME,
    '德鲁克')>0
    ;

    八、优化索引

    BEGIN

        CTXSYS.CTX_DDL.OPTIMIZE_INDEX('T_FULLTEXT_DEMO_FILE_IDX','FULL'); 

       CTXSYS.CTX_DDL.OPTIMIZE_INDEX('T_FULLTEXT_DEMO_IDX','FULL');

    END;

  • 相关阅读:
    虚拟机VirtualBox 共享挂载问题:mount: /mnt/xxx: wrong fs type, bad option, bad superblock on xxx
    git 设置和取消代理
    (转载)数据库连接池到底应该设多大?这篇文章可能会颠覆你的认知
    关于golang中IO相关的Buffer类浅析
    (转)golang获取当前时间、时间戳和时间字符串及它们之间的相互转换
    FFmpeg常用命令
    go cmd nohup 的坑
    Nginx配置详解(转)
    记录一次go性能调试的过程
    github徽标引入
  • 原文地址:https://www.cnblogs.com/tracy/p/2058023.html
Copyright © 2020-2023  润新知