您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > Oracle全文索引技术-使用说明文档
[Oracle全文索引技术]使用说明文档金联万家(北京)电子支付科技发展有限公司文档编号保密等级机密作者宋成最后修改日期审核人最后审批日期批准人最后批准日期I修改记录日期版本修改人备注2013-03-20V1.0宋成初稿目录1前言...........................................................................................31.1编写目的.................................................................................31.2名词解释.................................................................................31.3参考资料.................................................................................32oracle全文索引技术............................................................................43建立全文索引的操作步骤.........................................................................43.1查看用户与角色...........................................................................43.2开启目标用户全文索引权限.................................................................43.3设置语法分析器Lexer.....................................................................53.4建立索引.................................................................................53.5使用索引.................................................................................64全文索引的种类.................................................................................65对多字段建立索引...............................................................................66Oracle全文索引之-CONTEXT....................................................................76.1函数CONTAINS语法.......................................................................76.2全文索引的维护...........................................................................76.2.1同步数据...........................................................................86.3单个中文字查询问题.......................................................................97建立全文索引的完整脚本........................................................................108附录..........................................................................................141前言1.1编写目的本文档主要说明Oracle全文索引技术的使用与维护,为数据库操作使用人员提供参考维护手册。1.2名词解释名词解释表1.术语表1.3参考资料资料名说明表2.参考资料列表2oracle全文索引技术全文检索:是指计算机索引程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据事先建立的索引进行查找,并将查找的结果反馈给用户的检索方式。这个过程类似于通过字典中的检索字表查字的过程。【OracleText全文检索】Oracle一直致力于全文检索技术的研究,当Oracle9iRlease2发布之时,Oracle数据库的全文检索技术已经非常完美,OracleText使Oracle9i具备了强大的文本检索能力和智能化的文本管理能力。OracleText是Oracle9i采用的新名称,在Oracle8/8i中它被称作OracleinterMediaText,在Oracle8以前它的名称是OracleConTextCartridge。使用Oracle9i和OracleText,可以方便而有效地利用标准的SQL工具来构建基于文本的新的开发工具或对现有应用程序进行扩展。应用程序开发人员可以在任何使用文本的Oracle数据库应用程序中充分利用OracleText搜索,应用范围可以是现有应用程序中可搜索的注释字段,也可是实现涉及多种文档格式和复杂搜索标准的大型文档管理系统。OracleText支持Oracle数据库所支持的大多数语言的基本全文搜索功能。扩展阅读:建立全文索引的操作步骤3.1查看用户与角色检查数据库中是否有CTXSYS用户和CTXAPP角色如果没有这个用户和角色,意味着你的数据库创建时未安装intermedia功能。你必须修改数据库以安装这项功能。默认安装情况下,ctxsys用户是被锁定的,因此要先启用ctxsys的用户。--锁住用户ALTERUSERctxsysACCOUNTLOCKPASSWORDEXPIRE;--解锁用户ALTERUSERctxsysACCOUNTUNLOCKIDENTIFIEDBYctxsys;如果没有该用户,则需要打开dbca工具中选择configruedatabaseoptions,然后选择所有数据库组件安装即可。3.2开启目标用户全文索引权限赋权在ctxsys用户下把ctx_ddl的执行权限赋于要使用全文索引的用户,例:GRANTEXECUTEONctx_ddlTOusername;3.3设置语法分析器LexerOracle实现全文检索,其机制其实很简单。即通过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用户下执行以下语句)EXECctx_ddl.create_preference('my_lexer','chinese_vgram_lexer');2.在建立全文索引索引时,指明所用的lexer:CREATEINDEXmyindexONmytable(mycolumn)INDEXTYPEISctxsys.contextPARAMETERS('lexermy_lexer');这样建立的全文检索索引,就会使用chinese_vgram_lexer作为分析器。3.4建立索引通过以下语法建立全文索引3.5使用索引使用全文索引很简单,可以通过:SELECT*FROMPUBMENUWHERECONTAINS(MENUNAME,'上传图片')0;4全文索引的种类建立的OracleText索引被称为域索引(domainindex),包括4种索引类型:CONTEXT用于对含有大量连续文本数据进行检索。支持word、html、xml、text等很多数据格式。支持中文字符集,支持分区索引,唯一支持并行创建索引(Parallelindexing)的索引类型。对表进行DML操作后,并不会自动同步索引。需要手工同步索引。查询操作符:CONTAINSCTXCAT当使用混合查询语句的时候可以带来很好的效率。适合于查询较小的具有一定结构的文本段。具有事务性,当更新主表的时候自动同步索引。作符:CATSEARCHCTXRULE主要用于文档分类。查询操作符:MATCHESCTXXPATH快速查找XML文档NODE节点XPATH路径5对多字段建立索引很多时候需要从多个文本字段中查询满足条件的记录,这时就需要建立针对多个字段的全文索引,例如需要从pmhsubjects(专题表)的subjectname(专题名称)和briefintro(简介)上进行全文检索,则需要按以下步骤进行操作:--建议多字段索引的preference,以ctxsys登录,并执行EXECctx_ddl.create_preference('ctx_idx_subject_pref','MULTI_COLUMN_DATASTORE');--建立preference对应的字段值(以ctxsys登陆)EXECctx_ddl.set_attribute('ctx_idx_subject_pref','columns','subjectname,briefintro');--建立全文索引CREATEINDEXctx_idx_subjectONpmhsubjects(subjectname)INDEXTYPEISctxsys.contextPARAMETERS('DATASTOREctxsys.ctx_idx_subject_preflexermy_lexer');--使用索引SELECT*FROMpmhsubjectsWHEREcontains(subjectname,'李宇春');6Oracle全文索引之-CONTEXTCONTEXT:用于对含有大量连续文本数据进行检索。支持word、html、xml、text等很多数据格式。支持中文字符集,支持分区索引,唯一支持并行创建索引(Parallelindexing)的索引类型。对表进行DML操作后,并不会自动同步索引。需要手工同步索引。查询操作符:CONTAINS6.1函数CONTAINS语法使用contains时,主要查询语法有:contains([列名称],[查询关键字])LogicalOperators:组合搜索条件,通过使用AND,OR等逻辑符号。AND(&),同时含有所有关键词,如:'catsA
本文标题:Oracle全文索引技术-使用说明文档
链接地址:https://www.777doc.com/doc-2847730 .html