Oracle全文索引技术-使用说明文档解析
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
[Oracle全文索引技术] 使用说明文档
金联万家(北京)电子支付科技发展有限公司
修改记录
目录
1 前言 (3)
1.1 编写目的 (3)
1.2 名词解释 (3)
1.3 参考资料 (3)
2 oracle全文索引技术 (4)
3 建立全文索引的操作步骤 (4)
3.1 查看用户与角色 (4)
3.2 开启目标用户全文索引权限 (4)
3.3 设置语法分析器Lexer (5)
3.4 建立索引 (5)
3.5 使用索引 (6)
4 全文索引的种类 (6)
5 对多字段建立索引 (6)
6 Oracle全文索引之 - CONTEXT (7)
6.1 函数 CONTAINS 语法 (7)
6.2 全文索引的维护 (7)
6.2.1 同步数据 (8)
6.3 单个中文字查询问题 (9)
7 建立全文索引的完整脚本 (10)
8 附录 (14)
1前言
1.1编写目的
本文档主要说明Oracle全文索引技术的使用与维护,为数据库操作使用人员提供参考维护手册。
1.2名词解释
表 1.术语表
1.3参考资料
表 2.参考资料列表
2oracle全文索引技术
全文检索:是指计算机索引程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据事先建立的索引进行查找,并将查找的结果反馈给用户的检索方式。这个过程类似于通过字典中的检索字表查字的过程。
【Oracle Text 全文检索】
Oracle一直致力于全文检索技术的研究,当Oracle9i Rlease2发布之时,Oracle数据库的全文检索技术已经非常完美,Oracle Text使Oracle9i具备了强大的文本检索能力和智能化的文本管理能力。Oracle Text是Oracle9i 采用的新名称,在Oracle8/8i中它被称作Oracle interMedia Text,在Oracle8以前它的名称是Oracle ConText Cartridge。使用Oracle9i和Oracle Text,可以方便而有效地利用标准的SQL工具来构建基于文本的新的开发工具或对现有应用程序进行扩展。应用程序开发人员可以在任何使用文本的Oracle数据库应用程序中充分利用Oracle Text搜索,应用范围可以是现有应用程序中可搜索的注释字段,也可是实现涉及多种文档格式和复杂搜索标准的大型文档管理系统。Oracle Text支持Oracle数据库所支持的大多数语言的基本全文搜索功能。
扩展阅读: /view/663956.htm
3建立全文索引的操作步骤
3.1查看用户与角色
检查数据库中是否有CTXSYS 用户和CTXAPP 角色
如果没有这个用户和角色,意味着你的数据库创建时未安装intermedia功能。你必须修改数据库以安装这项功能。默认安装情况下,ctxsys用户是被锁定的,因此要先启用ctxsys的用户。
-- 锁住用户
ALTER USER ctxsys ACCOUNT LOCK PASSWORD EXPIRE;
-- 解锁用户
ALTER USER ctxsys ACCOUNT UNLOCK IDENTIFIED BY ctxsys;
如果没有该用户,则需要打开dbca工具中选择configrue database options,然后选择所有数据库组件安装即可。
3.2开启目标用户全文索引权限
赋权在ctxsys用户下把ctx_ddl的执行权限赋于要使用全文索引的用户,例:
GRANT EXECUTE ON ctx_ddl TO username;
3.3设置语法分析器Lexer
Oracle实现全文检索,其机制其实很简单。即通过Oracle专利的词法分析器(lexer),将文章中所有的表意单元(Oracle 称为 term)找出来,记录在一组以dr$开头的表中,同时记下该term出现的位置、次数、hash 值等信息。检索时,Oracle 从这组表中查找相应的term,并计算其出现频率,根据某个算法来计算每个文档的得分(score),即所谓的‘匹配率’。而lexer则是该机制的核心,它决定了全文检索的效率。Oracle 针对不同的语言提供了不同的 lexer, 而我们通常能用到其中的三个:
basic_lexer :针对英语(默认分析器)
chinese_vgram_lexer:专门针对汉语,对汉字搜索准确性较高
如:‘中国人民站起来了’这句话,会被它分析成如下几个term: ‘中’,‘中国’,‘国人’,‘人民’,‘民站’,‘站起’,起来’,‘来了’,‘了’
chinese_lexer:新的汉语分析器,只支持 UTF8 字符集,可以将语句分词成常见的词组,能跟有效率的分析语句,对汉字解析搜索效率较高
【指定语法分析器:】
1.当前用户下下建立一个preference(例:在pomoho用户下执行以下语句)
EXEC ctx_ddl.create_preference('my_lexer','chinese_vgram_lexer');
2.在建立全文索引索引时,指明所用的lexer:
CREATE INDEX myindex ON mytable(mycolumn) INDEXTYPE IS ctxsys.context PARAMETERS('lexer my_lexer');
这样建立的全文检索索引,就会使用chinese_vgram_lexer作为分析器。
3.4建立索引
通过以下语法建立全文索引