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

- English page

# 7.18.3. `grn_column`

## 7.18.3.1. 概要

TODO...

## 7.18.3.2. 実行例:

TODO...

## 7.18.3.3. リファレンス

`GRN_COLUMN_NAME_ID`

  疑似カラム (pseudo_column) ``_id``の名前を返す。

  :c:macro:`GRN_COLUMN_NAME_ID_LEN`は以下のような場合に利用できる:

      grn_obj *id_column;
      id_column = grn_ctx_get(ctx, GRN_COLUMN_NAME_ID, GRN_COLUMN_NAME_ID_LEN);

  3.1.1から。

`GRN_COLUMN_NAME_ID_LEN`

  It returns the byte size of `GRN_COLUMN_NAME_ID`.

  3.1.1から。

`GRN_COLUMN_NAME_KEY`

  It returns the name of 疑似カラム (pseudo_column) `_key`.

  It is useful to use with `GRN_COLUMN_NAME_KEY_LEN` like the following:

      grn_obj *key_column;
      key_column = grn_ctx_get(ctx, GRN_COLUMN_NAME_KEY, GRN_COLUMN_NAME_KEY_LEN);

  3.1.1から。

`GRN_COLUMN_NAME_KEY_LEN`

  It returns the byte size of `GRN_COLUMN_NAME_KEY`.

  3.1.1から。

`GRN_COLUMN_NAME_VALUE`

  It returns the name of 疑似カラム (pseudo_column) `_value`.

  It is useful to use with `GRN_COLUMN_NAME_VALUE_LEN` like the following:

      grn_obj *value_column;
      value_column = grn_ctx_get(ctx, GRN_COLUMN_NAME_VALUE, GRN_COLUMN_NAME_VALUE_LEN);

  3.1.1から。

`GRN_COLUMN_NAME_VALUE_LEN`

  It returns the byte size of `GRN_COLUMN_NAME_VALUE`.

  3.1.1から。

`GRN_COLUMN_NAME_SCORE`

  疑似カラム (pseudo_column) ``_score``の名前を返す。

  :c:macro:`GRN_COLUMN_NAME_SCORE_LEN`は以下のような場合に利用できる:

      grn_obj *score_column;
      score_column = grn_ctx_get(ctx, GRN_COLUMN_NAME_SCORE, GRN_COLUMN_NAME_SCORE_LEN);

  3.1.1から。

`GRN_COLUMN_NAME_SCORE_LEN`

  :c:macro:`GRN_COLUMN_NAME_SCORE`のサイズをバイト数で返す。

  3.1.1から。

`GRN_COLUMN_NAME_NSUBRECS`

  疑似カラム (pseudo_column) `_nsubrecs` の名前を返す。

  :c:macro:`GRN_COLUMN_NAME_NSUBRECS_LEN`は以下のような場合に利用できる:

      grn_obj *nsubrecs_column;
      nsubrecs_column = grn_ctx_get(ctx, GRN_COLUMN_NAME_NSUBRECS, GRN_COLUMN_NAME_NSUBRECS_LEN);

  3.1.1から。

`GRN_COLUMN_NAME_NSUBRECS_LEN`

  `GRN_COLUMN_NAME_NSUBRECS` のサイズをバイト数で返す。

  3.1.1から。

grn_obj *`grn_column_create`(grn_ctx *ctx, grn_obj *table, const char *name, unsigned int name_size, const char *path, grn_obj_flags flags, grn_obj *type)

  tableに新たなカラムを定義します。nameは省略できません。一つのtableに同一のnameのcolumnを複数定義することはできません。

  パラメタ: | table -- 対象tableを指定します。 name -- カラム名を指定します。 name_size -- nameパラメータのsize(byte)を指定します。 path -- カラムを格納するファイルパスを指定します。 flagsに `GRN_OBJ_PERSISTENT` が指定されている場合のみ有効です。 NULLなら自動的にファイルパスが付与されます。 flags -- `GRN_OBJ_PERSISTENT` を指定すると永続columnとなります。 `GRN_OBJ_COLUMN_INDEX` を指定すると転置インデックスとなります。 `GRN_OBJ_COLUMN_SCALAR` を指定するとスカラ値(単独の値)を格納します。 `GRN_OBJ_COLUMN_VECTOR` を指定すると値の配列を格納します。 `GRN_OBJ_COMPRESS_ZLIB` を指定すると値をzlib圧縮して格納します。 `GRN_OBJ_COMPRESS_LZO` を指定すると値をlzo圧縮して格納します。 `GRN_OBJ_COLUMN_INDEX` と共に `GRN_OBJ_WITH_SECTION` を指定すると、転置索引にsection(段落情報)を合わせて格納します。 `GRN_OBJ_COLUMN_INDEX` と共に `GRN_OBJ_WITH_WEIGHT` を指定すると、転置索引にweight情報を合わせて格納します。 `GRN_OBJ_COLUMN_INDEX` と共に `GRN_OBJ_WITH_POSITION` を指定すると、転置索引に出現位置情報を合わせて格納します。 type -- カラム値の型を指定します。定義済みのtypeあるいはtableを指定できます。

grn_rc `grn_column_index_update`(grn_ctx *ctx, grn_obj *column, grn_id id, unsigned int section, grn_obj *oldvalue, grn_obj *newvalue)

  oldvalue, newvalueの値から得られるキーに対応するcolumnの値の中の、id, sectionに対応するエントリを更新します。columnは `GRN_OBJ_COLUMN_INDEX` 型のカラムでなければなりません。

  パラメタ: | column -- 対象columnを指定します。 id -- 対象レコードのIDを指定します。 section -- 対象レコードのセクション番号を指定します。 oldvalue -- 更新前の値を指定します。 newvalue -- 更新後の値を指定します。

grn_obj *`grn_column_table`(grn_ctx *ctx, grn_obj *column)

  columnが属するtableを返します。

  パラメタ: | column -- 対象columnを指定します。

grn_rc `grn_column_rename`(grn_ctx *ctx, grn_obj *column, const char *name, unsigned int name_size)

  ctxが使用するdbにおいてcolumnに対応する名前をnameに更新します。columnは永続オブジェクトでなければいけません。

  パラメタ: | column -- 対象columnを指定します。 name -- 新しい名前を指定します。 name_size -- nameパラメータのsize（byte）を指定します。

int `grn_column_name`(grn_ctx *ctx, grn_obj *obj, char *namebuf, int buf_size)

  カラムobjの名前の長さを返します。buf_sizeの長さが名前の長さ以上であった場合は、namebufに該当する名前をコピーします。

  パラメタ: | obj -- 対象objectを指定します。 namebuf -- 名前を格納するバッファ（呼出側で準備する）を指定します。 buf_size -- namebufのサイズ（byte長）を指定します。

int `grn_column_index`(grn_ctx *ctx, grn_obj *column, grn_operator op, grn_obj **indexbuf, int buf_size, int *section)

  columnに張られているindexのうち、opの操作を実行可能なものの数を返します。またそれらのidを、buf_sizeに指定された個数を上限としてindexbufに返します。

  パラメタ: | column -- 対象のcolumnを指定します。 op -- indexで実行したい操作を指定します。 indexbuf -- indexを格納するバッファ（呼出側で準備する）を指定します。 buf_size -- indexbufのサイズ（byte長）を指定します。 section -- section番号を格納するint長バッファ（呼出側で準備する）を指定します。