Class: Groonga::Context

Inherits:
Object
  • Object
show all
Defined in:
ext/groonga/rb-grn-context.c,
lib/groonga/context.rb,
lib/groonga/context/command-executor.rb,
ext/groonga/rb-grn-context.c

Overview

groonga全体に渡る情報を管理するオブジェクト。通常のアプリ ケーションでは1つのコンテキストを作成し、それを利用する。 複数のコンテキストを利用する必要はない。

デフォルトで使用されるコンテキストは Context.default でアクセスできる。コンテキ ストを指定できる箇所でコンテキストの指定を省略したり +nil+ を指定した場合は Context.default が利用さ れる。

また、デフォルトのコンテキストは必要になると暗黙のうちに 作成される。そのため、コンテキストを意識することは少ない。

暗黙のうちに作成されるコンテキストにオプションを指定する 場合は Context.default_options= を使用 する。

Defined Under Namespace

Classes: CommandExecutor

Class Method Summary collapse

  • .default ⇒ Groonga::Context

    デフォルトのコンテキストを返す。デフォルトのコンテキスト が作成されていない場合は暗黙のうちに作成し、それを返す。.

  • .default=(context) ⇒ Object

    デフォルトのコンテキストを設定する。 +nil+ を指定すると、 デフォルトのコンテキストをリセットする。リセットすると、次 回 Context.default を呼び出したときに新しくコ ンテキストが作成される。.

  • .default_options ⇒ ::Hash or nil

    コンテキストを作成する時に利用するデフォルトのオプション を返す。.

  • .default_options=(options) ⇒ Object

    コンテキストを作成する時に利用するデフォルトのオプション を設定する。利用可能なオプションは new を参照。.

Instance Method Summary collapse

Constructor Details

#new(options = nil) ⇒ Object

コンテキストを作成する。

Parameters:

  • options (::Hash) (defaults to: nil)

    The name and value pairs. Omitted names are initialized as the default value.

Options Hash (options):

  • :encoding (Groonga::Encoding)

    The encoding エンコーディングを指定する。エンコーディングの指定方法 は Encoding を参照。



436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
# File 'ext/groonga/rb-grn-context.c', line 436

static VALUE
rb_grn_context_initialize (int argc, VALUE *argv, VALUE self)
{
    RbGrnContext *rb_grn_context;
    grn_ctx *context;
    int flags = 0; /* TODO: GRN_CTX_PER_DB */
    VALUE options, default_options;
    VALUE rb_encoding;

    rb_scan_args(argc, argv, "01", &options);
    default_options = rb_grn_context_s_get_default_options(rb_obj_class(self));
    if (NIL_P(default_options))
        default_options = rb_hash_new();

    if (NIL_P(options))
        options = rb_hash_new();
    options = rb_funcall(default_options, rb_intern("merge"), 1, options);

    rb_grn_scan_options(options,
                        "encoding", &rb_encoding,
                        NULL);

    rb_grn_context = ALLOC(RbGrnContext);
    DATA_PTR(self) = rb_grn_context;
    rb_grn_context->self = self;
    grn_ctx_init(&(rb_grn_context->context_entity), flags);
    context = rb_grn_context->context = &(rb_grn_context->context_entity);
    rb_grn_context_check(context, self);

    GRN_CTX_USER_DATA(context)->ptr = rb_grn_context;
    rb_grn_context->floating_objects = NULL;
    rb_grn_context_reset_floating_objects(rb_grn_context);
    grn_ctx_set_finalizer(context, rb_grn_context_finalizer);

    if (!NIL_P(rb_encoding)) {
        grn_encoding encoding;

        encoding = RVAL2GRNENCODING(rb_encoding, NULL);
        GRN_CTX_SET_ENCODING(context, encoding);
    }

    rb_iv_set(self, "@memory_pools", rb_ary_new());

    debug("context new: %p\n", context);

    return Qnil;
}

Class Method Details

.defaultGroonga::Context

デフォルトのコンテキストを返す。デフォルトのコンテキスト が作成されていない場合は暗黙のうちに作成し、それを返す。

暗黙のうちにコンテキストを作成する場合は、 default_options に設定されているオプ ションを利用する。

Returns:



366
367
368
369
370
371
372
373
374
375
376
377
# File 'ext/groonga/rb-grn-context.c', line 366

