プライマリ・コンテンツに移動
Oracle® Textリファレンス
11gリリース2(11.2)
B61357-06
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

11 CTX_REPORTパッケージ

この章では、CTX_REPORTパッケージを使用して索引付けおよび問合せに関するレポートを作成する方法を説明します。これらのレポートは、問題のトラブルシューティングやアプリケーションのチューニングに役立ちます。

この章の内容は次のとおりです。


関連項目:

CTX_REPORTパッケージの概要、およびこの章で説明するプロシージャの使用方法は、『Oracle Textアプリケーション開発者ガイド』を参照してください。

11.1 CTX_REPORTのプロシージャ

CTX_REPORTパッケージには、次のプロシージャが含まれています。

名前 説明
DESCRIBE_INDEX
索引を説明するレポートを作成します。
DESCRIBE_POLICY
ポリシーを説明するレポートを作成します。
CREATE_INDEX_SCRIPT
指定した索引を複製するSQL*Plusスクリプトを作成します。
CREATE_POLICY_SCRIPT
指定したポリシーを複製するSQL*Plusスクリプトを作成します。
INDEX_SIZE
索引の内部オブジェクト、その表領域および使用サイズを表示するレポートを作成します。
INDEX_STATS
索引の様々な統計を表示するレポートを作成します。
QUERY_LOG_SUMMARY
問合せ統計を示すレポートを作成します。
TOKEN_INFO
デコードされたトークンに関する情報を表示するレポートを作成します。
TOKEN_TYPE
名前を変換し、数値のトークン型を戻します。

11.2 複数バージョンのファンクションの使用方法

CTX_REPORTパッケージの一部のプロシージャには、ファンクション・バージョンがあります。これらのファンクションは、次のようにコールできます。

select ctx_report.describe_index('MYINDEX') from dual;

SQL*Plusでは、サポートの目的で、次のように出力ファイルを生成して送信できます。

set long 64000
set pages 0
set heading off
set feedback off
spool outputfile
select ctx_report.describe_index('MYINDEX') from dual;
spool off

DESCRIBE_INDEX

索引を説明するレポートを作成します。このレポートには、索引メタデータの設定、使用されている索引付けオブジェクト、オブジェクトの属性の設定および索引パーティションの説明(ある場合)が含まれます。

この操作は、IN OUT CLOBパラメータを指定したプロシージャとして、またはレポートをCLOBで戻すファンクションとしてコールできます。

構文

procedure CTX_REPORT.DESCRIBE_INDEX(
  index_name     IN VARCHAR2,
  report         IN OUT NOCOPY CLOB,
  report_format  IN VARCHAR2 DEFAULT FMT_TEXT
);

function CTX_REPORT.DESCRIBE_INDEX(
  index_name     IN VARCHAR2,
  report_format  IN VARCHAR2 DEFAULT FMT_TEXT
) return CLOB;
index_name

説明する索引の名前を指定します。

レポート

レポートを書き込むCLOBロケータを指定します。

reportがNULLの場合は、セッション中に一時CLOBが作成されて戻ります。この一時CLOBは、必要に応じてコール元で解放してください。

report CLOBはレポートの生成前に切り捨てられます。したがって、既存の内容はこのコールによって上書きされます。

report_format

レポートを'TEXT'または'XML'のいずれで生成するかを指定します。デフォルトはTEXTです。また、値にCTX_REPORT.FMT_TEXTまたはCTX_REPORT.FMT_XMLも指定できます。

注意

CTX_REPORT.DESCRIBE_INDEXは、索引がFILTER BY またはORDER BY (あるいはその両方)の句を指定して作成された場合は、FILTER BYおよびORDER BYの列情報を出力します。

DESCRIBE_POLICY

ポリシーを説明するレポートを作成します。このレポートには、ポリシー・メタデータの設定、使用されている索引付けオブジェクト、オブジェクトの属性の設定が含まれます。

この操作は、IN OUT CLOBパラメータを指定したプロシージャとして、またはレポートをCLOBで戻すファンクションとしてコールできます。

構文

