与其他Oracle产品相比,Oracle Text的功能有什么区别? Oracle数据库具有良好的索引功能,所以为什么我需要使用Oracle Text来执行索引和检索文本?oracle文本与其他oracle软件产品功能的区别
0
A
回答
1
考虑此表及其数据:
create table t23
(id number,
txt varchar2(4000)
)
/
insert into t23
select 1, 'Please read the Oracle documentation' from dual union all
select 2, 'This is some sample text' from dual union all
select 3, 'We all love Oracle database' from dual union all
select 4, 'It has so many features' from dual union all
select 5, 'What is full text search anyway?' from dual
/
的任务是发现所有在txt
列包含单词“甲骨文”的记录。有几种使用标准操作符的选项。例如
select * from t23
where txt like '%Oracle%'
/
或
select * from t23
where instr(txt,'Oracle') > 0
/
但这些查询将执行全表扫描。这样的玩具桌不是问题,而是现实生活中的一大痛苦。在txt
上构建B树索引将无济于事。因为整个字符串都是索引的,所以索引可能只在搜索字符串的前导部分时有用,即where text like 'Oracle%'
(甚至可能不是)。
相比之下,文本索引将字符串拆分为令牌和每次出现的令牌的索引。
CREATE INDEX t23_txt_idx ON t23(txt) INDEXTYPE IS CTXSYS.CONTEXT;
因此,与文字,我们可以写这样的查询:
select * from t23
where contains(txt,'Oracle') > 0
/
将在表演方式执行:
SQL> select * from table(dbms_xplan.display);
PLAN_TABLE_OUTPUT
------------------------------------------------------------------------------------------------------------------------------------------------------
Plan hash value: 4178983470
-------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
-------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 2027 | 4 (0)| 00:00:01 |
| 1 | TABLE ACCESS BY INDEX ROWID| T23 | 1 | 2027 | 4 (0)| 00:00:01 |
|* 2 | DOMAIN INDEX | T23_TXT_IDX | | | 4 (0)| 00:00:01 |
-------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
2 - access("CTXSYS"."CONTAINS"("TXT",'Oracle')>0)
Note
-----
- dynamic sampling used for this statement (level=2)
18 rows selected.
SQL>
索引的这种形式适合于大量的自由文本,包括文档。
文本索引的成本是它们的维护,它非常高,可能不是事务性的(并且取决于索引类型)。因此,当我们确实需要定期搜索字符串的内容时,合理使用文本索引非常重要。 Find out more。
现在Oracle Text是常规数据库的一部分。不过,我看到你已经标记了你的问题[Oracle9i]。文字是Standard Edition in 9iR2的一部分,不知道R1。
相关问题
- 1. Oracle产品与否?
- 2. SQL文本功能的Oracle
- 3. su oracle与su-oracle的区别?
- 4. 插件产品与功能产品
- 5. 无法卸载Oracle产品
- 6. Oracle软件安装的响应文件是否可以与其他软件统一?
- 7. 功能与其他功能
- 8. 区别:本机和非本机Oracle SQL?
- 9. Oracle中TABLE_NAME与“TABLE_NAME”的区别?
- 10. 管理“产品开发”和“软件开发”之间的区别
- 11. 功能与在其他数据文件
- 12. Oracle版本之间的区别
- 13. ORACLE功能
- 14. Oracle Translate功能
- 15. 从Oracle功能
- 16. 的Oracle APEX功能
- 17. 功能与新功能的JavaScript区别
- 18. Eclipse RCP:构建具有需要其他功能的功能的产品
- 19. 版本控制中的Oracle软件包?
- 20. Oracle分区性能
- 21. 任何其他选项都没有使用Oracle分析功能
- 22. Oracle的TimesTen和Oracle NoSQL是同一产品吗?
- 23. Oracle 11g IMP功能
- 24. 功能表在Oracle
- 25. PL/SQL ORACLE功能
- 26. 想要获得确保oracle 11.2.0.2与AIX 7.1兼容的oracle产品链接?
- 27. 大量的Oracle软件包
- 28. Oracle Apex“数据库链接” - 仅适用于Oracle或Oracle或其他版本?
- 29. Eclipse RCP中的插件,功能和产品之间有什么区别?
- 30. 点产品功能
也许我的英文不够好,但我认为你的问题并不清楚:Oracle Text是Oracle数据库的集成组件。在寻求帮助之前,您应该阅读文档(http://docs.oracle.com/cd/E11882_01/text.112/e24436/toc.htm) – Cyryl1972