3.3检索oracle全文索引配置.doc_第1页
3.3检索oracle全文索引配置.doc_第2页
3.3检索oracle全文索引配置.doc_第3页
3.3检索oracle全文索引配置.doc_第4页
3.3检索oracle全文索引配置.doc_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

全文索引配置全文索引配置 :请依次创建索引、存储过程和作业,下述步骤缺一不可 。1.字段类型用户imamdb下的COM_BASICINFO表中,字段objectid的类型必须是VARCHAR2,字段content和content_hi的类型应该是CLOB。如果不是,立即修改,否则全文索引无法建立。2.创建索引 方法1(推荐方法) :请打开PL/Sql程序,执行索引如下两个脚本 :A、 create index ft_content on com_basicinfo(content) indextype is ctxsys.context parameters(LEXER CTXSYS.DEFAULT_LEXER) ;commit ;B、 create index ft_content_hi on com_basicinfo(content_hi) indextype is ctxsys.context parameters(LEXER CTXSYS.DEFAULT_LEXER) ;commit ; 方法2 :以imamdb32_chs/imamdb32_chs登陆Oracle :在oracle text manage索引context数据库用户下分别建立一个名叫ft_content和ft_content_hi的索引。方案选择要建立全文索引的数据库用户;表选择COM_BASICINFO;文本列选择content和content_hi ,索引名一定要是ft_content,否则无法同步。如图:注意:成功地创建了全文索引后,即可以在数据库中查询所有数据,但是要想实时地(自动更新)查询到所有新导入到数据库中的资源信息,需要创建存储过程和作业 。3.执行存储过程执行sync_ft_program.prc(代码如下)存储过程,生成全文索引所需的存储过程 。在Pl/sql程序中打开新建窗口,New - Sql Window ,输入下述代码即可为content字段创建存储过程:create or replace procedure sync_ft_contentisbegin execute immediatealter index ft_content rebuild | parameters ( sync ) ;execute immediatealter index ft_content rebuild | parameters ( optimize full maxtime unlimited ) ;end sync_ft_content ;再次,请重新打开一个Sql Window窗口,将上述代码中的content改成content_hi ,再执行一遍即为content_hi字段创建了存储过程 。4.创建作业方法1 :请打开Oracle客户端,在下图中打开SQL*Plus Worksheet,执行如下脚本【sysdate+1代表每一天执行一次作业】 :variablejob_numnumber;begindbms_job.submit(:job_num,sync_ft_content;,sysdate,sysdate+1);commit;end;类似地,将sync_ft_content修改为sync_ft_content_hi,以此创建另外一个作业 。方法2 :在Pl/sql先后创建两个作业,单击Jobs New ,在what栏中填写:begin sync_ft_content;end;在interval栏中填写“sysdate+1” ,然后单击Apply按钮即成功地创建了作业 ;类似地,重复上述步骤,将sync_ft_content修改为sync_ft_content_hi ,以此创建另一个作业! 注意:另外,sysdate+1即代表每一天执行一次;相应的,如想更改作业执行的调度,依此类推。建议:对于类似电影频道那种大数据量的数据库,作业的调度周期可以稍微长一些。作业创建成功后,单击右键 Run ,运行一次即可 。为了方便对作业周期进行灵活地选择,现提供如下多种作业周期 :Sysdate1/1440 每1分钟执行一次 此处的1440即代表24小时*60分钟 !Sysdate5/1440 每5分钟执行一次SYSDATE + 1/48 每30分钟执行一次SYSDATE + 7 最后一次执行的7天之后执行trunc(sysdate+1)+2/24 下一天的2点(凌晨)执行一次类似电影频道等大数据量的数据库,可以应用如下作业周期函数,相应地在Oracle客户端的SQL*Plus Worksheet中,执行下述脚本语句,同样可以达到上述的创建作业的效果 :作业周期函数 :NEXT_DAY(TRUNC(SYSDATE), 星期六) + 20/24每个星期六的晚上8点NEXT_DAY(ADD_MONTHS(TRUNC(SYSDATE, Q), 3),星期六) 每个季度的第一个星期六脚本语句 :variable job_num number; begin dbms_job.submit(:job_num,sync_ft_content;,sysdate,NEXT_DAY(TRUNC(SYSDATE), 星期六) + 20/24); commit; end;注意 :在上述语句中,安装Oracle数据库时选择的语言是简体中文;如果选择了英文环境,请将“星期六”写成英文“SATURDAY” 。5.常见问题定位 问题1 :无法查询正题名中包含中文字符的资源。如果按照上述步骤创建了索引、存储过程和作业后,出现如下情况:“对于包含中文的正题名的资源,如由纯中文名、中文名和数字(奥运08)、中文名和英文(奥运olympic)组成正题名的素材,全文检索只能将素材的正题名作为一个整体去查询素材如“奥运08”,而无法通过正题名的某部分字符如“奥运”去检索上述素材”时,此问题证实全文检索已经发挥作用,但是由于Oracle词法分析器的设置出现了问题,语言指定器DEFAULT_LEXER,其对应的词法分析器为“BASIC_LEXER”,即英文词法分析器【而客户现场通常需要中文词法分析器】 ,如下图所示 : 解决方法 :在pl/sql中的当前媒资数据库中,执行如下语句“update ctxsys.dr$preference set pre_obj_id = 4 where pre_name=DEFAULT_LEXER ;commit ;”【注意,commit语句与上述代码必须分成2行执行,否则pl/sql会认为语句没有执行完,提示“无效字符”】 。 问题2 :创建好全文检索、存储过程和作业后,如果在编目软件中对资源进行编目保存时,如果出现“域索引标记为LOADING/FAILED/UNUSABLE”的提示,导致编目完成后无法正常的保存编目信息 。 解决方法 首先、新建名称为FullText.txt的文件,此文件用来删除并重建索引,内容如下:drop index FT_CONTENT force/drop index FT_CONTENT_HI force/CREATE INDEX FT_CONTENT ON COM_BASICINFO(CONTENT) INDEXTYPE IS CTXSYS.context/CREATE INDEX FT_CONTENT_HI ON COM_BASICINFO(CONTENT_HI) INDEXTYPE IS CTXSYS.context/exit 其次、建议一个FullText.bat文件,内容如下 :echo begin ora10essqlplus dymamdb33_jsu/dymamdb33_jsuora10e

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论