static VALUE
rb_grn_context_s_get_default (VALUE self)
{
    VALUE context;

    context = rb_cv_get(self, "@@default");
    if (NIL_P(context)) {
        context = rb_funcall(cGrnContext, rb_intern("new"), 0);
        rb_cv_set(self, "@@default", context);
    }
    return context;
}

.default=(context) ⇒ Object

デフォルトのコンテキストを設定する。 +nil+ を指定すると、 デフォルトのコンテキストをリセットする。リセットすると、次 回 default を呼び出したときに新しくコ ンテキストが作成される。



393
394
395
396
397
398
# File 'ext/groonga/rb-grn-context.c', line 393

static VALUE
rb_grn_context_s_set_default (VALUE self, VALUE context)
{
    rb_cv_set(self, "@@default", context);
    return Qnil;
}

.default_options::Hash or nil

コンテキストを作成する時に利用するデフォルトのオプション を返す。

Returns:

  • (::Hash or nil)


407
408
409
410
411
# File 'ext/groonga/rb-grn-context.c', line 407

static VALUE
rb_grn_context_s_get_default_options (VALUE self)
{
    return rb_cv_get(self, "@@default_options");
}

.default_options=(options) ⇒ Object

コンテキストを作成する時に利用するデフォルトのオプション を設定する。利用可能なオプションは new を参照。



420
421
422
423
424
425
# File 'ext/groonga/rb-grn-context.c', line 420

static VALUE
rb_grn_context_s_set_default_options (VALUE self, VALUE options)
{
    rb_cv_set(self, "@@default_options", options);
    return Qnil;
}

Instance Method Details

#[](name) ⇒ Groonga::Object or nil #[](id) ⇒ Groonga::Object or nil

コンテキスト管理下にあるオブジェクトを返す。

name として文字列を指定した場合はオブジェクト名でオブジェ クトを検索する。

id として数値を指定した場合はオブジェクトIDでオブジェク トを検索する。

Overloads:



923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
# File 'ext/groonga/rb-grn-context.c', line 923

static VALUE
rb_grn_context_array_reference (VALUE self, VALUE name_or_id)
{
    grn_ctx *context;
    grn_obj *object;
    const char *name;
    unsigned int name_size;
    grn_id id;

    context = SELF(self);
    switch (TYPE(name_or_id)) {
      case T_SYMBOL:
        name = RSYMBOL2CSTR(name_or_id);
        name_size = strlen(name);
        object = rb_grn_context_get_backward_compatibility(context,
                                                           name, name_size);
        break;
      case T_STRING:
        name = StringValuePtr(name_or_id);
        name_size = RSTRING_LEN(name_or_id);
        object = rb_grn_context_get_backward_compatibility(context,
                                                           name, name_size);
        break;
      case T_FIXNUM:
        id = NUM2UINT(name_or_id);
        object = grn_ctx_at(context, id);
        break;
      default:
        rb_raise(rb_eArgError,
                 "should be String, Symbol or unsigned integer: %s",
                 rb_grn_inspect(name_or_id));
        break;
    }
    rb_grn_context_check(context, name_or_id);

    return GRNOBJECT2RVAL(Qnil, context, object, GRN_FALSE);
}

#closeObject

Closes the context. Closed context can’t be used anymore.



490
491
492
493
494
495
496
497
498
499
500
501
# File 'ext/groonga/rb-grn-context.c', line 490

static VALUE
rb_grn_context_close (VALUE self)
{
    RbGrnContext *rb_grn_context;

    Data_Get_Struct(self, RbGrnContext, rb_grn_context);
    if (rb_grn_context->context) {
        rb_grn_context_fin(rb_grn_context);
    }

    return Qnil;
}

#closed?Boolean

Returns whether the context is closed by #close or not.

Returns:

  • (Boolean)


508
509
510
511
512
513
514
515
516
# File 'ext/groonga/rb-grn-context.c', line 508

static VALUE
rb_grn_context_closed_p (VALUE self)
{
    RbGrnContext *rb_grn_context;

    Data_Get_Struct(self, RbGrnContext, rb_grn_context);

    return CBOOL2RVAL(rb_grn_context->context == NULL);
}

#confGroonga::Config

Deprecated.

since 5.1.1. Use #config instead.

Returns The database level configuration sets of this context.

