Oracle Text是如何支持本地文件的检索
来源:互联网 发布:网络转换器是什么东西 编辑:程序博客网 时间:2024/06/10 18:01
今天来看看强大的Oracle Text是如何支持本地文件的检索
它的实现是依靠参数datastore和filter的组合,在数据库的文本列中只保存指向
硬盘文件的指针,建立索引的时候,Oracle读取硬盘上的文件并且将索引存储在oracle
数据库中。Oracle支持对很多格式的文件的文本检索,包括txt、html、word、excel、PowerPoint、pdf
等,而且配合Lexer参数可以很好的支持了中文字符集的检索。
实现方法:
1)建立存储选项参数.制定DATASTORE参数为FILE_DATASTORE,提示Oracle从文件路径索引文本
2)制定path参数,你以指定多个文件存储的文件路径,windows环境用";"号间隔(path1;path2;path2;;),
unix环境用“:”号间隔(path1:path2:path3::)
begin
ctx_ddl.create_preference('my_datastore_prefs','FILE_DATASTORE');
ctx_ddl.set_attribute('my_datastore_prefs','path','D:\slh');
end;
/
3)建立保存这些文件名称的表,向表中插入数据,注意:thefile列必须是在服务器上指定的Path路径下的文件。
create table mydocs(id number primary key,title varchar2(255),thefile varchar2(255));
insert into mydocs(id,title,thefile)values(1,'DOC1','doc1.doc');
insert into mydocs(id,title,thefile)values(2,'DOC2','doc2.doc');
4)建立全文索引,使用参数DATASOTRE和Filter,Lexer。Filter可以帮助Oracle识别不同格式文件,
、可以是文本文件、word文档、pdf文档等,Lexer用来保证可以很好的从文件中索引中文信息。
create index mydocs_text_index on mydocs(thefile) indextype is ctxsys.context parameters('
datastore mydatastore_prefs Filter ctxsys.inso_filter Lexer mylexer');
5)测试是否索引文件成功
select id,title from mydocs where contains(thefile,'盗窃')>0;
6)指定路径带来的相关问题
如ctx_ddl.set_attributre('my_datastore_prefs','path','c:\temp;c\docs');
如果在2个目录中均有同名的文件1.doc,如果在thefile列中保存的仅仅是文件名称1.doc,则oracle
顺序查找路径下的文件,这样就会索引2次在c:\temp下的文件1.doc,我们可以通过加上文件的路径信息。
7)在维护文档修改的时候同步索引的问题
如果在修改了路径下面的某个文件内容,加入了文本或删除了文件,oracle在同步的时候不会察觉到文档的
内容的修改。有一个方法可以保证同步:
修改内容之后,更新一下表thefile的信息,但仍保证文件路径不变
update mydocs set thefile='1.doc' where thefile='1.doc'
再次执行同步索引的时候,oracle才会保持文档内容同步。
8)关于建立以及同步索引的时候发生的错误信息可以从ctx_user_index_errors用户视图中查看。
9)索引同步: exec ctx_ddl.sync_index('mydocs_text_index');
索引优化:exec ctx_ddl.optimize_index('mydocs_text_index','full');
它的实现是依靠参数datastore和filter的组合,在数据库的文本列中只保存指向
硬盘文件的指针,建立索引的时候,Oracle读取硬盘上的文件并且将索引存储在oracle
数据库中。Oracle支持对很多格式的文件的文本检索,包括txt、html、word、excel、PowerPoint、pdf
等,而且配合Lexer参数可以很好的支持了中文字符集的检索。
实现方法:
1)建立存储选项参数.制定DATASTORE参数为FILE_DATASTORE,提示Oracle从文件路径索引文本
2)制定path参数,你以指定多个文件存储的文件路径,windows环境用";"号间隔(path1;path2;path2;;),
unix环境用“:”号间隔(path1:path2:path3::)
begin
ctx_ddl.create_preference('my_datastore_prefs','FILE_DATASTORE');
ctx_ddl.set_attribute('my_datastore_prefs','path','D:\slh');
end;
/
3)建立保存这些文件名称的表,向表中插入数据,注意:thefile列必须是在服务器上指定的Path路径下的文件。
create table mydocs(id number primary key,title varchar2(255),thefile varchar2(255));
insert into mydocs(id,title,thefile)values(1,'DOC1','doc1.doc');
insert into mydocs(id,title,thefile)values(2,'DOC2','doc2.doc');
4)建立全文索引,使用参数DATASOTRE和Filter,Lexer。Filter可以帮助Oracle识别不同格式文件,
、可以是文本文件、word文档、pdf文档等,Lexer用来保证可以很好的从文件中索引中文信息。
create index mydocs_text_index on mydocs(thefile) indextype is ctxsys.context parameters('
datastore mydatastore_prefs Filter ctxsys.inso_filter Lexer mylexer');
5)测试是否索引文件成功
select id,title from mydocs where contains(thefile,'盗窃')>0;
6)指定路径带来的相关问题
如ctx_ddl.set_attributre('my_datastore_prefs','path','c:\temp;c\docs');
如果在2个目录中均有同名的文件1.doc,如果在thefile列中保存的仅仅是文件名称1.doc,则oracle
顺序查找路径下的文件,这样就会索引2次在c:\temp下的文件1.doc,我们可以通过加上文件的路径信息。
7)在维护文档修改的时候同步索引的问题
如果在修改了路径下面的某个文件内容,加入了文本或删除了文件,oracle在同步的时候不会察觉到文档的
内容的修改。有一个方法可以保证同步:
修改内容之后,更新一下表thefile的信息,但仍保证文件路径不变
update mydocs set thefile='1.doc' where thefile='1.doc'
再次执行同步索引的时候,oracle才会保持文档内容同步。
8)关于建立以及同步索引的时候发生的错误信息可以从ctx_user_index_errors用户视图中查看。
9)索引同步: exec ctx_ddl.sync_index('mydocs_text_index');
索引优化:exec ctx_ddl.optimize_index('mydocs_text_index','full');
- Oracle Text是如何支持本地文件的检索
- Oracle Text是如何支持本地文件的检索
- Oracle Text如何对本地文件的检索
- oracle Text 全文检索功能对中文分词的支持情况
- oracle Text 全文检索功能对中文分词的支持情况
- oracle Text 全文检索功能对中文分词的支持情况
- Oracle Text 全文检索
- oracle text全文检索
- Oracle模糊查询之(5.1认识全文索引之什么是分词[lexer])oracle Text 全文检索功能对中文分词的支持情况
- Oracle_C# 实现 Oracle Text(全文检索)的一个简单例子
- Oracle_C# 实现 Oracle Text(全文检索)的一个简单例子
- jackrabbit1.4对纯文本(text/plain )的全文检索支持
- oracle Text 全文检索 功能适用范围
- 使用Oracle Text进行全文检索
- Linux 是如何支持SMP的
- C是如何支持OC运行的
- oracle是如何工作的
- Oracle是如何工作的
- js只能输入数字和小数点的文本框
- 通过Spring @PostConstruct 和 @PreDestroy 方法 实现初始化和销毁bean之前进行的操作
- android 对当前Activity截屏
- 桶排序
- 复习字符设备驱动---写给自己看的
- Oracle Text是如何支持本地文件的检索
- PostgreSQL游标使用举例
- css 解决方案-等高布局
- 请教!!
- oracle 全文检索实践
- 设置<img>在表格<table>中的单元格<td>中水平垂直居中
- IOS多线程编程:线程同步总结
- 桶排序之后 --- > 基数排序
- 推荐:每天工作4小时的程序员