# groonga - オープンソースのカラムストア機能付き全文検索エンジン

- English page

# 7.18.6. `grn_ctx`

## 7.18.6.1. 概要

`grn_ctx` は最も重要なオブジェクトです。`grn_ctx` はその時点の情報を保持します:

- 最後に発生したエラー。

- その時点のエンコーディング。

- デフォルトの閾値。（例: match_escalation_threshold）

- デフォルトのコマンドバージョン。（ コマンドバージョン ）を参照のこと。

`grn_ctx` は基盤となる機能を提供します:

- メモリ管理機能

- ロギング機能

ほとんどのAPIは `grn_ctx` を最初の引数にとります。

同じ `grn_ctx` を二つ以上のスレッドからは扱えません。`grn_ctx` はスレッドごとに作成する必要があります。一つのスレッドでは `grn_ctx` を二つ以上扱えますが、通常はその必要はありません。

## 7.18.6.2. 実行例:

TODO...

## 7.18.6.3. リファレンス

`grn_ctx`

  TODO...

grn_rc `grn_ctx_init`(grn_ctx *ctx, int flags)

  ctxを初期化します。

  パラメタ: | ctx -- 初期化するctx構造体へのポインタを指定します。 flags -- 初期化する `ctx` のオプションを指定します。
  戻り値: | 成功時は `GRN_SUCCESS` 、エラー時は `GRN_SUCCESS` 以外。

grn_rc `grn_ctx_fin`(grn_ctx *ctx)

  ctxの管理するメモリを解放し、使用を終了します。

  ``ctx``を:c:func:`grn_ctx_init()`ではなく:c:func:`grn_ctx_open()`で初期化した場合、:c:func:`grn_ctx_close()`を呼び出さなければならない。

  パラメタ: | ctx -- 解放するctx構造体へのポインタを指定します。
  戻り値: | 成功時は `GRN_SUCCESS` 、エラー時は `GRN_SUCCESS` 以外。

grn_ctx *`grn_ctx_open`(int flags)

  初期化された `grn_ctx` オブジェクトを返します。

  `grn_ctx_init()` で初期化された `grn_ctx` オブジェクトは構造体の実体をAPIの呼び元で確保するのに対して、 `grn_ctx_open()` ではGroongaライブラリの内部で、実体を確保します。 どちらで初期化された `grn_ctx` も、 `grn_ctx_fin()` で解放できます。 `grn_ctx_open()` で確保した `grn_ctx` 構造体に関しては、`grn_ctx_fin()` で解放した後に、その `grn_ctx` で作成した `grn_obj` を `grn_obj_close()` によって解放しても問題ありません。

  パラメタ: | flags -- 初期化する `ctx` のオプションを指定します。
  戻り値: | 初期化された `grn_ctx` オブジェクトを返します。

grn_rc `grn_ctx_close`(grn_ctx *ctx)

  :c:func:`grn_ctx_fin()`を呼び出し、:c:func:`grn_ctx_open()`によって割り当てられた``ctx``へのメモリを開放する。

  パラメタ: | ctx -- :c:type:`grn_ctx`は不要となる。
  戻り値: | 成功時は `GRN_SUCCESS` 、エラー時は `GRN_SUCCESS` 以外。

grn_rc `grn_ctx_set_finalizer`(grn_ctx *ctx, grn_proc_func *func)

  ctxを破棄するときに呼ばれる関数を設定します。

  パラメタ: | ctx -- 対象ctxを指定します。 func -- `ctx` を破棄するときに呼ばれる関数を指定します。
  戻り値: | 成功時は `GRN_SUCCESS` 、エラー時は `GRN_SUCCESS` 以外。

grn_command_version `grn_ctx_get_command_version`(grn_ctx *ctx)

  command_versionを返します。

grn_rc `grn_ctx_set_command_version`(grn_ctx *ctx, grn_command_version version)

  command_versionを変更します。

  パラメタ: | version -- 変更後のcommand_versionを指定します。

grn_rc `grn_ctx_use`(grn_ctx *ctx, grn_obj *db)

  ctxが操作対象とするdbを指定します。NULLを指定した場合は、dbを操作しない状態(init直後の状態)になります。

  ``GRN_CTX_PER_DB``フラグと同時に:c:type:`grn_ctx`を使ってはならない。

  パラメタ: | db -- ctxが使用するdbを指定します。

grn_obj *`grn_ctx_db`(grn_ctx *ctx)

  ctxが現在操作対象としているdbを返します。dbを使用していない場合はNULLを返します。

grn_obj *`grn_ctx_get`(grn_ctx *ctx, const char *name, int name_size)

  ctxが使用するdbからnameに対応するオブジェクトを検索して返す。nameに一致するオブジェクトが存在しなければNULLを返す。

  パラメタ: | name -- 検索しようとするオブジェクトの名前。 name_size -- 名前のバイト数。負の値が指定された場合は、終端をNULL文字とした文字列として扱われる。

grn_obj *`grn_ctx_at`(grn_ctx *ctx, grn_id id)

  ctx、またはctxが使用するdbからidに対応するオブジェクトを検索して返す。idに一致するオブジェクトが存在しなければNULLを返す。

  パラメタ: | id -- 検索しようとするオブジェクトのidを指定します。

grn_content_type `grn_ctx_get_output_type`(grn_ctx *ctx)

  コンテキストの出力形式を取得します。

  Normally, this function isn't needed.

  パラメタ: | ctx -- その時点のコンテキスト。
  戻り値: | The output type of the context.

grn_rc `grn_ctx_set_output_type`(grn_ctx *ctx, grn_content_type type)

  Sets the new output type to the context. It is used by executing a command by `grn_expr_exec()`. If you use `grn_ctx_send()`, the new output type isn't used. `grn_ctx_send()` sets output type from command line internally.

  Normally, this function isn't needed.

  パラメタ: | ctx -- その時点のコンテキスト。 type -- 新しい出力形式。
  戻り値: | 成功時は `GRN_SUCCESS` 、エラー時は `GRN_SUCCESS` 以外。