Class: Groonga::Query

Inherits:
Object
  • Object
show all
Defined in:
ext/rb-grn-query.c,
ext/rb-grn-query.c

Overview

インデックスを用いた検索用のクエリのためのオブジェクト。 Groonga::IndexColumn#searchに渡すことができる。(このクラ スは非推奨で、代わりにGroonga::Expressionを使用すること)

Instance Method Summary collapse

Constructor Details

#new(string, options = {}) ⇒ Object

stringをパースした上で、クエリを作成する。作成されたオ ブジェクトはGroonga::IndexColumn#searchに渡すことで使用す ることができる。

optionsに指定可能な値は以下の通り。

:context

クエリが利用するGroonga::Context。省略すると Groonga::Context.defaultを用いる。

:default_operator

演算子の既定値(演算子を省略した場合にどの演算を行うか) を指定する。

Groonga::Operation::OR
Groonga::Operation::AND
Groonga::Operation::BUT
Groonga::Operation::ADJUST

(FIXME: 挙動の違いを検証する必要性あり?

Groonga::Expressionとの関連性は?)
:max_expressions

検索クエリに指定する式の最大値を指定する。



159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
# File 'ext/rb-grn-query.c', line 159

static VALUE
rb_grn_query_initialize (int argc, VALUE *argv, VALUE self)
{
    RbGrnQuery *rb_grn_query;
    grn_ctx *context = NULL;
    grn_query *query;
    char *query_string;
    unsigned int query_string_length;
    grn_operator default_operator;
    int max_expressions = RB_GRN_QUERY_DEFAULT_MAX_EXPRESSIONS;
    VALUE rb_query_string, options, rb_context, rb_default_operator;
    VALUE rb_max_expressions;

    rb_scan_args(argc, argv, "11", &rb_query_string, &options);

    query_string = StringValuePtr(rb_query_string);
    query_string_length = RSTRING_LEN(rb_query_string);

    rb_grn_scan_options(options,
                        "context", &rb_context,
                        "default_operator", &rb_default_operator,
                        "max_expressions", &rb_max_expressions,
                        NULL);

    context = rb_grn_context_ensure(&rb_context);

    default_operator = RVAL2GRNOPERATOR(rb_default_operator);

    if (!NIL_P(rb_max_expressions))
        max_expressions = NUM2INT(rb_max_expressions);

    query = grn_query_open(context, query_string, query_string_length,
                           default_operator, max_expressions);
    rb_grn_context_check(context, rb_ary_new4(argc, argv));

    rb_grn_query = ALLOC(RbGrnQuery);
    DATA_PTR(self) = rb_grn_query;
    rb_grn_query->context = context;
    rb_grn_query->query = query;
    rb_grn_query->owner = RB_GRN_TRUE;

    rb_iv_set(self, "@context", rb_context);

    return Qnil;
}

Instance Method Details

#closeObject

queryが使用しているリソースを開放する。これ以降queryを 使うことはできない。



212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
# File 'ext/rb-grn-query.c', line 212

static VALUE
rb_grn_query_close (VALUE self)
{
    RbGrnQuery *rb_grn_query;

    rb_grn_query = SELF(self);
    if (rb_grn_query->context && rb_grn_query->query) {
        grn_rc rc;

        rc = grn_query_close(rb_grn_query->context, rb_grn_query->query);
        rb_grn_query->context = NULL;
        rb_grn_query->query = NULL;
        rb_grn_rc_check(rc, self);
    }
    return Qnil;
}

#closed?Boolean

queryが開放済みの場合はtrueを返し、そうでない場合は falseを返す。

Returns:

  • (Boolean)


236
237
238
239
240
241
242
243
244
245
246
# File 'ext/rb-grn-query.c', line 236

static VALUE
rb_grn_query_closed_p (VALUE self)
{
    RbGrnQuery *rb_grn_query;

    rb_grn_query = SELF(self);
    if (rb_grn_query->context && rb_grn_query->query)
        return Qfalse;
    else
        return Qtrue;
}