oracle全文索引(全文检索)的介绍,使用和创

Oracle 数据库中的全文搜索 阅读详情
AI摘要

本文介绍了Oracle数据库中的全文检索技术,包括不同类型的词法分析器及其适用场景,如何创建和维护全文索引,以及如何设置过滤词等内容。

全文索引

背景介绍:很多时候需要根据key words关键字去匹配对应的值,对于大量的数据而已,如果使用like,或者instr函数,速度则会很慢,这个时候,全文检索对比其他的模糊查询,有着明显的速度优势。但是因为分词,所以会占用的一定的空间。如果空间足够以及对速度有一样的需求,可以考虑全文检索。根据自身的需求而定。

Oracle的全文检索实现逻辑,通过lexer词法分析器,讲把值的term找出来。记录在一组的DR$开头的表里面(主要是DR$xxxI表),主要记录term的位置,frequency频率,hash等信息,oracle根据谓词,找到对应的term。

主要介绍三种自然语言的分析器

basic_lexer(默认的分析器):主要针对英语。有较高的处理效率,因为它只认空格和标点,所以对于汉语没有空格的情况不会分词

chinese_vgram_lexer: 专用汉语分析器,支持所有汉字字符集(ZHS16CGB231280 ZHS16GBK ZHT32EUC ZHT16BIG5 ZHT32TRIS ZHT16MSWIN950 ZHT16HKSCS UTF8)因为采用了分词的方法,可以查到所有的分词,效率差

chinese_lexer: 新汉语分析器,只支持utf8, 支持识别大部分的分词,但是会过滤掉很多无法识别的分词,因为这个原因也导致效率很高,如果数据库是zhs16gbk字符集,则只能使用Chinese vgram lexer.

Note:追求效率那么使用CHINESE_LEXER,如果追求准确度那么使用CHINESE_VGRAM_LEXER(推荐使用chinese_vgram_lexer)

 

 

建立步骤

全文检索的大部分都在CTX包里面

查看用户

select * from dba_users WHERE username='CTXSYS'

查看角色

select * from dba_roles WHERE ROLE = 'CTXAPP'

解锁

ALTER USER CTXSYS ACCOUNT UNLOCK;

角色授权:

GRANT CTXAPP TO TEST

根据需求选择lexer制定文本解析器

创建文本解析器

BEGIN

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

END;

/

删除文本解析器

BEGIN

   ctx_ddl.drop_preference ('my_lexer');

   end;


创建全文索引

CREATE INDEX  ind_lot ON lot(lot_id) indextype is ctxsys.context  parameters('lexer my_lexer');

删除全文索引

Drop index index_name force

 

索引同步维护

  begin

    ctx_ddl.sync_index('ind_lot');

    ctx_ddl.optimize_index('ind_lot','full');

END;



用法

ctx_ddl.sync_index(
CTX_WEB_ACION_BASIC IN VARCHAR2 DEFAULT NULL
memory IN VARCHAR2 DEFAULT NULL,
P2014_1010_1020 IN VARCHAR2 DEFAULT NULL
parallel_degree IN NUMBER DEFAULT 1)


ctx_ddl.sync_index('ind_lot','500M','p1')



也可以定时run job

Sync同步job

VARIABLE jobno number;

BEGIN

DBMS_JOB.SUBMIT(:jobno,'ctx_ddl.sync_index(''ind_lot'');',

SYSDATE, 'SYSDATE + (1/24/6)');

commit;

END;           

 Optimize索引

VARIABLE jobno number;

BEGIN

DBMS_JOB.SUBMIT(:jobno,'ctx_ddl.optimize_index(''ind_lot'',''FULL'');',

SYSDATE, 'SYSDATE + 1');

commit;        


测试查看数据

select * from lot where contains(lot_id,'北京')>0


补充:有时候需要指定过掉一些词(不会为这些词创建全文索引)

指定过滤词

 exec ctx_ddl.create_stoplist('北京') 





