易截截图软件、单文件、免安装、纯绿色、仅160KB

Oracle Text遭遇战[2009 12 31 16:15]

    手头正在进行一个项目,需要全文检索,经过同事仔细搜索发现:oracle提供oracle text的全文检索功能。
    oracle text的简单应用经同事测试结果正常,按照项目要求(项目预定方案word文档存入数据库(blob类型))使用oracle text查询结果确是为空,同事研究到此中断。
    BOSS见我对oracle兴趣浓厚,让我接手,于是我临时抱佛脚开始学习oracle text,琢磨出一些大概头绪,步骤如下:1)授权ctxsys角色;2)建表;3)设置索引参数、创建索引;4)查询。头绪归头绪,但是卡住同事的问题同样卡住我,我开始怀疑string型无法与blob型匹配查询,后又发现许多人都是直接将字符串插入blob型列,至此陷入迷茫,最终决定在CSDN发帖求助,经一位热心人(在此感谢CSDN的Denonly  )提示word文档转化为二进制后得到的可能不全是文本内容,终大悟!
    后让同事把一个TXT文本转化后存入数据库,使用老方法查询,查询结果正确!大喜!查询过程可行,问题肯定在blob!
    不过途中又走了一些弯路,oracle中存储外部OS文件路径,oracle text直接对这些文件检索,可惜没能证明可行还是不可行,留下一个悬念。
    经过百度的乱七八糟搜索发现一个帖子,上面阐述了在创建索引前设定不同filetr选项的效果,其中CTXSYS.INSO_FILTER可以对一些二进制文件的文本部分和非文本部分过滤分离,百度得到一些优化检索的设置,在创建索引时加入FILTER选项的设置,再次尝试检索,终于OK.......内牛满面
 
贴出脚本:
--优化检索条件
begin
ctx_ddl.create_preference('mylex','BASIC_LEXER');
ctx_ddl.set_attribute('mylex','printjoins','_-');
ctx_ddl.create_preference('mywordlist', 'BASIC_WORDLIST');
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');
end;
/
begin
ctx_ddl.create_preference('cnlex','CHINESE_LEXER');
end;
/
--设置索引参数,创建索引
drop index t_fileinfo_idx force;
create index t_fileinfo_idx on fileinfo(text)
indextype is ctxsys.context
parameters ('DATASTORE CTXSYS.DIRECT_DATASTORE FILTER C


相关文档:

Oracle数据导入导出imp/exp命令

--如何在oracle中导入dmp数据库文件?
 2006/2/16 zhanghua first create                            
     数据导入导出imp/exp就相当于ora ......

查看Oracle表空间使用情况SQL语句

 select f.tablespace_name,a.total,u.used,f.free,round((u.used/a.total)*100) "% used", round((f.free/a.total)*100) "% Free"
from
(select tablespace_name, sum(bytes/(1024*1024)) total
from dba_data_files group by tablespace_name) a,
(select tabl ......

常用SQL语句(Oracle)(转)

ORACLE中字段的数据类型
   字符型    char        范围  最大2000个字节 定长
               char(10)   '张三' 后添空格6个把10个字节补满  '张三 &nb ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号