procedure CTX_REPORT.DESCRIBE_POLICY(
  policy_name    IN VARCHAR2,
  report         IN OUT NOCOPY CLOB,
  report_format  IN VARCHAR2 DEFAULT FMT_TEXT
);

function CTX_REPORT.DESCRIBE_POLICY(
  policy_name    IN VARCHAR2,
  report_format  IN VARCHAR2 DEFAULT FMT_TEXT
) return CLOB;
レポート

レポートを書き込むCLOBロケータを指定します。

reportがNULLの場合は、セッション中に一時CLOBが作成されて戻ります。この一時CLOBは、必要に応じてコール元で解放してください。

report CLOBはレポートの生成前に切り捨てられるため、既存の内容はこのコールによって上書きされます。

report_format

レポートを'TEXT'または'XML'のいずれで生成するかを指定します。デフォルトはTEXTです。また、値にCTX_REPORT.FMT_TEXTまたはCTX_REPORT.FMT_XMLも指定できます。

policy_name

説明するポリシーの名前を指定します。

CREATE_INDEX_SCRIPT

指定したテキスト索引を複製するSQL*Plusスクリプトを作成します。

作成されたスクリプトには、指定したテキスト索引に使用されているプリファレンスと同一のプリファレンスが含まれます。ただし、プリファレンス名は別の名前になります。

この操作は、IN OUT CLOBパラメータを指定したプロシージャとして、またはレポートをCLOBで戻すファンクションとしてコールできます。

構文

procedure CTX_REPORT.CREATE_INDEX_SCRIPT(
  index_name      in varchar2,
  report          in out nocopy clob,
  prefname_prefix in varchar2 default null
);

function CTX_REPORT.CREATE_INDEX_SCRIPT(
  index_name      in varchar2,
  prefname_prefix in varchar2 default null
) return clob;
index_name

索引の名前を指定します。

レポート

スクリプトを書き込むCLOBロケータを指定します。

reportがNULLの場合は、セッション中に一時CLOBが作成されて戻ります。この一時CLOBは、必要に応じてコール元で解放してください。

report CLOBはレポートの生成前に切り捨てられます。したがって、既存の内容はこのコールによって上書きされます。

prefname_prefix

オプションで、プリファレンス名に使用するプリフィックスを指定します。

prefname_prefixを省略またはNULLにした場合は、索引名が使用されます。prefname_prefixは、索引の長さに関する制限に従います。

注意

CTX_REPORT.CREATE_INDEX_SCRIPTは、CREATE INDEX文の必要なFILTER BYおよびORDER BY句も生成します。

関連項目

「CREATE INDEX」

CREATE_POLICY_SCRIPT

指定したテキスト・ポリシーを複製するSQL*Plusスクリプトを作成します。

作成されたスクリプトには、指定したテキスト・ポリシーに使用されているプリファレンスと同一のプリファレンスが含まれます。

この操作は、IN OUT CLOBパラメータを指定したプロシージャとして、またはレポートをCLOBで戻すファンクションとしてコールできます。

構文

procedure CTX_REPORT.CREATE_POLICY_SCRIPT(
  policy_name      in varchar2,
  report           in out nocopy clob,
  prefname_prefix  in varchar2 default null
);

function CTX_REPORT.CREATE_POLICY_SCRIPT(
  policy_name      in varchar2,
  prefname_prefix  in varchar2 default null
) return clob;
policy_name

ポリシーの名前を指定します。

レポート

スクリプトを書き込むロケータを指定します。

reportがNULLの場合は、セッション中に一時CLOBが作成されて戻ります。この一時CLOBは、必要に応じてコール元で解放してください。

report CLOBはレポートの生成前に切り捨てられます。したがって、既存の内容はこのコールによって上書きされます。

prefname_prefix

オプションで、プリファレンス名に使用するプリフィックスを指定します。prefname_prefixを省略またはNULLにした場合は、ポリシー名が使用されます。prefname_prefixは、ポリシーの長さに関する制限に従います。

INDEX_SIZE

テキスト索引またはテキスト索引パーティションの内部オブジェクト、その割当て済表領域および使用サイズを表示するレポートを作成します。