Oracle中文全文索引 环境Oracle 9.0.2 Oracle全文索引的基本知识一、历史背景Oracle数据库的全文检索技术已经非常完美,Oracle Text使Oracle9i具备了强大的文本检索能力和智能化的文本管理能力。Oracle Text是Oracle9i采用的新名称,在Oracle8/8i中它被称作Oracle interMedia Text,在Oracle8以前它的名称是Oracle 阅读详情

相关推荐

Oracle全文索引及定时任务(总结)

Oracle全文索引及定时任务(总结)全文索引一.建立索引前提二.设置分析器三.创建过滤词组四.创建全文索引五.查询索引建立详情六.测试索引效率索引定时任务(同步/优化)一.手动同步与优化二.定时同步与优化补充Interval参数值 全文索引 Oracle的全文检索实现逻辑,通过lexer词法分析器,把值的term找出来。相对于使用like,或者instr函数,速度有着明显的优势。但是因为分词,所以会占用的一定的空间。如果空间足够以及对速度有一样的需求,可以考虑全文检索。 一.建立索引前提 检查和设置数据

书本里的救赎 1326

Oracle 全文索引

缘由 我们经常需要对表的内容进行模糊查询,在数据量不算很大的情况下,使用起来还是没什么问题,因为不会出现明显的慢查询问题。但是当某些时候,单表数据量很大的时候,查询速度就会有明显的变慢问题。此时,我们优先应该考虑的方式是选用特长与全文搜索的技术栈,比如ElasticSearch服务。 BUT,有些时候事与愿违,因为一些列因素导致你只能在数据库的现状情况下优化这样的问题。Oracle的全文索引(Oracle9i 开始支持)可能会对你有帮助。 Oracle全文索引的基本知识 一、历史背景 Oracle数据库的

小单的博客专栏 4602

Oracle全文索引技术实现与优化

在全文搜索后,RANK函数通常用来根据匹配度对返回的结果集进行排序。这有助于呈现给用户更为相关和准确的搜索结果。RANK函数的基本语法是:这里,是基于全文检索返回的匹配度评分。全文检索是数据库管理的重要组成部分,它提高了文本数据的搜索效率和灵活性。Oracle通过CONTAINS子句和RANK函数为开发者提供了强大的全文搜索能力。这些工具使开发者能够根据实际需求来构建复杂的搜索功能,最终提高用户检索信息的准确性和效率。

weixin_42527589的博客 1284

文本列的性能优化?深入Oracle全文索引

全文索引通过分析和处理文本,将文档中的单词分解为词条(tokens),然后存储词条与其所在文档的映射关系。这使得数据库可以快速定位包含特定关键字的记录,而不必对所有文本逐字匹配。

dnuiking的博客 1048

oracle 全文检索

首先这里说oracle 全文检索,是针对我机器上的oracle 10g版本的。至少 10g 或以上的版本 适合这样来使用。 oracle 的全文检索,操作步骤为:将表中需要检索的字段,创建为全文检索的索引,然后通过select * from T where contains(F,'test',1)>0的语句进行全文检索,达到预期效果。 然后,oracle全文检索还是很强大的,能够检索文本啊、还有其他多种格式的文档。我做的测试只是针对数据库中的某一个字段的检索。比如针对地址表中的地址进行检索。

Nginx反向代理HTTPS服务报错排查:The plain HTTP request was sent to HTTPS port

在Web服务架构中,反向代理是连接客户端与后端应用的关键组件,它通过转发请求实现负载均衡和安全隔离。其工作原理涉及监听端口、解析协议头部,并根据配置将请求路由至上游服务器。这一机制的技术价值在于提升系统可扩展性、简化部署,并增强安全性。在HTTPS场景下,代理服务器需正确处理SSL/TLS终止与传递,若配置不当,常引发协议不匹配问题。例如,当Nginx将解密后的HTTP请求转发至期待HTTPS的后端,或客户端直接向SSL端口发送明文请求时,便会出现经典报错“The plain HTTP request wa