Returns:

  • (Groonga::Config)

    The database level configuration sets of this context.

Since:

  • 5.0.9



355
356
357
# File 'lib/groonga/context.rb', line 355

def conf
  config
end

#configGroonga::Config

Returns The database level configuration sets of this context.

Returns:

  • (Groonga::Config)

    The database level configuration sets of this context.

Since:

  • 5.1.1



363
364
365
# File 'lib/groonga/context.rb', line 363

def config
  @config ||= Config.new(self)
end

#connect(options = nil) ⇒ Object

groongaサーバに接続する。

Parameters:

  • options (::Hash) (defaults to: nil)

    利用可能なオプションは次の通り。

Options Hash (options):

  • :host (Object) — default: localhost

    groongaサーバのホスト名。またはIPアドレス。省略すると “localhost”に接続する。

  • :port (Object) — default: 10041

    groongaサーバのポート番号。省略すると10041番ポートに接 続する。



750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
# File 'ext/groonga/rb-grn-context.c', line 750

static VALUE
rb_grn_context_connect (int argc, VALUE *argv, VALUE self)
{
    grn_ctx *context;
    const char *host;
    int port;
    int flags = 0;
    grn_rc rc;
    VALUE options, rb_host, rb_port;

    rb_scan_args(argc, argv, "01", &options);
    rb_grn_scan_options(options,
                        "host", &rb_host,
                        "port", &rb_port,
                        NULL);

    context = SELF(self);

    if (NIL_P(rb_host)) {
        host = "localhost";
    } else {
        host = StringValueCStr(rb_host);
    }

    if (NIL_P(rb_port)) {
        port = 10041;
    } else {
        port = NUM2INT(rb_port);
    }

    rc = grn_ctx_connect(context, host, port, flags);
    rb_grn_context_check(context, self);
    rb_grn_rc_check(rc, self);

    return Qnil;
}

#create_databaseGroonga::Database #create_database {|database| ... } ⇒ Object #create_database(path) ⇒ Groonga::Database #create_database(path) {|database| ... } ⇒ Object

This is convenience method. It wraps Database.create for the context.

Overloads:

  • #create_databaseGroonga::Database

    Creates a new temproary database for the context.

    Examples:

    Creating a new temporary database

    temporary_database = context.create_database

    Returns:

  • #create_database {|database| ... } ⇒ Object

    Creates a new temproary database for the context. The database is closed after the passed block is finished.

    Examples:

    Creating a new temporary database with block

    context.create_database do |temporary_database|
      # ...
    end

    Yields:

    • (database)

      Yields a newly created temporary database for the context. The database is available only in the block.

    Yield Parameters:

    • database (Groonga::Database)

      A newly created temporary database for the context.

    Yield Returns:

    • (Object)

      The returned value from the block is the returned value from this method.

    Returns:

    • Returned value from the block.

  • #create_database(path) ⇒ Groonga::Database

    Creates a new persistent database for the context to the path.

    Examples:

    Creating a new persistent database to “/tmp/db.groonga”

    database = context.create_database("/tmp/db.groonga")

    Parameters:

    • path (String)

      Database path for a new persistent database.

    Returns:

  • #create_database(path) {|database| ... } ⇒ Object

    Creates a new persistent database for the context to the path. The database is closed after the passed block is finished.

    Examples:

    Creating a new persistent database to “/tmp/db.groonga” database with block

    context.create_database("/tmp/db.groonga") do |persistent_database|
      # ...
    end

    Parameters:

    • path (String)

      Database path for a new persistent database.

    Yields:

    • (database)

      Yields a newly created persistent database for the context. The database is available only in the block.

    Yield Parameters:

    • database (Groonga::Database)

      A newly created persistent database for the context.

    Yield Returns:

    • (Object)

      The returned value from the block is the returned value from this method.

    Returns:

    • Returned value from the block.



100
101
102
103
104
105
106
107
# File 'lib/groonga/context.rb', line 100

def create_database(path=nil, &block)
  options = {:context => self}
  if path
    options[:path] = path
  end

  Database.create(options, &block)
end

#databaseGroonga::Database

コンテキストが使うデータベースを返す。

Returns:



730
731
732
733
734
735
736
737
# File 'ext/groonga/rb-grn-context.c', line 730

