與其他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