易截截图软件、单文件、免安装、纯绿色、仅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中导入导出dmp数据库文件

Oracle数据导入导出imp/exp就相当于oracle数据还原与备份。exp命令可以把数据从远程数据库服务器导出到本地的dmp文件,imp命 令可以把dmp文件从本地导入到远处的数据库服务器中。 利用这个功能可以构建两个相同的数据库,一个用来测试,一个用来正式使用。
  执行环境:可以在SQLPLUS.EXE或者DOS(命令行)中执行,
  ......

常用SQL语句(Oracle)(转)

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

oracle 复制

[root@localhost bin]# pwd
/usr/local/bin
[root@localhost bin]# ls
coraenv  dbhome  oraenv
[root@localhost bin]#
[root@localhost etc]# ls -la ora*
-rw-r--r-- 1 root   root      60 2008-09-19 oraInst.loc
-rw-rw-r-- 1 oracle oinstall 731 2008-09-19 or ......

oracle rownum的用法


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

oracle树中prior的用法

数据说明一切:
create table dept(deptno number,deptname varchar2(20),mgrno number);
insert into dept values (1, '总公司', null);
insert into dept values (2, '浙江分公司', 1);
insert into dept values (3, '杭州分公司', 2);
commit;
select t.* from dept t;
      DEPTNO &n ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号