static VALUE
rb_grn_context_get_database (VALUE self)
{
    grn_ctx *context;

    context = SELF(self);
    return GRNDB2RVAL(context, grn_ctx_db(context), GRN_FALSE);
}

#encodingGroonga::Encoding

コンテキストが使うエンコーディングを返す。

Returns:



564
565
566
567
568
# File 'ext/groonga/rb-grn-context.c', line 564

static VALUE
rb_grn_context_get_encoding (VALUE self)
{
    return GRNENCODING2RVAL(GRN_CTX_GET_ENCODING(SELF(self)));
}

#encoding=(encoding) ⇒ Object

コンテキストが使うエンコーディングを設定する。エンコーディ ングの指定のしかたは Encoding を参照。



576
577
578
579
580
581
582
583
584
585
586
587
# File 'ext/groonga/rb-grn-context.c', line 576

static VALUE
rb_grn_context_set_encoding (VALUE self, VALUE rb_encoding)
{
    grn_ctx *context;
    grn_encoding encoding;

    context = SELF(self);
    encoding = RVAL2GRNENCODING(rb_encoding, NULL);
    GRN_CTX_SET_ENCODING(context, encoding);

    return rb_encoding;
}

#execute_command(name, parameters = {}) ⇒ Object



169
170
171
172
# File 'lib/groonga/context.rb', line 169

def execute_command(name, parameters={})
  executor = CommandExecutor.new(self)
  executor.execute(name, parameters)
end

#inspectString

コンテキストの中身を人に見やすい文字列で返す。

Returns:

  • (String)


524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
# File 'ext/groonga/rb-grn-context.c', line 524

static VALUE
rb_grn_context_inspect (VALUE self)
{
    VALUE inspected;
    grn_ctx *context;
    grn_obj *database;
    VALUE rb_database;

    context = SELF(self);

    inspected = rb_str_new_cstr("#<");
    rb_str_concat(inspected, rb_inspect(rb_obj_class(self)));
    rb_str_cat2(inspected, " ");

    if (rb_grn_exited) {
      rb_str_cat2(inspected, "(finished)");
    } else if (context) {
      rb_str_cat2(inspected, "encoding: <");
      rb_str_concat(inspected, rb_inspect(GRNENCODING2RVAL(context->encoding)));
      rb_str_cat2(inspected, ">, ");

      rb_str_cat2(inspected, "database: <");
      database = grn_ctx_db(context);
      rb_database = GRNDB2RVAL(context, database, GRN_FALSE);
      rb_str_concat(inspected, rb_inspect(rb_database));
      rb_str_cat2(inspected, ">");
    } else {
      rb_str_cat2(inspected, "(closed)");
    }

    rb_str_cat2(inspected, ">");
    return inspected;
}

#match_escalation_thresholdInteger

このコンテキストを使って検索したときに検索の挙動をエスカレー ションする閾値を返します。 エスカレーションの詳細は “groongaの検索の仕様に関するドキュメント”:http://groonga.org/docs/spec/search.html#match-escalation-threshold を参照してください。

Returns:

  • (Integer)


617
618
619
620
621
# File 'ext/groonga/rb-grn-context.c', line 617

static VALUE
rb_grn_context_get_match_escalation_threshold (VALUE self)
{
    return LL2NUM(grn_ctx_get_match_escalation_threshold(SELF(self)));
}

#match_escalation_threshold=(match_escalation_threshold) ⇒ Object

このコンテキストを使って検索したときに検索の挙動をエスカレー ションする閾値を設定します。 エスカレーションの詳細は “groongaの検索の仕様に関するドキュメント”:http://groonga.org/docs/spec/search.html#match-escalation-threshold を参照してください。



632
633
634
635
636
637
638
639
640
641
# File 'ext/groonga/rb-grn-context.c', line 632

static VALUE
rb_grn_context_set_match_escalation_threshold (VALUE self, VALUE threshold)
{
    grn_ctx *context;

    context = SELF(self);
    grn_ctx_set_match_escalation_threshold(context, NUM2LL(threshold));

    return threshold;
}

#object_created(object) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



344
345
346
347
348
# File 'lib/groonga/context.rb', line 344

def object_created(object)
  return if @memory_pools.empty?
  memory_pool = @memory_pools.last
  memory_pool.register(object)
end

#open_database(path, &block) ⇒ Object

