易截截图软件、单文件、免安装、纯绿色、仅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 表空间操作

oracle表空间操作详解
  1
  2
  3作者:   来源:    更新日期:2006-01-04 
  5
  6 
  7建立表空间
  8
  9CREATE TABLESPACE data01
 10DATAFILE '/ora ......

oracle 10053 trace


10053事件是oracle提供的用于跟踪sql语句成本计算的内部事件,
它能记载CBO模式下oracle优化器如何计算 sql成本,生成相应的执行计划。
如何设置10053事件
设置本session的10053
开启:
Alter session set events’10053 trace name context forever[,level {1/2}]’;
关闭:
Alter session set events& ......

常用SQL语句(Oracle)(转)

ORACLE中字段的数据类型
   字符型    char        范围  最大2000个字节 定长
               char(10)   '张三' 后添空格6个把10个字节补满  '张三 &nb ......

oracle rownum的用法


摘自《解析oracle的rownum》作者:chen_liang
对于rownum来说它是oracle系统顺序分配为从查询返回的行的编号,返回的第一行分配的是1,第二行是2,依此类推,这个伪字段可以用于限制查询返回的总行数,且rownum不能以任何表的名称作为前缀。
(1) rownum 对于等于某值的查询条件
如果希望找到学生表中第一条学生的信息 ......

在ubuntu 下安装Oracle 11g

root@hardy:~# cd /bin
root@hardy:/bin# ls -l /bin/sh
lrwxrwxrwx 1 root root 4 2008-04-28 19:59 /bin/sh -> dash
root@hardy:/bin# ln -sf bash /bin/sh
root@hardy:/bin# ls -l /bin/sh
lrwxrwxrwx 1 root root 4 2008-05-01 22:51 /bin/sh -> bash
# echo "Red Hat Linux release 4" > /etc/redhat- ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号