weixin_33391446的博客 394

oracle 11g全文索引,Oracle 如何创建和使用全文索引

不使用Oracle text功能,也有很多方法可以在Oracle数据库中搜索文本.可以使用标准的INSTR函数和LIKE操作符实现。SELECT *FROM mytext WHERE INSTR (thetext, 'Oracle') > 0;SELECT * FROM mytext WHERE thetext LIKE '%Oracle%';有很多时候,使用instr和like是很理想的,...

weixin_39834090的博客 429

YOLOV8主干改进方法:C2f-Dual——DualConv轻量化双卷积设计(附改进代码)

DualConv是一种创新的卷积网络结构,旨在构建轻量级的深度神经网络。它通过结合3×3和1×1的卷积核处理相同的输入特征映射通道,优化了信息处理和特征提取。DualConv利用组卷积技术高效排列卷积滤波器,大大降低了计算成本和参数数量。

m0_74890428的博客 4698

如何实现Oracle9iRealease2的全文检索

            如何实现Oracle9iRealease2的全文检索                                             

于仁嘉的博客 3249

手把手教你用微信小程序实现智能硬件音视频通话(含Linux/RTOS适配)

本文详细介绍了如何利用微信小程序硬件框架(WMPF)和音视频SDK,在智能硬件(包括Linux与RTOS设备)上实现音视频通话功能。文章从架构设计、设备端SDK集成、小程序VOIP插件开发到跨平台调试与性能优化,提供了全链路实战指南,帮助开发者打通微信小程序与嵌入式设备间的实时音视频通信。

ooo22的博客 329

Flink 作业报错——TaskManager连接不上

Flink 作业报错——TaskManager连接不上

lm223的博客 1900

Oracle全文索引

转自http://www.cnblogs.com/tracy/archive/2010/10/20/1856480.html,感谢原作者! 不使用Oracle text功能,也有很多方法可以在Oracle数据库中搜索文本.可以使用标准的INSTR函数和LIKE操作符实现。 SELECT *FROM mytext WHERE INSTR (thetext, 'Oracle') > 0; SE

bnuside的专栏 841

RAD Studio 10.4.2 安装避坑指南:从镜像加载到首次运行的全流程解析

本文提供了一份详尽的RAD Studio 10.4.2安装避坑指南,涵盖从镜像验证、文件提取到安装激活的全流程。重点解析了安装教程中常见的权限、路径及激活顺序等关键“坑点”,旨在帮助开发者,尤其是Delphi和C++Builder新手,一次性顺利完成安装与配置,确保开发环境稳定运行。

weixin_29224309的博客 327

oracle 加全文索引,oracle全文索引的创建和使用

一、设置词法分析器Oracle实现全文检索,其机制其实很简单。即通过Oracle专利的词法分析器(lexer),将文章中所有的表意单元(Oracle称为term)找出来,记录在一组以dr$开头的表中,同时记下该term出现的位置、次数、hash值等信息。检索时,Oracle从这组表中查找相应的term,并计算其出现频率,根据某个算法来计算每个文档的得分(score),即所谓的‘匹配率’。而lexe...

weixin_33400388的博客 283

Memory SystemsCache, DRAM, Disk翻译学习DRAM部分(二)

DRAM 的发展史

qq_33473931的博客 995

宏基因组分析|从Binning到MAG优化的全流程实战指南

本文提供了一份宏基因组分析从Binning到MAG优化的全流程实战指南。详细解析了宏基因组分箱(Binning)的核心原理与必要性,并手把手指导如何利用Bowtie2、MetaBAT2和CheckM等工具构建分箱流水线,进行质量评估与筛选,最终获得高质量宏基因组组装基因组(MAG)。文章还分享了常见问题排查与进阶优化策略,为后续物种分类、功能注释等深度分析奠定坚实基础。

weixin_29260291的博客 455