path にある既存のデータベースを開く。ブロックを指定した場 合はブロックに開いたデータベースを渡し、ブロックを抜けると きに閉じる。



26
27
28
29
30
# File 'lib/groonga/context.rb', line 26

def open_database(path, &block)
  options = {:context => self}

  Database.open(path, options, &block)
end

#opened?(id) ⇒ Boolean

Checks whether object with the ID is opened or not.

Returns true if object with the id is opened, false otherwise.

Parameters:

  • id (Integer)

    The ID to be checked

Returns:

  • (Boolean)

    true if object with the id is opened, false otherwise.

Returns:

  • (Boolean)


969
970
971
972
973
974
975
976
977
978
979
980
981
# File 'ext/groonga/rb-grn-context.c', line 969

static VALUE
rb_grn_context_is_opened (VALUE self, VALUE rb_id)
{
    grn_ctx *context;
    grn_id id;
    grn_bool is_opened;

    context = SELF(self);
    id = NUM2UINT(rb_id);
    is_opened = grn_ctx_is_opened(context, id);

    return CBOOL2RVAL(is_opened);
}

#pop_memory_poolvoid

This method returns an undefined value.

Pops the pushed memory pool.

See Also:

Since:

  • 3.0.5



338
339
340
341
# File 'lib/groonga/context.rb', line 338

def pop_memory_pool
  memory_pool = @memory_pools.pop
  memory_pool.close
end

#push_memory_poolvoid #push_memory_pool({}) { ... } ⇒ Object

Pushes a new memory pool to the context. Temporary objects that are created between pushing a new memory pool and popping the new memory pool are closed automatically when popping the new memory pool.

It is useful for request and response style applications. These style applications can close temporary objects between a request and resopnse pair. There are some merits for closing temporary objects explicilty rather than closing implicitly by GC:

  • Less memory consumption
  • Faster

The “less memory consumption” merit is caused by temporary objects are closed each request and response pair. The max memory consumption in these applications is the same as the max memory consumption in a request and response pair. If temporary objects are closed by GC, the max memory consumption in these applications is the same as the max memory consumption between the current GC and the next GC. These applications process many request and response pairs during two GCs.

The “faster” merit is caused by reducing GC. You can reduce GC, your application run faster because GC is a heavy process. You can reduce GC because memory consumption is reduced.

You can nest #push_memory_pool and #pop_memory_pool pair.

Examples:

Pushes a new memory pool with block

adults = nil
context.push_memory_pool do
  users = context["Users"]
  adults = users.select do |user|
    user.age >= 20
  end
  p adults.temporary? # => true
  p adults.closed?    # => false
end
p adults.closed?      # => true

Pushes a new memory pool without block

adults = nil
context.push_memory_pool
users = context["Users"]
adults = users.select do |user|
  user.age >= 20
end
p adults.temporary? # => true
p adults.closed?    # => false
context.pop_memory_pool
p adults.closed?    # => true

Nesting push and pop pair

adults = nil
context.push_memory_pool do
  users = context["Users"]
  adults = users.select do |user|
    user.age >= 20
  end
  grouped_adults = nil
  context.push_memory_pool do
    grouped_adults = adults.group(["hobby"])
    p grouped_adults.temporary? # => true
    p grouped_adults.closed?    # => false
  end
  p grouped_adults.closed?      # => true
  p adults.temporary?           # => true
  p adults.closed?              # => false
end
p adults.closed?                # => true

Overloads:

  • #push_memory_poolvoid

    This method returns an undefined value.

    Pushes a new memory pool to the context. You need to pop the memory pool explicitly by yourself.

  • #push_memory_pool({}) { ... } ⇒ Object

    Closes temporary objects created in the given block automatically.

    Yields:

    • [] Yields the block. Temporary objects created in the block are closed automatically when the block is exited.

    Yield Returns:

    • (Object)

      It is the return value of this method call.

    Returns:

    • (Object)

      The value returned by the block.

Since:

  • 3.0.5



319
320
321
322
323
324
325
326
327
328
329
# File 'lib/groonga/context.rb', line 319

def push_memory_pool
  memory_pool = MemoryPool.new
  @memory_pools.push(memory_pool)
  return unless block_given?

  begin
    yield
  ensure
    pop_memory_pool
  end
end

#receive[ID, String]

