2

クエリに一致するドキュメントの数をカウントするために使用できることはわかってctx_query.count_hitsいます。同様に、

count(*) where CONTAINS(...)

しかし、これらは私が実際にクエリを持っている場合の唯一のオプションです。空の文字列をクエリとして渡すと、これらの関数は例外をスローします(oracleに感謝します...)。それで、

oracle.textインデックスによってインデックス付けされたドキュメントの総数をカウントする方法はありますか?

4

2 に答える 2

2

推奨される方法は、describe_indexのいずれかのCTX_REPORTパッケージを使用することです

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;
于 2013-04-02T18:09:09.510 に答える
0

CTX ...ビューを使用できます:

select idx_name, idx_table_owner, idx_table, idx_docid_count 
from ctx_user_indexes
于 2013-03-26T13:35:33.587 に答える