2013-03-25 24 views
2

我知道我可以使用ctx_query.count_hits來算的文件相匹配的查詢, 數同樣,我可以使用找到索引在我的oracle.context索引文件的數量?

count(*) where CONTAINS(...) 

但這些只是選項如果我真的有一個查詢。如果我傳遞一個空字符串作爲查詢,這些函數會拋出異常(感謝oracle ...)。所以,

有沒有一種方法來計算我的 oracle.text索引索引的文件總數?

回答

1

的首選方法是使用CTX_REPORT Package,無論是describe_index

set long 50000 
select ctx_report.describe_index('MYINDEX') from dual; 

會給你索引的文件數量docid count專欄:

=========================================================================== 
          INDEX DESCRIPTION 
=========================================================================== 
index name:     "SCHEMA"."MYINDEX" 
index id:      1130 
index type:     context 

status:      INDEXED 

full optimize token: 
full optimize count: 
docid count:     6909265 
nextid:      6909266 

另外,使用INDEX_STATS

create table output (result CLOB); 

    declare 
    x clob := null; 
    begin 
    ctx_report.index_stats('MYINDEX',x); 
    insert into output values (x); 
    commit; 
    dbms_lob.freetemporary(x); 
    end; 
/

set long 32000 
set head off 
set pagesize 10000 
select * from output; 
=========================================================================== 
      STATISTICS FOR "SCHEMA"."MYINDEX" 
=========================================================================== 
indexed documents:            6,909,265 

也有用得到索引的大小:

set long 50000 
select ctx_report.index_size('MYINDEX') from dual; 
0

可以使用CTX ...觀點:

select idx_name, idx_table_owner, idx_table, idx_docid_count 
from ctx_user_indexes