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

8.15.8. grn_expr

`grn_expr`は:c:type:`grn_obj`を式として表現したものです。以下はどのような表現があるかのリストです。

  • 式は:c:func:`grn_expr_exec`によって登録されたものが適用される。

  • 検索条件を式として表現することができます。:c:func:`grn_table_select`は検索条件文にマッチしたレコードの選択ができます。

文字列を式で表現する手段は2種類あります。

:c:func:`grn_expr_parse`は式の記述された文字列をパースし、その結果を別の式に追加します。

8.15.8.1. 実行例:

TODO...

8.15.8.2. リファレンス

GRN_API grn_obj *grn_expr_create(grn_ctx *ctx, const char *name, unsigned int name_size)
GRN_API grn_rc grn_expr_close(grn_ctx *ctx, grn_obj *expr)
GRN_API grn_obj *grn_expr_add_var(grn_ctx *ctx, grn_obj *expr, const char *name, unsigned int name_size)
GRN_API grn_obj *grn_expr_get_var_by_offset(grn_ctx *ctx, grn_obj *expr, unsigned int offset)
GRN_API grn_obj *grn_expr_append_obj(grn_ctx *ctx, grn_obj *expr, grn_obj *obj, grn_operator op, int nargs);
GRN_API grn_obj *grn_expr_append_const(grn_ctx *ctx, grn_obj *expr, grn_obj *obj, grn_operator op, int nargs)
GRN_API grn_obj *grn_expr_append_const_str(grn_ctx *ctx, grn_obj *expr, const char *str, unsigned int str_size, grn_operator op, int nargs)
GRN_API grn_obj *grn_expr_append_const_int(grn_ctx *ctx, grn_obj *expr, int i, grn_operator op, int nargs)
GRN_API grn_rc grn_expr_append_op(grn_ctx *ctx, grn_obj *expr, grn_operator op, int nargs)
grn_rc grn_expr_syntax_escape(grn_ctx *ctx, const char *string, int string_size, const char *target_characters, char escape_character, grn_obj *escaped_string)

``string``中の``target_characters``は``escape_character``によってエスケープされます。

パラメタ:
  • ctx -- エンコーディングは``string``と同じでなければいけません。``escaped_string``のバッファ確保のために利用されます。
  • string -- 文字列式表現
  • string_size -- string``のバイトサイズが-1``の場合は``string``がNULL終端文字列であることを意味しています。
  • target_characters -- NULL終端されたエスケープ対象文字。たとえば、``"+-><~*()"\:"は``target_characters``と:doc:/reference/grn_expr/query_syntax`で説明されています。
  • escape_character -- エスケープ用の文字として``target_characters``に指定するもの。たとえば、\\ が``escaped_character``として:doc:`/reference/grn_expr/query_syntax`に説明されています。
  • escaped_string -- エスケープされた``string``の出力。テキスト型用のbulkに使用されます。
戻り値:

成功時は GRN_SUCCESS 、エラー時は GRN_SUCCESS 以外。

grn_rc grn_expr_syntax_escape_query(grn_ctx *ctx, const char *query, int query_size, grn_obj *escaped_query)

クエリー構文 にある特別な文字をエスケープします。

パラメタ:
  • ctx -- このエンコーディングは``query``のエンコーディングと同じでなければなりません。``escaped_query``のバッファ確保に使われます。
  • query -- クエリー構文 にある文字列式の表現。
  • query_size -- query``のバイトサイズ。-1``は``query``がNULL終端文字列であることを意味します。
  • escaped_query -- エスケープされた``query``の出力。テキスト型用のbulkを返す。
戻り値:

成功時は GRN_SUCCESS 、エラー時は GRN_SUCCESS 以外。

GRN_API grn_rc grn_expr_compile(grn_ctx *ctx, grn_obj *expr)
GRN_API grn_obj *grn_expr_exec(grn_ctx *ctx, grn_obj *expr, int nargs)
GRN_API grn_obj *grn_expr_alloc(grn_ctx *ctx, grn_obj *expr, grn_id domain, grn_obj_flags flags)

目次

前のトピックへ

8.15.7. grn_encoding

次のトピックへ

8.15.9. grn_geo

このページ