この操作は、IN OUT CLOBパラメータを指定したプロシージャとして、またはレポートをCLOBで戻すファンクションとしてコールできます。

構文

procedure CTX_REPORT.INDEX_SIZE(
  index_name     IN VARCHAR2,
  report         IN OUT NOCOPY CLOB,
  part_name      IN VARCHAR2 DEFAULT NULL,
  report_format  IN VARCHAR2 DEFAULT FMT_TEXT
);

function CTX_REPORT.INDEX_SIZE(
  index_name     IN VARCHAR2,
  part_name      IN VARCHAR2 DEFAULT NULL,
  report_format  IN VARCHAR2 DEFAULT FMT_TEXT
) return clob;
index_name

説明する索引の名前を指定します。

レポート

レポートを書き込むCLOBロケータを指定します。

reportがNULLの場合は、セッション中に一時CLOBが作成されて戻ります。この一時CLOBは、必要に応じてコール元で解放してください。

report CLOBはレポートの生成前に切り捨てられます。したがって、既存の内容はこのコールによって上書きされます。

part_name

索引パーティションの名前を指定します(オプション)。part_nameがNULLで、索引がローカル・パーティション・テキスト索引の場合は、すべてのパーティションに関する全オブジェクトが表示されます。part_nameを指定した場合は、特定のパーティションのオブジェクトのみが表示されます。

report_format

レポートを'TEXT'または'XML'のいずれで生成するかを指定します。デフォルトはTEXTです。また、値にCTX_REPORT.FMT_TEXTまたはCTX_REPORT.FMT_XMLも指定できます。

注意

CTX_REPORT.INDEX_SIZEは、dr$索引名$S表の情報も出力します。

関連項目

「CREATE INDEX」

INDEX_STATS

テキスト索引について計算された様々な統計を表示するレポートを作成します。

このプロシージャでは、テキスト索引表全体がスキャンされるため、大規模な索引の場合は実行時間が長くなる可能性があります。

構文

procedure ctx_report.index_stats(
  index_name     IN VARCHAR2,
  report         IN OUT NOCOPY CLOB,
  part_name      IN VARCHAR2 DEFAULT NULL,
  frag_stats     IN BOOLEAN DEFAULT TRUE,
  list_size      IN NUMBER DEFAULT 100,
  report_format  IN VARCHAR2 DEFAULT FMT_TEXT,
  stat_type      IN VARCHAR2 DEFAULT NULL
);
index_name

説明する索引の名前を指定します。これはCONTEXT索引である必要があります。

レポート

レポートを書き込むCLOBロケータを指定します。reportがNULLの場合は、セッション中に一時CLOBが作成されて戻ります。この一時CLOBは、必要に応じてコール元で解放してください。

report CLOBはレポートの生成前に切り捨てられます。したがって、既存の内容はこのコールによって上書きされます。

part_name

索引パーティションの名前を指定します。索引がローカル・パーティション索引である場合は、part_nameを指定する必要があります。INDEX_STATSにより、この索引パーティションに関する統計が計算されます。

frag_stats

断片化の統計を計算する場合は、TRUEを指定します。frag_statsがFALSEの場合、索引データのサイズに関する統計はレポートに表示されません。ただし、トークン統計を計算するために処理にかかる時間とリソースは少なくなります。

list_size

各コンパイル済リストに表示する要素数を指定します。list_sizeの最大値は1000です。

report_format

レポートを'TEXT'または'XML'のいずれで生成するかを指定します。デフォルトはTEXTです。また、値にCTX_REPORT.FMT_TEXTまたはCTX_REPORT.FMT_XMLも指定できます。

stat_type

出力する推定統計を指定します。このパラメータを設定すると、frag_statsは無視されます。有効な値は、次のとおりです。