建立Oracle全文索引

最近要做搜索,所以学起Oracle全文索引来了。参考文章:http://www.eygle.com/archives/2005/06/ecieoaoracleeia.html如何使用Oracle全文检索功能?作者:eygle出处:http://www.eygle.com/blog日期:June 11, 2005浏览次数:890本文链接:http://ww

乐敏@技术驿站 1082

手把手拆解:储能电站如何实现‘孤岛运行’与‘黑启动’?从SVPWM控制到无缝并网

本文深入解析储能电站的孤岛运行与黑启动技术,从SVPWM控制策略到电网重构实战。通过详细的三环控制架构和黑启动五阶段技术路线,展示储能电站在电网故障时如何快速切换为独立电压源并实现电网重建。文章还探讨了虚拟惯量补偿、多站协同控制等前沿技术,为电力系统应急恢复提供关键解决方案。

weixin_30509393的博客 304

Oracle建立全文索引详解

Oracle建立全文索引详解1.全文检索和普通检索的区别 不使用Oracle text功能,当然也有很多方法可以在Oracle数据库中搜索文本,比如INSTR函数和LIKE操作: SELECT *FROM mytext WHERE INSTR (thetext, 'Oracle') > 0; SELECT * FROM mytext WHERE thetext LIKE '%Ora...

weixin_30868855的博客 1169

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

oracle全文索引之配置全文检索环境

一、----------------- 安装全文检索组件---------------------1、建立ctxsys用户需要的表空间(如果需要用已存在的表空间,这一步可以忽略)以sys用户执行SQL> create ta...

cuilin2183的博客 302

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

oracle全文索引的创建和使用

一、设置词法分析器Oracle实现全文检索,其机制其实很简单。即通过Oracle专利的词法分析器(lexer),将文章中所有的表意单元(Oracle称为term)找出来,记录在一组以dr$开头的表中,同时记下该term出现的位置、次数、hash值等信息。检索时,Oracle从这组表中查找相应的term,并计算其出现频率,根据某个算法来计算每个文档的得分(score),即所谓的‘匹配率’。而le

与狼共舞 8521

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

oracle全文索引

一、设置词法分析器 Oracle实现全文检索,其机制其实很简单。即通过Oracle专利的词法分析器(lexer),将文章中所有的表意单元(Oracle称为term)找出来,记录在一组以dr$开头的表中,同时记下该term出现的位置、次数、hash值等信息。检索时,Oracle从这组表中查找相应的term,并计算其出现频率,根据某个算法来计算每个文档的得分(score),即所谓的‘匹配率’。而

山鹰的专栏 652

建立全文索引权限oracle,【转载】oracle全文索引的创建和使用

一、设置词法分析器Oracle实现全文检索,其机制其实很简单。即通过Oracle专利的词法分析器(lexer),将文章中所有的表意单元(Oracle称为term)找出来,记录在一组以dr$开头的表中,同时记下该term出现的位置、次数、hash值等信息。检索时,Oracle从这组表中查找相应的term,并计算其出现频率,根据某个算法来计算每个文档的得分(score),即所谓的‘匹配率’。而lexe...

weixin_42135753的博客 505

oracle 全文索引优劣,oracle的全文索引简析

已有几个项目组开始使用oracle的全文索引。Oracle的词法分析器针对ZHS16GBK字符集的词法分析尚不够智能,只能机械地以字为单元进行匹配。对于utf8字符集的数据库有一个新的汉语分析器chinese_lexer,效率有了很大改善。现将验证并整理过的如何进行oracle全文索引设置的文档发给大家,适用于8i、9i各平台版本。对于DB2,有一个叫做TIE(Text Information E...

weixin_42136826的博客 617
上一篇: oracle统计表的所有列的非空记录数据
下一篇: 使用duplicate搭建oracle 11.2.0.4.0数据库active dataguard (ADG)
weeknd
博客等级 码龄10年 41粉丝 64原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值