`
laies
  • 浏览: 240755 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

ORACLE 全文检索实例

    博客分类:
  • DB
阅读更多
以下是本人经过测试没有问题,按步骤逐步操作即可。
本人用oracle10g测试,注意nvarchar2()类型不支持索引。

/******************************************
* 全文说明:
* 1).tls4cs为应用用户
* 2).当前数据库中必须有CTXSYS用户和CTXAPP角色
******************************************/

/*1、使用具有sysdba权限的用户登录/
grant connect,resource to tls4cs;
grant ctxapp to tls4cs;
alter user tls4cs default role all;

/*2、通常ctxsys处于锁定状态,需要解锁ctxsys用户/
alter user ctxsys account unlock;

/*3、对象权限/
grant execute on ctx_ddl to tls4cs;

/*4、使用应用用户tls4cs连接,设置搜索器类型/
BEGIN
ctx_ddl.create_preference ('main_lexer','CHINESE_LEXER');
ctx_ddl.create_preference('mywordlist', 'BASIC_WORDLIST');
ctx_ddl.create_preference('mymds', 'MULTI_COLUMN_DATASTORE');
ctx_ddl.set_attribute('mywordlist','PREFIX_INDEX','TRUE'); ctx_ddl.set_attribute('mywordlist','PREFIX_MIN_LENGTH',1);
ctx_ddl.set_attribute('mywordlist','PREFIX_MAX_LENGTH', 5);
ctx_ddl.set_attribute('mywordlist','SUBSTRING_INDEX', 'YES');
ctx_ddl.set_attribute('mymds', 'columns', 'content,title');
END;
/

/***********************************************************
* 搜索器说明:
* 1)ctx_ddl.create_preference用于创建词法分析器名,他的名称为'main_lexer'
* 2)词法分析器有3种类型:
* 'CHINESE_VGRAM_LEXER'仅用于中文,提取标示符更大,无效标示符较多;
* 'CHINESE_LEXER' 仅用于中文,效率高一些更准确可靠一些;建议使用
* 'BASIC_LEXER'仅用于英文;
* 3)定义相关词表“BASIC_WORDLIST’;
* 4)数据存储分三种:
* 'DIRECT_DATASTORE'默认存储方式;
* 'URL_DATASTORE'用于数据源通过url的方式指定;
* 'MULTI_COLUMN_DATASTORE'用于多数据源使用同一个索引的情况;
* 5)'PREFIX_INDEX'词表禁用还是启动;
* 6)'PREFIX_MIN_LENGTH'词表的最小长度;
* 7)'PREFIX_MAX_LENGTH'词表的最大长度;
* 8)'SUBSTRING_INDEX'词组是否可以分解;
***********************************************************/

/*5、对某列建立文档CONTEXT索引,并且指定搜索器/过滤器/单词列表/
CREATE INDEX  idx_aritcle_content ON TABTEST(CONTENT) 
indextype is ctxsys.context parameters 
('DATASTORE mymds FILTER CTXSYS.INSO_FILTER  LEXER main_lexer WORDLIST mywordlist');

/*6、执行查询/
select * from TABTEST where contains(CONTENT,'检索,内容,项目')>0
//也加入一些表达式
select * from TABTEST where contains(CONTENT,'检索 or 内容 or 项目')>0
//同时可以通过准确度排序score(1),内容中1代表,两单词间距不超过10个单词的文本。
Select score(1),tb.id,tb.title,tb.content,tb.createdate from TABTEST tb where contains(CONTENT,'检索,内容',1)>0 order by score(1) desc

/*7、索引同步/
CREATE or replace procedure cont_sync_index as
    BEGIN
    ctx_ddl.sync_index('idx_aritcle_content');
    END;
/
VARIABLE jobno number;  
BEGIN
       DBMS_JOB.SUBMIT(:jobno,'cont_sync_index();',  
       SYSDATE, 'SYSDATE + (1/24/4)');  
       commit;  
END;  
/

/***********************************************************
* 同步任务说明:
* 1)通过任务执行idx_aritcle_content同步索引;
* 2) SYSDATE + (1/24/4) 代表15分钟后执行
***********************************************************/

/*8、索引优化/
CREATE or replace procedure cont_optimize_index as
  BEGIN
  ctx_ddl.optimize_index('idx_aritcle_content','FULL');
  END;
  /

VARIABLE jobno number;  
BEGIN
  DBMS_JOB.SUBMIT(:jobno,'cont_optimize_index();',  
  SYSDATE, 'SYSDATE + 1');  
  commit; 
END;
/

/***********************************************************
* 优化任务说明:
* 1)通过任务执行cont_optimize_index优化索引;
* 有三种优化参数以下官方解释:
* The “FAST” mode compacts fragmented rows but does not remove old data
* The “FULL” mode optimizes either the entire index or a portion of it, with old data removed
* The “TOKEN” mode perfoms a full optimization for a specific token
* 建议用full
* 2) SYSDATE + 1 代表从明天开始夜间12点执行;
***********************************************************/

/***********************************************************
* 任务时间对照表:
* 描述                    INTERVAL参数值
* 每天午夜12点            'TRUNC(SYSDATE + 1)'
* 每天早上8点30分         'TRUNC(SYSDATE + 1) + (8*60+30)/(24*60)'
* 每星期二中午12点         'NEXT_DAY(TRUNC(SYSDATE ), ''TUESDAY'' ) + 12/24'
* 每个月第一天的午夜12点    'TRUNC(LAST_DAY(SYSDATE ) + 1)'
* 每个季度最后一天的晚上11点 'TRUNC(ADD_MONTHS(SYSDATE + 2/24, 3 ), 'Q' ) -1/24'
* 每星期六和日早上6点10分  
*  'TRUNC(LEAST(NEXT_DAY(SYSDATE, ''SATURDAY"), NEXT_DAY(SYSDATE, "SUNDAY"))) + (6×60+10)/(24×60)'
***********************************************************/

缺优点:
1)如果建立数据量非常大,建立索引会比较慢,10条数据量用5个小时,还好是增量建索引。
如果每天上传数据量在2000条,同步大约需要索引5分钟。定期做优化,减少索引中零碎分词,能大大提高检索速度。
2)过滤器中能对特殊字符进行处理,如下#-+_@%^!!,@#¥&*()()。
3)压力全部在数据库服务器上。
4)搜索文字准确率高。
分享到:
评论
1 楼 394580844 2011-01-28  
很有帮助,谢谢

相关推荐

    setuptools-41.0.0-py2.py3-none-any.whl

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    Google Cloud Storage(使用gsutil下载)

    Google Cloud CLI安装包GoogleCloudSDKInstaller.exe

    setuptools-18.3.zip

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    罗兰贝格_xx业务计划与控制体系最终报告gltp.pptx

    罗兰贝格_xx业务计划与控制体系最终报告gltp.pptx

    基于JSP医院在线挂号管理系统源码.zip

    这个是一个JSP医院在线挂号管理系统,管理员角色包含以下功能:管理员登录,医生用户管理,修改密码,科室类别信息管理,医生信息管理,添加医生信息,查询医生信息,注册用户管理,黑名单管理,预约信息管理,查询预约信息,医生预约查询,预约信息统计,科室汇总统计等功能。患者角色包含以下功能:查看首页,患者登录,修改密码,修改个人资料,查看预约信息,查看医生信息,查看科室分类,医生查询,预约医生等功能。… 本项目实现的最终作用是基于JSP医院在线挂号管理系统 分为4个角色 第1个角色为管理员角色,实现了如下功能: - 修改密码 - 医生信息管理 - 医生用户管理 - 医生预约查询 - 查询医生信息 - 查询预约信息 - 注册用户管理 - 添加医生信息 - 科室汇总统计 - 科室类别信息管理 - 管理员登录 - 预约信息管理 - 预约信息统计 - 黑名单管理

    麦肯锡-年月―中国xx集团战略咨询项目建议书gltp.pptx

    麦肯锡-年月―中国xx集团战略咨询项目建议书gltp.pptx

    公开整理-各省碳排放数据集(1990-2022年).xlsx

    详细介绍及样例数据:https://blog.csdn.net/li514006030/article/details/138872006

    Screenshot_2024-05-14-22-47-39-925_com.alibaba.android.rimet.hznu.jpg

    Screenshot_2024-05-14-22-47-39-925_com.alibaba.android.rimet.hznu.jpg

    基于Python+Flask弹幕情感分析的直播高光时刻判断模型设计与系统实现+系统功能说明+全部资料齐全+部署文档.zip

    【资源说明】 基于Python+Flask弹幕情感分析的直播高光时刻判断模型设计与系统实现+系统功能说明+全部资料齐全+部署文档.zip基于Python+Flask弹幕情感分析的直播高光时刻判断模型设计与系统实现+系统功能说明+全部资料齐全+部署文档.zip 【备注】 1、该项目是个人高分项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 3、本项目适合计算机相关专业(人工智能、通信工程、自动化、电子信息、物联网等)的在校学生、老师或者企业员工下载使用,也可作为毕业设计、课程设计、作业、项目初期立项演示等,当然也适合小白学习进阶。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!

    Vue开发基于Vue + Node的外卖系统设计与实现【源码+lw+部署文档+讲解】

    内容概要:这个项目是基于Vue.js和Node.js的外卖系统的设计与实现,旨在帮助开发者通过实践掌握Vue.js和Node.js的应用,并了解外卖系统的开发流程和技术选型。该系统旨在提供一个完整的在线订餐平台,包括用户注册登录、浏览商家和菜单、下单支付、配送跟踪等功能,以提升用户的订餐体验。源码包含了前端Vue.js和后端Node.js的代码,部署文档详细介绍了系统的部署步骤和环境配置要求,讲解内容涵盖了系统的功能模块、技术选型理由、设计思路以及使用方法。 适合人群:对Vue.js和Node.js有一定了解,并希望通过实践项目提升技能的开发者。 能学到什么:①掌握Vue.js和Node.js的开发流程;②了解外卖系统的业务逻辑和实现方法;③学习前后端分离的开发模式;④了解部署和维护一个完整项目的流程。 阅读建议:本资源旨在帮助开发者通过实践项目掌握Vue.js和Node.js的应用,并了解外卖系统的开发流程。建议在学习过程中结合部署文档进行实践,并深入理解讲解内容中的技术原理和设计思路。同时,鼓励开发者根据实际需求对项目进行拓展和优化,以提升自己的技术水平。

    基于SSM+jsp的家居商城系统

    大学生毕业设计、大学生课程设计作业

    python企业编码管理的程序(可执行程序+源码).zip

    具体的操作步骤如下: (1)生成6位数字防伪编码。当用户在主程序界面中输入数字“1”菜单项时,将进入“生成6位数字防伪编码 (213563型)”的功能执行任务。此时要求输入生成防伪码的数量,可以根据需要输入生成防伪码的数量,如图2所示。按下<Enter>键,开始批量生成防伪码,生成后系统将提示用户生成了多少个注册码和生成文件的位置信息等,如图3所示。单击“确定”按钮,关闭提示信息。在屏幕上可以看到生成的防伪码信息,如图4所示。生成的文件在程序所在目录下的“codepath”文件夹下,名称为“scode1.txt”,如图5所示。

    Centos7-离线安装redis

    Centos7-离线安装redis

    基于JSP鲜花商城网站系统源码.zip

    这个是一个JSP鲜花商城网站系统,用户角色包含以下功能:用户登录与注册,修改个人信息,查看首页,查看分类,查看热销,查看订单,查看鲜花详情,加入购物车,提交订单等功能。管理员角色包含以下功能:订单管理,客户信息管理,鲜花管理,鲜花类目管理,管理员登录等功能。

    setuptools-3.5.1-py2.py3-none-any.whl

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    备自投动作不成功事故处理tp.pptx

    备自投动作不成功事故处理tp.pptx

    基于JSP户籍管理系统源码.zip

    这个是一个JSP户籍管理系统,管理员角色包含以下功能:管理员登陆,户籍管理,迁入管理,迁出管理,反馈投诉管理等功能。用户角色包含以下功能:用户登陆,户籍信息查看,迁入查询,反馈建议等功能。 本项目实现的最终作用是基于JSP户籍管理系统 分为2个角色 第1个角色为管理员角色,实现了如下功能: - 反馈投诉管理 - 户籍管理 - 管理员登陆 - 迁入管理 - 迁出管理 第2个角色为用户角色,实现了如下功能: - 反馈建议 - 户籍信息查看 - 用户登陆 - 迁入查询

    setuptools-36.4.0-py2.py3-none-any.whl

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    Pro Docker/如何使用容器服务进行开发和部署

    如何使用容器服务进行开发和部署

    java班级管理系统.zip

    java班级管理系统

Global site tag (gtag.js) - Google Analytics