7.26.17. grn_inspect#

7.26.17.1. 概要#

grn_obj を調べるには2種類の関数があります。1つは grn_inspect 関数で、もう1つは grn_p 関数です。

grn_inspect 系の関数のリストは次の通りです。調査したオブジェクトの内容を指定したオブジェクトに設定します。

grn_p 系の関数のリストは次の通りです。調査したオブジェクトの内容をコンソールに出力します。

7.26.17.2. #

以下はオブジェクトを調査する例です。

grn_obj buffer;
GRN_TEXT_INIT(&buffer, 0);
grn_inspect(&context, &buffer, obj);
/* equivalent to grn_p(ctx, obj); */
printf("inspected: <%.*s>\n", (int)GRN_TEXT_LEN(&buffer), GRN_TEXT_VALUE(&buffer));

7.26.17.3. リファレンス#

grn_obj *grn_inspect_encoding(grn_ctx *ctx, grn_obj *buffer, grn_encoding encoding)#

Added in version 4.0.8.

指定した obj オブジェクトを調査します。

パラメータ:
  • ctx -- その時点のコンテキスト。

  • buffer -- エンコーディング名が設定されるオブジェクト

  • encoding -- 調査対象のエンコーディング。エンコーディングは GRN_ENC_DEFAULTGRN_ENC_NONEGRN_ENC_EUC_JPGRN_ENC_UTF8GRN_ENC_SJISGRN_ENC_LATIN1GRN_ENC_KOI8R のいずれかでなければなりません。

戻り値:

エンコーディング名が設定される buffer オブジェクト。不正な encoding が渡された場合、 (unknown: ENCODING)buffer に設定されます。

grn_obj buffer;
GRN_TEXT_INIT(&buffer, 0);
grn_inspect_encoding(&context, &buffer, GRN_ENC_UTF8);
printf("%.*s\n", (int)GRN_TEXT_LEN(&buffer), GRN_TEXT_VALUE(&buffer));

指定したエンコーディング名が次のように表示されます:

UTF-8
grn_obj *grn_inspect_type(grn_ctx *ctx, grn_obj *buffer, unsigned char type)#

Added in version 4.0.8.

指定した obj オブジェクトを調査します。

パラメータ:
  • ctx -- その時点のコンテキスト。

  • buffer -- 型の名前が設定されるオブジェクト

  • type -- 調査対象の型

戻り値:

型の名前が設定される buffer オブジェクト。正しくない type が渡された場合、 (unknown: TYPE_IN_HEX)buffer に設定されます。

grn_obj buffer;
GRN_TEXT_INIT(&buffer, 0);
grn_inspect_type(&context, &buffer, obj->header.type);
printf("#=> %.*s\n", (int)GRN_TEXT_LEN(&buffer), GRN_TEXT_VALUE(&buffer));

obj が組込の型の場合、型の名前は次のように表示されます:

GRN_TYPE
grn_obj *grn_inspect_query_log_flags(grn_ctx *ctx, grn_obj *buffer, unsigned int flags)#

Added in version 7.0.4.

指定した flag を調査します。

パラメータ:
  • ctx -- その時点のコンテキスト。

  • buffer -- フラグの名前が設定されるオブジェクト

  • flags -- 調査対象の型

戻り値:

フラグの名前が設定される buffer オブジェクト。不正な flags が与えられた場合、空の文字列が buffer に設定されます。

grn_obj buffer;
GRN_TEXT_INIT(&buffer, 0);
int current_flags = grn_query_logger_get_flags(&context);
grn_inspect_query_log_flags(&context, &buffer, current_flags);
printf("%.*s\n", (int)GRN_TEXT_LEN(&buffer), GRN_TEXT_VALUE(&buffer));

クエリーログのフラグは次のように表示されます:

COMMAND|RESULT_CODE|DESTINATION|CACHE|SIZE|SCORE
void grn_p(grn_ctx *ctx, grn_obj *obj)#

Added in version 4.0.8.

指定した obj を調査し、その内容を出力します。

パラメータ:
  • ctx -- その時点のコンテキスト。

  • obj -- 対象のオブジェクト

grn_p(&context, &buffer, obj);

オブジェクトが ShortText なら次のように表示されます:

#<type ShortText size:4096 type:var_size>
void grn_p_geo_point(grn_ctx *ctx, grn_geo_point *point)#

Added in version 4.0.8.

指定した obj を調査し、geo pointの内容を出力します。

パラメータ:
  • ctx -- その時点のコンテキスト。

  • point -- 対象のオブジェクト

grn_obj point;
int latitude = ((40 * 60 * 60) + (42 * 60) + 46) * 1000;
int longitude = ((-74 * 60 * 60) + (0 * 60) + 22) * 1000;
GRN_WGS84_GEO_POINT_INIT(&point, 0);
GRN_GEO_POINT_SET(&context, &point, latitude, longitude);
grn_p_geo_point(&context, (grn_geo_point*)&point);

もし point がニューヨークを示す場合、次のように表示されます:

[(524290,18) ((0, 8, 44, 290),(0, 0, 0, 18)) [00000000 00000000 00000000 10000000 00000000 00000000 00000001 00001100]]
void grn_p_ii_values(grn_ctx *ctx, grn_obj *obj)#

Added in version 4.0.8.

指定した obj を調査し、インデックスの値を出力します。

パラメータ:
  • ctx -- その時点のコンテキスト。

  • obj -- 対象のオブジェクト

grn_p_ii_values(&context, obj);

もし obj がインデックスカラムの場合、次のように表示されます:

[
  #<"!"
    elements:[
      {status:available, rid:1, sid:1, pos:0, tf:1, weight:0, rest:1},
      {status:available, rid:2, sid:1, pos:0, tf:1, weight:0, rest:1}
    ]
  >,
  ...