groongaサーバからクエリ実行結果文字列を受信する。

Returns:

  • ([ID, String])

    クエリ実行結果



816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
# File 'ext/groonga/rb-grn-context.c', line 816

static VALUE
rb_grn_context_receive (VALUE self)
{
    grn_ctx *context;
    char *result = NULL;
    unsigned result_size;
    VALUE rb_result;
    int flags = 0;
    unsigned int query_id;

    context = SELF(self);
    query_id = grn_ctx_recv(context, &result, &result_size, &flags);
    if (result) {
        rb_result = rb_str_new(result, result_size);
    } else {
        rb_result = Qnil;
    }
    rb_grn_context_check(context, self);

    return rb_ary_new_from_args(2, UINT2NUM(query_id), rb_result);
}

#register_plugin(name_or_options) ⇒ Object

groongaのプラグインディレクトリにあるプラグイン name を登録する。 path を指定するとプラグインディレクトリ以 外にあるプラグインを登録することができる。



112
113
114
115
116
117
118
119
120
# File 'lib/groonga/context.rb', line 112

def register_plugin(name_or_options)
  options = {:context => self}
  if name_or_options.is_a?(String)
    name = name_or_options
    Plugin.register(name, options)
  else
    Plugin.register(name_or_options.merge(options))
  end
end

#restore(dumped_commands) {|command, response| ... } ⇒ void

This method returns an undefined value.

Restore commands dumped by “grndump” command.

If block is given, a response is yielded.

Examples:

Restore dumped commands as a String object.

dumped_commands = File.read("dump.grn")
context.restore(dumped_commands)

Restore dumped commands from a File object.

File.open("dump.grn") do |file|
  context.restore(file)
end

Restore dumped commands and reports result.

dumped_commands = File.read("dump.grn")
context.restore(dumped_commands) do |command, response|
  puts("#{command} -> #{response}")
end

