wanglei 2012-11-13 测试结果 docx 不能进行检索,可能是因为有结果的过程导致的,docx自身就是 压缩的文件
office 2007 以上版本的文档都会这样。 我们也不能要求客户 转换成 doc 在上传啊 呵!
---------------------------------------------------------------------------------
连接 sys 用户 注意: system 用户不能执行 因为有的权限其他用户都没有
SQL> connect SYS/123456
安装 text 组建 这个脚本oracle已经写好了 10 及以上版本都可以直接执行了
这个很奇怪 有的时候报错 但是卸载了之后在安装就没问题了。
SQL> @?/ctx/admin/catctx.sql CTXSYS SYSAUX TEMP NOLOCK
----------------------------------------------------------------------------------
用户解锁 有的时候会是锁的状态
SQL> alter user CTXSYS account unlock;
指定默认的安装语言 连接用户
SQL> connect CTXSYS/CTXSYS
添加语言 zhs 代表中文
SQL> @?/ctx/admin/defaults/drdefzhs.sql
--------------------------------------------------------------------------------------------------------------
检查版本
SQL> select comp_name ,status,substr(version,1,10) as version from dba_registry where comp_id='CONTEXT';
COMP_NAME STATUS VERSION
---------- ------------ ---------------
Oracle Text VALID 10.2.0.1.0
检查版本
SQL> select * from ctxsys.ctx_version;
VER_DICT VER_CODE
---------- --------------------
10.2.0.1.0 10.2.0.1.0
检查用户对象 网上说是 366 个
SQL> select count(*) from dba_objects where owner='CTXSYS';
COUNT(*)
----------
339
和网上说的 还是有些出处的
SQL> select object_type , count(*) from dba_objects where owner='CTXSYS' group b
y object_type;
OBJECT_TYPE COUNT(*)
------------------- ----------
SEQUENCE 3
PROCEDURE 2
OPERATOR 6
PACKAGE 71
PACKAGE BODY 58
LIBRARY 1
LOB 1
TYPE BODY 7
FUNCTION 5
VIEW 54
INDEXTYPE 4
TABLE 37
INDEX 46
TYPE 44
已选择14行。
status 都是 VALID 就可以了
SQL> select status , count(*) from dba_objects where owner='CTXSYS' group by status ;
STATUS COUNT(*)
------- ----------
VALID 339
------------------------------------------------------------------------------------------------------
授权 为将要使用全文检索的用户授权 CTXAPP 角色
SQL> connect CTXSYS/CTXSYS
grant CTXAPP to hxbank ;
SQL> connect CTXSYS/CTXSYS
--------------------------------------------------------------------------------------------------
声明 URL_PREF 这个就是说 使用网络路径 File_PREF 指本地路径 但是一般文件系统与数据库不会再一台机器上
SQL> begin
2 ctx_ddl.create_preference('URL_PREF','URL_DATASTORE');
3 ctx_ddl.set_attribute('URL_PREF','Timeout','300');
4 end;
5 /
---------------------------------------------------------------
创建表
create table hx_upfiles (
id number(22) , --主键
filename varchar2(1000), --文件名,转换成16进制的
fileinitname varchar2(1000), --客户端原来的文件名
tablepk_value varchar2(100), --附件所属表的 主键 值
tablepk_col varchar2(100),--附件所属表的 主键 列名
table_annx1 varchar2(100),--附件所属表的 附件 列名
table_annx2 varchar2(100),--附件所属表的 附件 列名
table_annx3 varchar2(100),--附件所属表的 附件 列名
table_annx4 varchar2(100),--附件所属表的 附件 列名
tablename varchar(200), --附件所属表名
urlfile varchar2(3000) , --附件完整的URL
fileType varchar2(100) , --文件类型 text - txt ;IGNORE - 不进行索引 ;BINARY - pdf,doc
createtime char(19), --创建时间
constraint pk_hx_upfiles primary key (id)
);
create index in_hx_upfiles_1 on hx_upfiles(fileinitname);
create index in_hx_upfiles_2 on hx_upfiles(tablename);
create index in_hx_upfiles_3 on hx_upfiles(createtime);
// http html测试
insert into hx_upfiles(id,urlfile) values(1,'http://192.168.0.10:10001');
// ftp doc 测试
insert into hx_upfiles(id,urlfile,fileType) values(2,'ftp://wanglei:123456@192.168.0.117/N6330_D0F2D1D4BCB0CAB9D3C3CBB5C3F7CEACBBA42DD0DEB8C4CEC4B5B5.doc','BINARY');
// ftp html 测试
insert into hx_upfiles(id,urlfile) values(3,'ftp://wanglei:123456@192.168.0.117/123.html');
// http doc 测试
insert into hx_upfiles(id,urlfile,fileType) values(4,'http://127.0.0.1:9001/hxbank/N6330_D0F2D1D4BCB0CAB9D3C3CBB5C3F7CEACBBA42DD0DEB8C4CEC4B5B5.doc','BINARY');
// http Servlet doc 测试
insert into hx_upfiles(id,urlfile,fileType) values(5,'http://127.0.0.1:9001/hxbank/DownLoadFileServlet?pathtype=upload&filename=/20121102/N6330_D0F2D1D4BCB0CAB9D3C3CBB5C3F7CEACBBA42DD0DEB8C4CEC4B5B5.doc','BINARY');
// ftp docx 测试(失败)
insert into hx_upfiles(id,urlfile,fileType) values(6,'ftp://wanglei:123456@192.168.0.117/123456.docx','BINARY');
// ftp wps 测试
insert into hx_upfiles(id,urlfile,fileType) values(7,'ftp://wanglei:123456@192.168.0.117/1234.wps','BINARY');
-------------------------------------------------------------------------------------------------------------------------------------------------
建立索引
设置过滤器 因为没有全自动的过滤器 所以 增加文件类型标示列 filetype ; TEXT - txt ;IGNORE - 不进行过滤 ;BINARY - pdf,doc,wps 等
alter table HX_UPFILES add fileType varchar2(100)
//使用 网络 类型 , 自动解析器 , 按照 filetype 列 进行解析
create index in_HX_UPFILES_URLFILE on HX_UPFILES(URLFILE) indextype is ctxsys.context parameters('DATASTORE URL_PREF filter ctxsys.auto_filter format column filetype');
//重新构建 索引 这部需要手动 所以需要用户有执行 存储过程的权限 exec
alter index in_HX_UPFILES_URLFILE rebuild
select * from HX_UPFILES where contains(URLFILE,'文件')>0;
查询
-----------------------------------------------------------------------------------------------------------------------------------------------------
其他可能使用的脚本
删除脚本
drop index in_HX_UPFILES_URLFILE
删除text 组建
@?/ctx/admin/catnoctx.sql