我知道我可以ctx_query.count_hits
用来计算与查询匹配的文档数,同样,我可以使用
count(*) where CONTAINS(...)
但如果我真的有疑问,这些只是选项。如果我将空字符串作为查询传递(感谢 oracle ...),这些函数会引发异常。所以,
有没有办法计算我的 oracle.text 索引索引的文档总数?
我知道我可以ctx_query.count_hits
用来计算与查询匹配的文档数,同样,我可以使用
count(*) where CONTAINS(...)
但如果我真的有疑问,这些只是选项。如果我将空字符串作为查询传递(感谢 oracle ...),这些函数会引发异常。所以,
有没有办法计算我的 oracle.text 索引索引的文档总数?
首选方法是使用CTX_REPORT 包,或者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;
您可以使用 CTX... 视图:
select idx_name, idx_table_owner, idx_table, idx_docid_count
from ctx_user_indexes