EST_FRAG_STATS 推定される索引の断片化統計を取得します。このタイプを指定すると、list_sizeは無視されます。
EST_FREQUENT_TOKENS 索引に対する推定問合せ頻度が高いトークンを取得します。100までの値をlist_sizeに指定できます。
EST_TOKENS_TO_OPTIMIZE 問合せ頻度と断片化に基づいて、最適化の必要性が最も高いトークンを示します。100までの値をlist_sizeに指定できます。
EST_SLOWEST_QUERIES 索引に対して実行速度が最も遅い問合せを示します。100までの値をlist_sizeに指定できます。


注意:

stat_typeの推定統計は、query_statsが使用可能な場合にのみ利用できます。「CTX_OUTPUT.ENABLE_QUERY_STATS」および「CTX_OUTPUT.DISABLE_QUERY_STATS」を参照してください。

create table output (result CLOB);
 
  declare
    x clob := null;
  begin
    ctx_report.index_stats('tdrbprx21',x);
    insert into output values (x);
    commit;
    dbms_lob.freetemporary(x);
  end;
  /
 
set long 32000
set head off
set pagesize 10000
select * from output; 

CONTEXT索引に関するINDEX_STATSのサンプル出力を示します。このレポートは、明確にするために一部が切り捨てられています。トークン統計の一部と断片化統計のすべてが記載されています。

断片化統計は、レポートの最後にあります。このレポートによって、最適な行の断片化、予想される索引内の不要データ量、および最も断片化されているトークンのリストを確認できます。CTX_DDL.OPTIMIZE_INDEXを実行すると索引がクリーン・アップされます。

=================================================================
              STATISTICS FOR "DR_TEST"."TDRBPRX21"
=================================================================

indexed documents:                                          53
allocated docids:                                           68
$I rows:                                                16,259

-----------------------------------------------------------------
                        TOKEN STATISTICS
-----------------------------------------------------------------

unique tokens:                                          13,445
average $I rows for each token:                           1.21
tokens with most $I rows:
  telecommunications industry (THEME)                        6
  science and technology (THEME)                             6
  EMAIL (FIELD SECTION "SOURCE")                             6
  DEC (FIELD SECTION "TIMESTAMP")                            6
  electronic mail (THEME)                                    6
  computer networking (THEME)                                6
  communications (THEME)                                     6
  95 (FIELD SECTION "TIMESTAMP")                             6
  15 (FIELD SECTION "TIMESTAMP")                             6
  HEADLINE (ZONE SECTION)                                    6

average size for each token:                                 8
tokens with largest size:
  T (NORMAL)                                               405
  SAID (NORMAL)                                            313
  HEADLINE (ZONE SECTION)                                  272
  NEW (NORMAL)                                             267
  I (NORMAL)                                               230
  MILLION (PREFIX)                                         222
  D (NORMAL)                                               219
  MILLION (NORMAL)                                         215
  U (NORMAL)                                               192
  DEC (FIELD SECTION "TIMESTAMP")                          186

average frequency for each token:                         2.00
most frequent tokens:
  HEADLINE (ZONE SECTION)                                   68
  DEC (FIELD SECTION "TIMESTAMP")                           62
  95 (FIELD SECTION "TIMESTAMP")                            62
  15 (FIELD SECTION "TIMESTAMP")                            62
  T (NORMAL)                                                61
  D (NORMAL)                                                59
  881115 (THEME)                                            58
  881115 (NORMAL)                                           58
  I (NORMAL)                                                55
  geography (THEME)                                         52

token statistics by type:
  token type:                                           NORMAL
    unique tokens:                                       6,344
    total rows:                                          7,631
    average rows:                                         1.20
    total size:                              67,445 (65.86 KB)
    average size:                                           11
    average frequency:                                    2.33
    most frequent tokens:
      T                                                     61
      D                                                     59
      881115                                                58
      I                                                     55
      SAID                                                  45
      C                                                     43
      NEW                                                   36
      MILLION                                               32
      FIRST                                                 28
      COMPANY                                               27

  token type:                                            THEME
    unique tokens:                                       4,563
    total rows:                                          5,523
    average rows:                                         1.21
    total size:                              21,930 (21.42 KB)
    average size:                                            5
    average frequency:                                    2.40
    most frequent tokens:
      881115                                                58
      political geography                                   52
      geography                                             52
      United States                                         51
      business and economics                                50
      abstract ideas and concepts                           48
      North America                                         48
      science and technology                                46
      NKS                                                   34
      nulls                                                 34

