grn_expr は「式」を表現した grn_obj です。以下は式が何をできるかのリストです。
式は grn_expr_exec() を使うと1つのレコードに複数の操作を適用できます。
式は検索条件を表現できます。 grn_table_select() を使うと、式で表現した検索条件にマッチしたレコードだけを選択できます。
文字列を式で表現する手段は2種類あります。
grn_expr_parse() は式の文字列表現をパースし、パースした式を別の式に追加します。
TODO...
Extracts keywords from expr and stores to keywords. Keywords in keywords are owned by expr. Don't unlink them. Each keyword is GRN_BULK and its domain is GRN_DB_TEXT.
keywords must be GRN_PVECTOR.
以下はスキーマの例です。
grn_obj keywords;
GRN_PTR_INIT(&keywords, GRN_OBJ_VECTOR, GRN_ID_NIL);
grn_expr_get_keywords(ctx, expr, &keywords);
{
int i, n_keywords;
n_keywords = GRN_BULK_VSIZE(&keywords) / sizeof(grn_obj *);
for (i = 0; i < n_keywords; i++) {
grn_obj *keyword = GRN_PTR_VALUE_AT(&keywords, i);
const char *keyword_content;
int keyword_size;
keyword_content = GRN_TEXT_VALUE(keyword);
keyword_size = GRN_TEXT_LEN(keyword);
/*
Use keyword_content and keyword_size.
You don't need to unlink keyword.
keyword is owned by expr.
*/
}
}
GRN_OBJ_FIN(ctx, &keywords);
パラメタ: |
|
---|---|
戻り値: | 成功時は GRN_SUCCESS 、エラー時は GRN_SUCCESS 以外。 |
string 中の target_characters を escape_character でエスケープします。
パラメタ: |
|
---|---|
戻り値: | 成功時は GRN_SUCCESS 、エラー時は GRN_SUCCESS 以外。 |
クエリー構文 にある特別な文字をエスケープします。
パラメタ: |
|
---|---|
戻り値: | 成功時は GRN_SUCCESS 、エラー時は GRN_SUCCESS 以外。 |