Interstage Shunsaku Data Manager アプリケーション開発ガイド - Microsoft(R) Windows(R) 2000/ Microsoft(R) Windows Server(TM) 2003 - - UNIX共通 -
目次 索引 前ページ次ページ

第2部 APIでのアプリケーション開発> 第11章 C APIのアプリケーション開発> 11.2 C APIの使用方法> 11.2.2 データの検索

11.2.2.4 ヒット件数の上限値を設定する

ヒット件数の上限値を設定することで、ソートまたは集計の応答性能を安定させることができます。ヒット件数が上限値を超えた場合には、ソートまたは集計を中断し検索条件に一致したヒット件数を通知します。

ヒット件数が上限値を超えないように検索式に条件を追加し、ソートまたは集計の検索範囲を絞り込みます。

ヒット件数の上限値を設定するには、ShunSetStatementAttr関数を使用します。

ヒット件数の上限値を設定する場合の流れについて、以下の図に示します。

[図:ヒット件数の上限値を設定する場合の流れ]

■記述例

SHUNHSTMT StmtH;
/* データ操作ハンドルの割当て */
ShunAllocHandle(ConH, &StmtH);

/* ヒット件数の上限値を設定 */
ShunSetStatementAttr(StmtH, SHUN_ATTR_HIT_COUNT_LIMIT,10000);            (1)

/* ソート式を指定して検索を実行 */
ShunSearch(StmtH, 1, NULL, 0, 30,
           "/document/base/prefecture == '大阪'", 
           "/document/base/name, /document/base/price",
           "/document/base/price/text() DESC",
           &Hit_Cnt, &Return_Cnt, &Returnable_Cnt,
           &Rec_Id_Out, &Data,
           &First_Pos, &Last_Pos);                           

/* ヒット件数が上限値を超えているかの確認 */
ShunGetStatementAttr(StmtH, SHUN_ATTR_HIT_COUNT_LIMIT_OVER,&Attr_Value);     (2)
if(Attr_Value == SHUN_TRUE) {
  printf("ヒット件数が上限値を超えました\n");
  printf("ヒット件数              = %d\n", Hit_Cnt);                        (3)
}
else {
/* 検索した結果の取出し */
  printf("ヒット件数              = %d\n", Hit_Cnt);
  if(Hit_Cnt > 0) {
   for (i = 0; i < Return_Cnt; i++) {
     printf("[結果]%d件目 = %s\n", i+1, Data[i].Data);
   }
  }
}

/* データ操作ハンドルの解放 */
ShunFreeHandle(StmtH);

◆(1) ヒット件数の上限値設定

ShunSetStatementAttr関数のパラメタにヒット件数の上限値を設定します。

ソート式が設定されていない場合には、ShunSearch関数実行時にエラーとなります。

◆(2) ヒット件数が上限値を超えているかの確認

ShunGetStatementAttr関数でヒット件数が上限値を超えているかの確認をします。

◆(3) ヒット件数の取出し

ヒット件数が上限値を超えている場合は、ヒット件数のみ取出し可能です。


目次 索引 前ページ次ページ

All Rights Reserved, Copyright(C) 富士通株式会社 2006