查询文本不同于查询数据,因为有同义词、近义词和反义词。你可能希望搜索互相接近的词或搜索相关联的词。如果仅使用标准的关系操作符,要进行这些查询是非常困难的。通过SQL进行扩充,使其包含文本索引,则ORACLE TEXT允许用户就文本提出非常复杂的问题。
文本索引主要有两种CONTEXT和CTXCAT
用如下方式建立索引
CREATE INDEX REVIEW_CONTEXT_INDEX ON BOOK_REVIEW_CONTEXT(REVIEW_TEXT) INDEXTYPE IS CTXSYS.CONTEXT;
或
CREATE INDEX REVIEW_CTXCAT_INDEX ON BOOK_REVIEW_CTXCAT(REVIEW_TEXT) INDEXTYPE IS CTXSYS.CTXCAT;
建立好索引后就可以进行文本查询
select title from book_review_context where contains(review_text,'property')>0
CONTAINS函数有两个参数即列名和搜索串,它检查review_text列的文本索引。如果在review_text列的文本索引中找到单词'property'则数据库返回的得分大于0,并返回匹配的TITLE值。
如果建立的是CTXCAT索引就用CATSEARCH函数
select title from book_review_ctxcat where catsearch(review_text,'property',null)>0;
可使用的文本查询表达式有以下几种:
1。单词的精确匹配搜索
select title from book_review_context where contains(review_text,'property')>0
2。多个单词精确匹配的搜索
可以使用AND连接多个单词
select title from book_review_context where contains(review_text,'property and harvests')>0
还可以使用&但是在SQLPLUS里必须执行set define off否则&将被视作变量
set define off
select title from book_review_context where contains(review_text,'property & harvests')>0
对于CTXCAT索引AND完全可以省略
select title from book_review_ctxcat where catsearch(review_text,'property harvests',null)>0;
除AND外还可以使用OR运算符在ORACLE TEXT中OR是一根竖线(|)
因此下面的两个查询是等同的
select title from book_review_context where contains(review_text,'property or harvests')>0
select title from book_review_context where contains(review_text,'property | harvests')>0
但是要注意CATSEARCH函数不支持OR只支持‘|’符号;
ACCUM(累加)提供了另一种组合搜索的方法。等价于逗号,所以下面的两个查询是等价的
select title from book_review_context where contains(review_text,'property accum harvests')>0
select title from book_review_context where contains(review_text,'property , harvests')>0
但是CATSEARCH函数调用支持ACCUM语法但不应该使用,因为CATSEARCH不计算用来与阀值进行比较的得分;
MINUS运算符从第一项搜索的得分中减去第二项搜索的得分等价于减号,所以下面的两个查询是等价的
select title from book_review_context where contains(review_text,'property minus harvests')>0
select title from book_review_context where contains(review_text,'property - harvests')>0
可以用圆括号来阐明搜索条件内的逻辑
select title from book_review_context where contains(review_text,'house or (workers and harvests')>0
3。短语精确匹配的搜索
在进行短语搜索的时候应将整个短语作为搜索串的一部分
select title from book_review_context where contains(review_text,'doctor visits')>0
若搜索的短语中包含ORACLE TEXT内的保留字,则必须使用花括号括住相应的保留字
select title from book_review_context where contains(review_text,'taengdmg {and} dfdng)>0
4。搜索互相接近的词
select title from book_review_context where contains(review_text,'property near harvests')>0
可以使用关键词NEAR也可以用;代替NEAR
5。在搜索中使用通配符
select title from book_review_context where contains(review_text,'worker%')>0
select title from book_review_context where contains(review_text,'work___)>0
6。搜索具有相同词根的词
select title from book_review_context where contains(review_text,'$worker')>0
7。模糊匹配搜索
select title from book_review_context where contains(review_text,'?worker')>0
8。搜索发音相似的词
select title from book_review_context where contains(review_text,'!worker')>0
9。使用ABOUT运算符
在ORACLE TEXT中可以搜索文档的主题
select review_text from book_review_context where contains(review_text,'about(mdgd)')>0
10。索引集
为了建立一个名为reviews的索引集可使用CREATE_INDEX_SET过程
execute ctx_ddl.create_index_set('reviews)
可以通过add_index过程添加索引到索引集中了
execute ctx_ddl.add_index('reviewers','reviewer');
分享到:
相关推荐
第25章 使用Oracle Text进行文本搜索 第26章 使用外部表 第27章 使用回闪查询 第28章 回闪:表和数据库 第Ⅳ部分 Pl/SQL 第29章 PL/SQL简介 第30章 触发器 第31章 过程、函数与程序包 第32章 使用本地动态SQL和DBMS_...
第27章 使用oracle text 进行文本搜索 第28章 使用外部表 第29章 使用闪回查询 第30章 闪回:表和数据库 第31章 sql 重放 第ⅳ部分 pl/sql 第32章 pl/sql 简介 第33章 应用程序在线升级 第34章 ...
第27章 使用oracle text 进行文本搜索 第28章 使用外部表 第29章 使用闪回查询 第30章 闪回:表和数据库 第31章 sql 重放 第ⅳ部分 pl/sql 第32章 pl/sql 简介 第33章 应用程序在线升级 第34章 ...
第27章 使用oracle text 进行文本搜索 第28章 使用外部表 第29章 使用闪回查询 第30章 闪回:表和数据库 第31章 sql 重放 第ⅳ部分 pl/sql 第32章 pl/sql 简介 第33章 应用程序在线升级 第34章 ...
第27章 使用Oracle Text进行文本搜索 第28章 使用外部表 第29章 使用闪回查询 第30章 闪问:表和数据 第31章 SQL重放 第Ⅳ部分 PL/SQL 第32章 PL/SQL简介 第33章 应用程序在线升级 第34章 应用程序在线升级 第35章...
第27章 使用Oracle Text进行文本搜索 第28章 使用外部表 第29章 使用闪回查询 第30章 闪问:表和数据 第31章 SQL重放 第Ⅳ部分 PL/SQL 第32章 PL/SQL简介 第33章 应用程序在线升级 第34章 应用程序在线升级 第35章...
Oracle Text FAQ 文本处理及搜索
使用Oracle9i和Oracle Text,可以方便而有效地利用标准的SQL工具来构建基于文本的新的开发工具或对现有应用程序进行扩展。应用程序开发人员可以在任何使用文本的Oracle数据库应用程序中充分利用Oracle Text搜索,...
Oracle Text 使Oracle9i 具备了强大的文本检索能力和智能化的文本管理能力,Oracle Text 是Oracle9i 采用的新名称,在oracle8/8i 中被称为oracle intermedia text,oracle8 以前是 oracle context cartridge。Oracle...
使用Oracle9i和Oracle Text,可以方便而有效地利用标准的SQL工具来构建基于文本的新的开发工具或对现有应用程序进行扩展。应用程序开发人员可以在任何使用文本的 Oracle数据库应用程序中充分利用Oracle Text搜索,...
不但提供了大量实用的整理工具,可满足各种不同的整理要求,使你从繁琐的修改工作中摆脱出来,而且提供的批量整理功能,可以使你在几分钟内整理上百篇文本,再不用为手上的大量不规范的文本发愁了。
Oracle Text 使Oracle9i 具备了强大的文本检索能力和智能化的文本管理能力,Oracle Text 是Oracle9i 采用的新名称,在oracle8/8i 中被称为oracle intermedia text,oracle8 以前是oracle context cartridge。Oracle ...
Oracle文本函数使我们常用的函数,下面就为您介绍几种Oracle文本函数的用法,供您参考学习,希望可以让您对Oracle文本函数有更深的认识。 (1)UPPER、LOWER和INITCAP 这三个函数更改提供给它们的文体的大小写。 ...
不使用Oracle text功能,也有很多方法可以在Oracle数据库中搜索文本.可以使用标准的INSTR函数和LIKE操作符实现。 SELECT *FROM mytext WHERE INSTR (thetext, 'Oracle') > 0; SELECT * FROM mytext WHERE thetext ...
Oracle数据库的全文检索技术已经非常完美,Oracle Text使Oracle9i具备了强大的文本检索能力和智能化的文本管理能力。Oracle Text是Oracle9i采用的新名称,在Oracle8/8i中它被称作Oracle interMedia Text,在Oracle8...
保护数据考虑的 尤其在 CAMS 双机应用模式下 能够保证数据的一致性 具体的修改操作可参考 Linux与 Oracle 安装手册 初始化参数文件是一个包含实例配置参数的文本文件 这些参数被设置为特 定的值 用于...
racle从7.3开始支持全文检索,即用户可以使用Oracle服务器的上下文(ConText)选项完成基于文本的查询。具体可以采用通配符查找、模糊匹配、相关分类、近似查找、条件加权和词意扩充等方法。在Oracle8.0.x中称为...
Oracle text使用标准的sql语言索引、查找、分析存储在oracle数据库、文件或者网络里的文本及文档。 Oracle text能进行关于文档的语言分析,使用多种方法查找文档,包括关键字、上下文查询、逻辑操作、模式匹配、...
可以使用DEFINE命令设置系统变量EDITOR来改变文本编辑器的类型,在login.sql文件中定义如下一行 DEFINE_EDITOR=vi f、运行命令文件 SQL>START test SQL>@test 常用SQL*Plus语句 a、表的创建、修改、删除 创建表的...
select text from all_source where owner=user and name='SF_SPLIT_STRING' 查看表字段 select cname from col where tname='ZW_YINGYEZ' select column_name from user_tab_columns where table_name='...