このレポートの断片化統計の部分は、次のとおりです。

-----------------------------------------------------------------
                    FRAGMENTATION STATISTICS
-----------------------------------------------------------------

total size of $I data:                     116,772 (114.04 KB)

$I rows:                                                16,259
estimated $I rows if optimal:                           13,445
estimated row fragmentation:                              17 %

garbage docids:                                             15
estimated garbage size:                      21,379 (20.88 KB)

most fragmented tokens:
  telecommunications industry (THEME)                     83 %
  science and technology (THEME)                          83 %
  EMAIL (FIELD SECTION "SOURCE")                          83 %
  DEC (FIELD SECTION "TIMESTAMP")                         83 %
  electronic mail (THEME)                                 83 %
  computer networking (THEME)                             83 %
  communications (THEME)                                  83 %
  95 (FIELD SECTION "TIMESTAMP")                          83 %
  HEADLINE (ZONE SECTION)                                 83 %
  15 (FIELD SECTION "TIMESTAMP")                          83 %

注意

これらのメタデータを利用できるのは、索引に対する推定統計(索引の断片化推定統計、推定問合せ頻度の高いトークン、推定される断片化と問合せ頻度が最も高いトークン、および特定の索引に対する推定実行速度が最も遅い問合せ)のQUERY_STATSがオンに設定されている場合のみです。

CTX_REPORT.INDEX_STATSは、dr$索引名$S表の情報も出力します。これは、セクション・データ(SDATA)の表です。

関連項目

「CTX_OUTPUT.ENABLE_QUERY_STATS

「CTX_OUTPUT.DISABLE_QUERY_STATS

「CREATE INDEX」

QUERY_LOG_SUMMARY

ログ記録された問合せのレポートを取得します。

QUERY_LOG_SUMMARYを使用して、ログ記録した問合せを分析できます。たとえば、大型動物のデータベースを検索するアプリケーションを使用している場合、データベースへの問合せを分析した結果、ユーザーが頻繁にmouseというワードを検索していることがわかったとします。この分析に基づき、mouseを検索すると、失敗した検索結果を戻すかわりに、ユーザーを小型動物のデータベースにリダイレクトするようアプリケーションを書き換えることも考えられます。

問合せの分析により、次のことがわかります。

  • 発行された問合せ

  • 成功した問合せ

  • 失敗した問合せ

  • 各問合せの発行回数

これらの要素を様々な方法で組み合せ、たとえばアプリケーションで失敗した問合せの上位50位までを調べることが可能です。

問合せのロギングはCTX_OUTPUT.START_QUERY_LOGで開始され、CTX_OUTPUT.END_QUERY_LOGで終了します。


注意:

CTX_REPORT.QUERY_LOG_SUMMARYを使用するには、CTXSYSで接続する必要があります。

構文

procedure CTX_REPORT.QUERY_LOG_SUMMARY(
   logfile       IN VARCHAR2,
   indexname     IN VARCHAR2 DEFAULT NULL,
   result_table  IN OUT NOCOPY QUERY_TABLE,
   row_num       IN NUMBER,
   most_freq     IN BOOLEAN DEFAULT TRUE,
   has_hit       IN BOOLEAN DEFAULT TRUE
);
logfile

問合せが含まれているログ・ファイルの名前を指定します。

indexname

サマリー・レポートを取得するCONTEXT索引の名前を指定します。NULLを指定すると、すべてのCONTEXT索引のサマリー・レポートがプロシージャによって提供されます。

result_table

QUERY_LOG_SUMMARYの結果の格納先となるTABLE OF RECORD型のインメモリー表の名前を指定します。デフォルトは、システム・パラメータLOG_DIRECTORYで指定した場所です。

row_num

restabによって名付けられた表にレポートされるQUERY_LOG_SUMMARYからの結果の行数。たとえば、この数値が10、most_freqがTRUE、has_hitがTRUEの場合、プロシージャにより、頻度が上位10位までの成功した問合せ(ヒットが戻された問合せ)が戻されます。