Parameters:

  • dumped_commands (#each_line)

    commands dumped by grndump. It can be a String object or any objects like an IO object such as a File object. It should have #each_line that iterates a line.

Yields:

  • (command, response)

    Yields a sent command and its response if block is given.

Yield Parameters:

  • command (String)

    A sent command.

  • response (String)

    A response for a command.



202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
# File 'lib/groonga/context.rb', line 202

def restore(dumped_commands)
  buffer = ""
  continued = false
  dumped_commands.each_line do |line|
    line = line.chomp
    case line
    when /\\\z/
      continued = true
      buffer << $PREMATCH
    else
      continued = false
      buffer << line
      send(buffer)
      _, response = receive
      if block_given?
        not_shared_command = continued ? buffer.dup : line
        yield(not_shared_command, response)
      end
      buffer.clear
    end
  end
  unless buffer.empty?
    send(buffer)
    _, response = receive
    yield(buffer.dup, response) if block_given?
  end
end

#ruby_encoding::Encoding

Gets the encoding used by the context as Ruby’s encoding object.

Returns:

  • (::Encoding)

    the encoding used by the context

Since:

  • 2.0.5



598
599
600
601
602
603
604
605
# File 'ext/groonga/rb-grn-context.c', line 598

static VALUE
rb_grn_context_get_ruby_encoding (VALUE self)
{
    grn_encoding encoding;

    encoding = GRN_CTX_GET_ENCODING(SELF(self));
    return rb_grn_encoding_to_ruby_encoding_object(encoding);
}

#select(table, options = {}) ⇒ Object

table から指定した条件にマッチするレコードの値を取得 する。 table はテーブル名かテーブルオブジェクトを指定 する。

options に指定できるキーは以下の通り。

Parameters:

  • options (::Hash) (defaults to: {})

    The name and value pairs. Omitted names are initialized as the default value.

Options Hash (options):

  • output_columns (Array)

    The output_columns

    値を取得するカラムを指定する。

  • XXX (Array)

    TODO TODO



165
166
167
# File 'lib/groonga/context.rb', line 165

def select(table, options={})
  execute_command("select", {:table => table}.merge(options))
end

#send(string) ⇒ Integer

groongaサーバにクエリ文字列を送信する。

Parameters:

  • string (String)

    クエリ文字列

Returns:

  • (Integer)

    ID



793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
# File 'ext/groonga/rb-grn-context.c', line 793

static VALUE
rb_grn_context_send (VALUE self, VALUE rb_string)
{
    grn_ctx *context;
    char *string;
    unsigned int string_size;
    int flags = 0;
    unsigned int query_id;

    context = SELF(self);
    string = StringValuePtr(rb_string);
    string_size = RSTRING_LEN(rb_string);
    query_id = grn_ctx_send(context, string, string_size, flags);
    rb_grn_context_check(context, self);

    return UINT2NUM(query_id);
}

#support_lz4?Boolean

If Groonga supports LZ4 compression, it returns +true+, otherwise it returns +false+.

Returns:

  • (Boolean)


686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
# File 'ext/groonga/rb-grn-context.c', line 686

static VALUE
rb_grn_context_support_lz4_p (VALUE self)
{
    VALUE rb_support_p;
    grn_ctx *context;
    grn_obj support_p;

    context = SELF(self);
    GRN_BOOL_INIT(&support_p, 0);
    grn_obj_get_info(context, NULL, GRN_INFO_SUPPORT_LZ4, &support_p);
    rb_support_p = CBOOL2RVAL(GRN_BOOL_VALUE(&support_p));
    GRN_OBJ_FIN(context, &support_p);

    return rb_support_p;
}

#support_lzo?Boolean

If Groonga supports LZO compression, it returns +true+, otherwise it returns +false+.

Groonga does not support LZO compression 4.0.7 or later. This method always returns +false+.

Returns:

  • (Boolean)


674
675
676
677
678
# File 'ext/groonga/rb-grn-context.c', line 674

static VALUE
rb_grn_context_support_lzo_p (VALUE self)
{
    return Qfalse;
}

#support_zlib?Boolean

groongaがZlibサポート付きでビルドされていれば +true+ 、そう でなければ +false+ を返す。

Returns:

  • (Boolean)


649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
# File 'ext/groonga/rb-grn-context.c', line 649

static VALUE
rb_grn_context_support_zlib_p (VALUE self)
{
    VALUE rb_support_p;
    grn_ctx *context;
    grn_obj support_p;

    context = SELF(self);
    GRN_BOOL_INIT(&support_p, 0);
    grn_obj_get_info(context, NULL, GRN_INFO_SUPPORT_ZLIB, &support_p);
    rb_support_p = CBOOL2RVAL(GRN_BOOL_VALUE(&support_p));
    GRN_OBJ_FIN(context, &support_p);

    return rb_support_p;
}

#support_zstd?Boolean

If Groonga supports Zstandard compression, it returns true, otherwise it returns false.

Returns:

  • (Boolean)


708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
# File 'ext/groonga/rb-grn-context.c', line 708

static VALUE
rb_grn_context_support_zstd_p (VALUE self)
{
    VALUE rb_support_p;
    grn_ctx *context;
    grn_obj support_p;

    context = SELF(self);
    GRN_BOOL_INIT(&support_p, 0);
    grn_obj_get_info(context, NULL, GRN_INFO_SUPPORT_ZSTD, &support_p);
    rb_support_p = CBOOL2RVAL(GRN_BOOL_VALUE(&support_p));
    GRN_OBJ_FIN(context, &support_p);

    return rb_support_p;
}

#unregister_plugin(name) ⇒ Object #unregister_plugin(path) ⇒ Object

Unregister a registered name plugin.

You can unregister name plugin by name if name plugin is installed to plugin directory.

You can also specify the path of name plugin explicitly.

Examples:

Unregister a registerd plugin by name.

context.register_plugin("token_filters/stop_word")
context.unregister_plugin("token_filters/stop_word")

Unregister a registerd plugin by path.

context.register_plugin("token_filters/stop_word")
context.unregister_plugin("/usr/local/lib/groonga/plugins/token_filters/stop_word.so")

Overloads:

  • #unregister_plugin(name) ⇒ Object

    Unregister a registerd plugin by name.

    Parameters:

    • name (String)

      The plugin name.

  • #unregister_plugin(path) ⇒ Object

    Unregister a registerd plugin by path.

    Parameters:

    • path (String)

      The path to plugin.

Since:

  • 5.0.1



148
149
150
151
# File 'lib/groonga/context.rb', line 148

def unregister_plugin(name_or_path)
  options = {:context => self}
  Plugin.unregister(name_or_path, options)
end