- 浏览: 214357 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
strong8808:
activemq5.8.0 客户端,服务端启动序列图 -
xurichusheng:
第一题,如果使用 not exists 的话,可以改成:SEL ...
SQL笔试题 -
dingjun1:
cuisuqiang 写道如何解决呢?我的是对了也照样缓存增加 ...
事务未正确关闭引起的HIBERNATE SESSION不能正确关闭 -
dingjun1:
aijezdm915 写道lz ,我也是在写项目描述是犯愁,能 ...
如果在简历中描述项目 -
aijezdm915:
lz ,我也是在写项目描述是犯愁,能否给个你的简历demo,我 ...
如果在简历中描述项目
ORACLE 版本10.0.2
查看数据库相关的信息select * from nls_database_parameters
1、简单应用
1.1如果要使用全文检索,当前ORACLE用户必须具有CTXAPP角色
使用创建的用户登录
SQL> conn textsearch
输入口令: **********
已连接。
1.2创建要进行全文检索的数据表,准备数据
1.3在摘要字段上创建索引
系统会创建四个相关的表
DR$DEMO_ABSTRACT$I(分词后的TOKEN表)\DR$DEMO_ABSTRACT$K\DR$DEMO_ABSTRACT$N\DR$DEMO_ABSTRACT$R
查看索引创建过程中是否发生了错误
1.4测试查询
1.5查看索引脚本
select ctx_report.create_index_script('file_index') from dual;
2.对外部文件进行全文检索
ORACLE TEXT可以对文件系统中的文件进行检索,支持大部分的文件格式(如:OFFICE、PDF等),不同的格式ORACLE TEXT会选择不同的
FILTER 提取二进制文件中的纯文本,生成一个虚拟的DOCUMENT,如同对单个文本型COLUMN创建索引一样。这一切都由ORACLE TEXT自己完成。
使用上表textdemo的数据,我们对path 创建索引
2.1查询
2.2查看索引的大小信息
select ctx_report.index_size('demo_path') from dual
2.3 同步索引
索引异常可以从CTX_USER_INDEX_ERRORS视图跟踪。
数据库根据索引列的改变跟踪文档的改变,如果想强制ORACLE TEXT重新创建特定文档的索引,可以更新相对应行中的索引字段:
update textdemo set path=path where id = 4;
在索引同步时将会更新ID=4文件的关键字。
3使用自定义的存储过程
USER_DATASTORE:合成索引时使用用户指定的存储过程
ATTRIBTES:
procedure:指明合成用于索引文本的存储过程,第一个参数必须为ROWID,当存储过程改变后,需要重新建立索引,
索引只会在指明定的字段修改或增加,同步索引才会起作用。
output_type:指定存储过程的第二个参数的数据类型(CLOB,CLOB_LOC,BLOB_LOC,VARCHAR2)默认为:CLOB,
当指定为CLOB_LOC,BLOB_LOC时,表示不需要临时的CLOB或BLOB变明,因为PROCEDURE复制一个locator到第二个IN/OUT参数
/*
创建自定义的存储过程
*/
create or replace procedure myproc(rid in rowid,tlob in out clob nocopy)
is
begin
for c1 in (select author,title,text from articles where rowid = rid)
loop
dbms_lob.writeappend(tlob,length(c1.title),c1.title);
dbms_lob.writeappend(tlob,length(c1.author),c1.author);
dbms_lob.writeappend(tlob,length(c1.text),c1.text);
end loop;
end;
/*
定位数据的存放形式,使用自定义的存储过程
*/
begin
ctx_ddl.create_preference('myud','user_datastore');
ctx_ddl.set_attribute('myud','procedure','myproc');
ctx_ddl.set_attribute('myud','output_type','clob');
end;
创建索引时,除了改变PARAMETERS('DATASTORE MYUD')外,其它的都不用做更改。
查看数据库相关的信息select * from nls_database_parameters
1、简单应用
1.1如果要使用全文检索,当前ORACLE用户必须具有CTXAPP角色
--创建一个用户 --create user textsearch identified by textsearch; /** 赋予用户三个角色,其中有一个为CTXAPP角色, 以便该用户可以使用与全文检索相关的PROCEDURE */ grant connect,resource,ctxapp to textsearch; /
使用创建的用户登录
SQL> conn textsearch
输入口令: **********
已连接。
1.2创建要进行全文检索的数据表,准备数据
--drop table textdemo; create table textdemo( id number not null primary key, book_author varchar2(20),--作者 publish_time date,--发布日期 title varchar2(400),--标题 book_abstract varchar2(2000),--摘要 path varchar2(200)--路径 ); commit; insert into textdemo values(1,'宫琦峻',to_date('2008-10-07','yyyy-mm-dd'),'移动城堡','故事发生在19世纪末的欧洲,善良可爱的苏菲被恶毒的女巫施下魔咒,从18岁的女孩变成90岁的婆婆,孤单无助的她无意中走入镇外的移动城堡,据说它的主人哈尔以吸取女孩的灵魂为乐,但是事情并没有人们传说的那么可怕,性情古怪的哈尔居然收留了苏菲,两个人在四脚的移动城堡中开始了奇妙的共同生活,一段交织了爱与痛、乐与悲的爱情故事在战火中悄悄展开','E:\textsearch\moveingcastle.doc'); insert into textdemo values(2,'莫·贝克曼贝托夫',to_date('2008-10-07','yyyy-mm-dd'),'子弹转弯','这部由俄罗斯导演提莫·贝克曼贝托夫执导的影片自6月末在北美上映以来,已经在全球取得了超过3亿美元的票房收入。在亚洲上映后也先后拿下日本、韩国等地的票房冠军宝座。虽然不少网友在此之前也相继通过各种渠道接触到本片,但相信影片凭着在大银幕上呈现出的超酷的视听效果,依然能够吸引大量影迷前往影院捧场。','E:\textsearch\catch.pdf'); insert into textdemo values(3,'袁泉',to_date('2008-10-07','yyyy-mm-dd'),'主演吴彦祖和袁泉现身','电影《如梦》在上海同乐坊拍摄,主演吴彦祖和袁泉现身。由于是深夜拍摄,所以周围并没有过多的fans注意到,给了剧组一个很清净的拍摄环境,站在街头的袁泉低着头,在寒冷的夜里看上去还真有些像女鬼,令人毛骨悚然。','E:\textsearch\dream.txt'); commit;
1.3在摘要字段上创建索引
/* *创建索引,使用默认的参数 */ --drop index demo_abstract; create index demo_abstract on textdemo(book_abstract) indextype is ctxsys.context --parameters('datastore ctxsys.default_datastore filter ctxsys.auto_filter ') ; commit;;
系统会创建四个相关的表
DR$DEMO_ABSTRACT$I(分词后的TOKEN表)\DR$DEMO_ABSTRACT$K\DR$DEMO_ABSTRACT$N\DR$DEMO_ABSTRACT$R
查看索引创建过程中是否发生了错误
SELECT * FROM ctx_USER_index_errors
1.4测试查询
select score(20),t.* from textdemo t where contains(book_abstract,'移动城堡 or 俄罗斯',20)>0; select score(20),t.* from textdemo t where contains(book_abstract,'移动城堡 or 俄罗斯',20)>0 and t.title like '子弹%';
1.5查看索引脚本
select ctx_report.create_index_script('file_index') from dual;
2.对外部文件进行全文检索
ORACLE TEXT可以对文件系统中的文件进行检索,支持大部分的文件格式(如:OFFICE、PDF等),不同的格式ORACLE TEXT会选择不同的
FILTER 提取二进制文件中的纯文本,生成一个虚拟的DOCUMENT,如同对单个文本型COLUMN创建索引一样。这一切都由ORACLE TEXT自己完成。
使用上表textdemo的数据,我们对path 创建索引
begin --ctx_ddl.drop_preference('my_filter'); ctx_ddl.create_preference('my_filter','auto_filter'); end; / begin --ctx_ddl.drop_preference('my_store'); ctx_ddl.create_preference('my_store','file_datastore'); /* --设置文件的路径,由于此处数据表中已经包含了路径 不需要再进行设置,如果表中只有文件名称无路径信息, 需要设置该参数,如果文件在不同的路径下,也可以设置 多个路径WINDOWS下用";"分开,UNIX用":", 限制:设置目录后的文件名不应有路径信息,避免不同的目录 下有相同的文件名. ctx_ddl.set_attribute('mystore','path','E:\demo;E:\textsearch'); */ --ctx_ddl.set_attribute('mystore','path','E:\demo'); end; / begin --ctx_ddl.drop_preference('my_lexer'); ctx_ddl.create_preference('my_lexer','chinese_lexer'); end; / --drop index demo_path; create index demo_path on textdemo(path) indextype is ctxsys.context parameters(' datastore my_store filter my_filter lexer my_lexer '); commit;
2.1查询
select score(20),t.* from textdemo t where contains(path,'苏菲 and 城堡',20)>0 --联合第一次对book_abstract做的索引进行查询 select score(5),score(20),t.* from textdemo t where contains(book_abstract,'电影',5)>0 AND contains(path,'数据库 and 全文检索',20)>0
2.2查看索引的大小信息
select ctx_report.index_size('demo_path') from dual
2.3 同步索引
索引异常可以从CTX_USER_INDEX_ERRORS视图跟踪。
数据库根据索引列的改变跟踪文档的改变,如果想强制ORACLE TEXT重新创建特定文档的索引,可以更新相对应行中的索引字段:
update textdemo set path=path where id = 4;
在索引同步时将会更新ID=4文件的关键字。
--update textdemo set path='E:\textsearch\dream.txt' where id=3; update textdemo set path='E:\textsearch\catch.pdf' where id=2; --update textdemo set path='E:\textsearch\movingcastle.doc' where id=1; commit; begin /* 指定索引名称,和内存大小 */ ctx_ddl.sync_index('demo_path','20M') ; end;
3使用自定义的存储过程
USER_DATASTORE:合成索引时使用用户指定的存储过程
ATTRIBTES:
procedure:指明合成用于索引文本的存储过程,第一个参数必须为ROWID,当存储过程改变后,需要重新建立索引,
索引只会在指明定的字段修改或增加,同步索引才会起作用。
output_type:指定存储过程的第二个参数的数据类型(CLOB,CLOB_LOC,BLOB_LOC,VARCHAR2)默认为:CLOB,
当指定为CLOB_LOC,BLOB_LOC时,表示不需要临时的CLOB或BLOB变明,因为PROCEDURE复制一个locator到第二个IN/OUT参数
/*
创建自定义的存储过程
*/
create or replace procedure myproc(rid in rowid,tlob in out clob nocopy)
is
begin
for c1 in (select author,title,text from articles where rowid = rid)
loop
dbms_lob.writeappend(tlob,length(c1.title),c1.title);
dbms_lob.writeappend(tlob,length(c1.author),c1.author);
dbms_lob.writeappend(tlob,length(c1.text),c1.text);
end loop;
end;
/*
定位数据的存放形式,使用自定义的存储过程
*/
begin
ctx_ddl.create_preference('myud','user_datastore');
ctx_ddl.set_attribute('myud','procedure','myproc');
ctx_ddl.set_attribute('myud','output_type','clob');
end;
创建索引时,除了改变PARAMETERS('DATASTORE MYUD')外,其它的都不用做更改。
发表评论
-
tomcat配置数据源(转载)
2012-02-23 10:57 953转载:http://www.douban.com/note/7 ... -
行连接检测(待整理 )
2010-12-17 10:54 1326网上搜集的,待整理 pctused(percent used ... -
在Oracle 9i下的display_cursor脚本
2010-12-08 13:37 1257转载:http://www.laoxiong.net/orac ... -
事务级别及相关内容
2010-09-19 20:18 880事务的四个属性:原子 ... -
ORACLE 内存结构 事件相关 statspack
2010-09-05 16:16 1317基本的内存结构包括:System Global Area SG ... -
ORA-12560及修改sys密码
2010-09-01 10:44 2127修改了,tnsnames.ora listener.ora中的 ... -
数据库设计经验谈(转)
2010-07-27 22:07 875一个成功的管理系统,是由:[50% 的业务 + 50% 的软件 ... -
Oracle 数据类型及存储方式
2010-07-13 08:29 1074http://www.iteye.com/topic/2207 ... -
ORACLE 10 JDBC SQL跟踪示例
2010-07-04 12:55 1778ORACLE 10 JDBC SQL跟踪示例 1、查询v$pa ... -
not in null 与null运算
2010-04-23 12:09 1657Not in \ in中包含有null值的列,不会排除null ... -
触发器
2010-04-15 16:41 42select * from user_trig ... -
ORACLE索引
2010-04-01 14:52 1191转载:http://log-cd.iteye.co ... -
inner join left join right join on where
2010-03-31 18:49 1895理解 inner join 和 outer join inne ... -
理解ORACLE字符集
2010-03-23 19:08 1158转载:http://silverw0396.iteye.com ... -
isqlplus不能正常访问的问题
2010-03-19 13:02 1112rhel5.2 oracle 10.0.2.0.1.0 1、 ... -
red hat enterprise linux 5.2 install and startup oracle 10.2.0
2010-03-17 21:04 1714d rhel5.2下安装ORACLE 10G 我的安装步骤参考 ... -
PreparedStatement.setObject(int i,Object obj) 无效的列类型
2009-10-26 17:21 4968当往下面的方法传递参数时,传入了java.util.Date类 ... -
ORA-01791: 不是 SELECTed 表达式
2009-10-26 16:50 2371ORA-01791: 不是 SELECTed 表达式,这报错莫 ... -
ORACLE SQL基础知识
2009-04-15 18:41 2100问:什么是NULL? 答:在我们不知道具体有什么数据的时候,也 ... -
SQL笔试题
2008-07-15 15:12 40031.用一条SQL语句 查询出 ...
相关推荐
OracleText是Oracle数据库系统中的一个强大全文检索工具,它提供了高级文本分析和信息检索功能,使得用户能够快速、高效地在大量数据中搜索特定信息。OracleText能够处理各种类型的文本数据,包括文档、JSP(Java...
在配置 Oracle Text 时,可以创建一个名为“preference”的对象,它定义了全文检索的特定参数,如搜索器类型。例如,可以使用如下 PL/SQL 代码设置 preference: ```sql BEGIN ctx_ddl.create_preference('my_...
Oracle Text全文检索技术在文档资料管理中的应用.pdf
Oracle Text支持多种语言的全文搜索,包括对多种文档格式(如Word、Excel、PowerPoint、HTML、PDF等)的检索。然而,一个明显的不足是,Oracle Text在处理中文内容的文本文档(如TXT、RTF)时,无论使用何种过滤器...
Oracle全文检索是Oracle数据库系统中的一种高级特性,用于在数据库中的文本数据中执行高效、复杂的全文搜索。在本文中,我们将深入探讨如何安装和配置Oracle Text,以及它所依赖的关键角色和用户。 首先,要使用...
Oracle Text 基础知识 Oracle Text 是 Oracle 数据库的一个组件,提供了强大的...使用 Oracle Text 可以带来很多优点,包括高效的搜索速度、强大的全文检索功能、支持中文字符集、支持分区索引、支持并行创建索引等。
Oracle Text不仅适用于在数据库中搜索文本,还能够处理多种文档格式,如ORD、Excel、Lotus等,并能从Internet和文件系统中检索文本数据,同时在XML应用程序中也有广泛的应用。 在没有使用Oracle Text的情况下,搜索...
6. **查询功能包**:利用Oracle Text提供的查询语法和API,可以实现复杂的全文检索操作,如模糊匹配、同义词搜索等。 构建Oracle Text全文检索系统的步骤通常包括: 1. **创建数据库表**:建立存储文档信息的...
Oracle Text技术是Oracle数据库系统中的一个重要组件,专门用于提供全文检索功能。全文检索技术在智能信息系统中扮演着至关重要的角色,能够实现对大量数据中的关键字或短语进行快速有效的搜索。在当今的信息时代,...
为了实现高效的全文检索,Oracle Text 需要为待检索的数据项建立索引。索引构建过程通常包括以下几个阶段: 1. **数据检索 (Datastore)**:从数据源(如 Web 页面、数据库 LOB 对象或本地文件系统)获取数据,并将...
从Oracle 7版本开始,Oracle就开始提供全文检索功能,起初名为Oracle ConText Cartridge,随后在Oracle 8/8i中称为Oracle interMedia,直至Oracle 9i正式命名为Oracle Text,并在后续版本中不断得到增强和优化,尤其...
Oracle Text是Oracle数据库的一个重要组成部分,它提供了强大的全文检索功能,使得用户能够在海量文本数据中快速、准确地找到所需信息。Oracle Text不仅支持标准的文本搜索,还具备智能化的文本管理和分析能力,能够...
"Oracle 的全文检索技术" Oracle 全文检索技术是 Oracle 数据库中的一项强大功能,能够实现对大量文本数据的快速检索。Oracle Text 是 Oracle9i 中的新名称,在 Oracle8/8i 中它被称作 Oracle interMedia Text。...
- **定义**:Oracle Text 是一款由 Oracle 公司提供的用于处理全文检索的强大工具,它允许用户在 Oracle 数据库中实现对非结构化文本数据的高效搜索。 - **版本**:本文档介绍了 Oracle Text 的 11g Release 1 (11.1...
Oracle全文检索技术是Oracle数据库系统内置的一种高效、全面的文本搜索功能,旨在帮助用户快速定位和检索海量文本数据中的相关信息。Oracle Text技术结合了数据库的强大处理能力,提供了全文索引、智能查询、语言...
自Oracle 9i开始,其全文检索技术已经非常成熟,被称为Oracle Text,提供了强大的文本检索能力和智能化的文本管理功能。Oracle Text允许开发者使用标准SQL工具构建基于文本的应用,或者扩展现有的应用程序。它不仅...
Oracle全文检索技术是数据库管理系统Oracle中的一个重要特性,它允许用户在数据库中进行高效、精确的文本搜索。全文检索技术能够理解自然语言,并从中提取出关键信息,为用户提供类似搜索引擎的体验。以下是对Oracle...
Oracle Text是Oracle 9i及更高版本中的组件,它提供了高级的全文检索和文本管理能力。Oracle Text的前身在Oracle 8/8i中称为Oracle interMedia Text,而在Oracle 8之前则是Oracle ConText Cartridge。 Oracle Text...