most_freq

QUERY_LOG_SUMMARYによって最も頻度の高い、または頻度の低い問合せを戻すかを指定します。デフォルトは最も頻度の高い問合せです。most_freqFALSEに設定されている場合、最も頻度の低い成功した問合せがプロシージャによって戻されます。

has_hit

QUERY_LOG_SUMMARYにより、成功した(ヒットを生成した)問合せ、または失敗した問合せのいずれを戻すかを指定します。デフォルトは成功した問合せです。has_hitFALSEに設定すると、失敗した問合せが戻されます。

次の例では、問合せログの使用例を示します。

まず、CTXSYSとして接続します。次に、2つの表を作成および移入して、それぞれ索引を作成します。

create table qlogtab1 (tk number primary key, text varchar2(2000));
insert into qlogtab1 values(1, 'The Roman name for France was Gaul.');
insert into qlogtab1 values(2, 'The Tour de France is held each summer.');
insert into qlogtab1 values(3, 'Jacques Anatole Thibault took the pen name Anatole France.');
create index idx_qlog1 on qlogtab1(text) indextype is ctxsys.context;
create table qlogtab2 (tk number primary key, text varchar2(2000));
insert into qlogtab2 values(1, 'The Great Wall of China is about 2400 kilometers long');
insert into qlogtab2 values(2, 'Soccer dates back at least to 217 C.E.');
insert into qlogtab2 values(3, 'The Corn Palace is a tourist attraction in South Dakota.');
create index idx_qlog2 on qlogtab2(text) indextype is ctxsys.context;

query_logというログを作成し、問合せのロギングを開始します。

exec ctx_output.start_query_log('query.log');

いくつかの問合せを行います(失敗する問合せも含めます)。

select text from qlogtab1 where contains(text, 'France',1)>0;
select text from qlogtab1 where contains(text, 'cheese',1)>0;
select text from qlogtab1 where contains(text, 'Text Wizard',1)>0;
select text from qlogtab2 where contains(text, 'Corn Palace',1)>0;
select text from qlogtab2 where contains(text, 'China',1)>0;
select text from qlogtab1 where contains(text, 'Text Wizards',1)>0;
select text from qlogtab2 where contains(text, 'South Dakota',1)>0;
select text from qlogtab1 where contains(text, 'Text Wizard',1)>0;
select text from qlogtab2 where contains(text, 'China',1)>0;
select text from qlogtab1 where contains(text, 'Text Wizard',1)>0;
select text from qlogtab2 where contains(text, 'company',1)>0;
select text from qlogtab1 where contains(text, 'Text Wizard',1)>0;
select text from qlogtab1 where contains(text, 'France',1)>0;
select text from qlogtab1 where contains(text, 'database',1)>0;
select text from qlogtab2 where contains(text, 'high-tech',1)>0;
select text from qlogtab1 where contains(text, 'database',1)>0;
select text from qlogtab1 where contains(text, 'France',1)>0;
select text from qlogtab1 where contains(text, 'Japan',1)>0;
select text from qlogtab1 where contains(text, 'Egypt',1)>0;
select text from qlogtab1 where contains(text, 'Argentina',1)>0;
select text from qlogtab1 where contains(text, 'Argentina',1)>0;
select text from qlogtab1 where contains(text, 'Argentina',1)>0;
select text from qlogtab1 where contains(text, 'Japan',1)>0;
select text from qlogtab1 where contains(text, 'Egypt',1)>0;
select text from qlogtab1 where contains(text, 'Air Shuttle',1)>0;
select text from qlogtab1 where contains(text, 'Argentina',1)>0;

問合せが終了したら、問合せのロギングを終了します。

exec ctx_output.end_query_log;

QUERY_LOG_SUMMARYを使用して問合せレポートを取得します。最初の例では、頻度が上位3位の成功した問合せを戻すよう指定します。まず、結果表を宣言します(the_queries)。

set serveroutput on;
declare
   the_queries ctx_report.query_table;
