2013-03-25 88 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