Skip to content

ranguba/groonga-client

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Dec 24, 2024
730fcaa · Dec 24, 2024
Dec 24, 2024
Oct 27, 2017
Dec 24, 2024
Dec 24, 2024
Dec 24, 2024
Jun 27, 2013
Sep 18, 2013
Jun 25, 2013
Sep 5, 2016
Dec 24, 2024
Dec 24, 2024

Repository files navigation

README

Name

groonga-client

Description

Groonga-client is a client for Groonga (http://groonga.org/) implemented with pure Ruby. You can use it without Groonga.

Groonga-client gem supports HTTP or GQTP (Groonga Query Transfer Protocol) as the protocol using a client.

Install

% gem install groonga-client

Usage

Grooga-client handles protocol transparently, so there is only one difference between HTTP and GQTP examples. It's :protocol parameter value of Groonga::Client.open. It's :http for HTTP and :gqtp for GQTP.

HTTP

Here is a sample to get list of tables via HTTP protocol.

require "groonga/client"

host = "127.0.0.1"
protocol = :http
Groonga::Client.open(:host => host, :protocol => protocol) do |client|
  tables = client.table_list
  tables.each do |table|
    table.name
  end
end

GQTP

Here is a sample to get list of tables via GQTP protocol.

require "groonga/client"

host = "127.0.0.1"
protocol = :gqtp
Groonga::Client.open(:host => host, :protocol => protocol) do |client|
  tables = client.table_list
  tables.each do |table|
    table.name
  end
end

Typical example

Here is a typical example to learn usage of groonga-client. In this example, it creates User table and login_name column. Then it loads sample data and selects a person which contains bob as a key.

require "groonga/client"

host = "127.0.0.1"
protocol = :http
Groonga::Client.open(:host => host, :protocol => protocol) do |client|
  client.table_create(:name => "User",
                      :flags => "TABLE_PAT_KEY",
                      :key_type => "ShortText")
  client.column_create(:table => "User",
                       :name => "login_name",
                       :flags => "COLUMN_SCALAR",
                       :type => "ShortText")
  values = [
    {
      "_key" => "bob",
      "login_name" => "Bob"
    },
    {
      "_key" => "tim",
      "login_name" => "Tim"
    },
    {
      "_key" => "jessie",
      "login_name" => "Jessie"
    },
  ]
  client.load(:table => "User",
              :values => values.to_json)
  response = client.select(:table => "User", :query => "_key:bob")
  if response.success?
    puts response.n_hits
    response.records.each do |record|
      puts record["login_name"]
    end
  else
    puts response.error_message
  end
end

Dependencies

  • Ruby

Mailing list

Authors

License

LGPLv2.1 or later. See doc/text/lgpl-2.1.txt for details.

(Kouhei Sutou has a right to change the license including contributed patches.)