begin
   ctx_report.query_log_summary('query.log', null, the_queries, 
                   row_num=>3, most_freq=>TRUE, has_hit=>TRUE);
   dbms_output.put_line('The 3 most frequent queries returning hits');
   dbms_output.put_line('number of times  query string');
   for i in 1..the_queries.count loop
     dbms_output.put_line(the_queries(i).times||'                '||the_queries(i).query);
   end loop;
end;
/

次の結果が戻されます。

TThe 3 most frequent queries returning hits
number of times  query string
3                France
2                China
1                Corn Palace

次に、idx_qlog1に対する、頻度が上位3位の成功した問合せを戻すよう指定します。

declare
   the_queries ctx_report.query_table;
begin
   ctx_report.query_log_summary('query.log', 'idx_qlog1', the_queries, 
                   row_num=>3, most_freq=>TRUE, has_hit=>TRUE);
   dbms_output.put_line('The 3 most frequent queries returning hits for index idx_qlog1');
   dbms_output.put_line('number of times  query string');
   for i in 1..the_queries.count loop
     dbms_output.put_line(the_queries(i).times||'                '||the_queries(i).query);
   end loop;
end;
/

Franceに対する問合せのみが成功したため、ctx_report.query_log_summaryによって次の結果が戻されます。

The 3 most frequent queries returning hits for index idx_qlog1
number of times  query string
3                France

最後に、ヒットが戻されなかった、頻度が下位3位までの問合せ(つまり、失敗し、頻度が低かった問合せ)を戻すよう指定します。この場合、両方のCONTEXT索引に対する問合せを調べるため、indexnameパラメータにNULLを設定します。

declare
   the_queries ctx_report.query_table;
begin
   ctx_report.query_log_summary('query.log', null, the_queries, row_num=>3, 
                   most_freq=>FALSE, has_hit=>FALSE); 
   dbms_output.put_line('The 3 least frequent queries returning no hit');
   dbms_output.put_line('number of times  query string');
   for i in 1..the_queries.count loop
     dbms_output.put_line(the_queries(i).times||'                '||the_queries(i).query);
   end loop;
end;
/

次の結果が戻されます。

The 3 least frequent queries returning no hit                               
number of times  query string                                              
1                high-tech                                                 
1                company                                                   
1                cheese                                                    

ArgentinaおよびJapanは複数回問い合されたため、このリストには含まれていません。また、Corn Palaceに対する問合せは成功したため、やはりこのリストには含まれていません。

TOKEN_INFO

デコードされたトークンに関する情報を表示するレポートを作成します。このプロシージャでは、トークンの情報全体がスキャンされるため、大規模なトークンの場合は実行時間が長くなる可能性があります。

この操作は、IN OUT CLOBパラメータを指定したプロシージャとして、またはレポートをCLOBで戻すファンクションとしてコールできます。

構文

procedure CTX_REPORT.TOKEN_INFO(
  index_name      IN VARCHAR2,
  report          IN OUT NOCOPY CLOB,
  token           IN VARCHAR2,
  token_type      IN NUMBER,
  part_name       IN VARCHAR2 DEFAULT NULL,
  raw_info        IN BOOLEAN  DEFAULT FALSE,
  decoded_info    IN BOOLEAN  DEFAULT TRUE,
  report_format   IN VARCHAR2 DEFAULT FMT_TEXT
);

function CTX_REPORT.TOKEN_INFO(
  index_name      IN VARCHAR2,
  token           IN VARCHAR2,
  token_type      IN NUMBER,
  part_name       IN VARCHAR2 DEFAULT NULL,
  raw_info        IN VARCHAR2 DEFAULT 'N',
  decoded_info    IN VARCHAR2 DEFAULT 'Y',
  report_format   IN VARCHAR2 DEFAULT FMT_TEXT
) return clob;
index_name

索引の名前を指定します。

レポート

レポートを書き込むCLOBロケータを指定します。

reportがNULLの場合は、セッション中に一時CLOBが作成されて戻ります。この一時CLOBは、必要に応じてコール元で解放してください。

report CLOBはレポートの生成前に切り捨てられます。したがって、既存の内容はこのコールによって上書きされます。トークンは、渡したトークン型によっては大/小文字が区別されます。

token

トークン・テキストを指定します。

token_type

トークン型を指定します。TOKEN_TYPEファンクションで戻される数値を使用できます。THEMEZONEATTRPATHおよびPATH ATTRのトークン型は、大/小文字が区別されます。

これ以外のトークン型でも、大/小文字を区別する索引のレクサーを通じて渡された場合は、トークン入力で大/小文字が区別されます。

part_name

索引パーティションの名前を指定します。

索引がローカル・パーティション索引である場合は、part_nameを指定する必要があります。TOKEN_INFOは、指定した索引パーティションのみに適用されます。

raw_info

索引データの16進ダンプを含める場合は、TRUEを指定します。raw_infoをTRUEに指定すると、token_info列にRAWデータの16進ダンプが含まれます。

decoded_info

デコードを指定し、DOCIDおよびオフセット・データを追加します。decoded_infoにFALSEを指定すると、トークン情報はCTX_REPORTによってデコードされません。これは、データのダンプのみを行う場合に便利です。

report_format

レポートを'TEXT'または'XML'のいずれで生成するかを指定します。デフォルトはTEXTです。また、値にCTX_REPORT.FMT_TEXTまたはCTX_REPORT.FMT_XMLも指定できます。

TOKEN_TYPE

英語名を数値のトークン型に変換する補助的なファンクションです。token_info、またはtoken_typeを取得するその他のCTX APIで使用すると便利です。

function token_type(
  index_name in varchar2,
  type_name  in varchar2
) return number;

TOKEN_TYPE_TEXT      constant number := 0;
TOKEN_TYPE_THEME     constant number := 1;
TOKEN_TYPE_ZONE_SEC  constant number := 2;
TOKEN_TYPE_ORIG           constant number := 3,
TOKEN_TYPE_ATTR_TEXT constant number := 4;
TOKEN_TYPE_ATTR_SEC  constant number := 5;
TOKEN_TYPE_PREFIX    constant number := 6;
TOKEN_TYPE_PATH_SEC  constant number := 7;
TOKEN_TYPE_PATH_ATTR constant number := 8;
TOKEN_TYPE_STEM      constant number := 9;
index_name

索引の名前を指定します。

type_name

token_typeの英語名を指定します。次に、適切な入力文字列を示します。すべての入力で、大/小文字は区別されません。

入力 意味 戻される型
TEXT 通常のテキスト・トークン 0
THEME テーマ・トークン 1
ZONE SEC ゾーン・トークン 2
ORIGINAL 原形トークン 3
ATTR TEXT 属性内のテキスト 4
ATTR SEC 属性セクション 5
PREFIX プリフィックス・トークン 6
PATH SEC パス・セクション 7
PATH ATTR パス属性セクション 8
STEM 語幹トークン 9
FIELD <name> TEXT フィールド・セクション<name>のテキスト・トークン 16-79
FIELD <name> PREFIX フィールド・セクション<name>のプリフィックス・トークン 616-916
FIELD <name> STEM フィールド・セクション<name>の語幹トークン 916-979
NDATA <name> NDATA型トークン 200-299
TOKEN_TYPE_ATTR_TXT_PFIX 属性テキストのプリフィックス 604
TOKEN_TYPE_ATTR_TXT_STEM 属性テキストの語幹 904

FIELD型では、索引メタデータを読み取る必要があります。したがって、この目的のためにコールが大量に発生する場合は、token_typeを繰返しコールするのではなく、ローカル変数に値をキャッシュした方が効率的です。

定数型(0から9)にも、このパッケージで定義済の定数があります。

注意

MDATAトークンのトークン・タイプを取得する場合、CTX_REPORT.TOKEN_TYPEは使用しないでください。かわりにMDATA演算子を使用してください。(「MDATA」を参照してください。)使用する構文は、MDATA fieldnameです。

typenum := ctx_report.token_type('myindex', 'field author text');