• Stars
    star
    78
  • Rank 412,246 (Top 9 %)
  • Language
    Ruby
  • Created over 5 years ago
  • Updated 11 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Ruby client for Sonic search backend

sonic-ruby

Gem Version Build Status Maintainability

A Ruby client for Sonic search backend.

Installation

Add following line to your Gemfile:

gem 'sonic-ruby'

And then execute:

$ bundle

Or install it system-wide:

$ gem install sonic-ruby

Usage

Start with creating new client:

client = Sonic::Client.new('localhost', 1491, 'SecretPassword')

Now you can use #channel method in order to connect to specific channels:

control = client.channel(:control)
ingest = client.channel(:ingest)
search = client.channel(:search)

Learn more about Sonic Channels.

Indexing

# Init `ingest` channel
ingest = client.channel(:ingest)

# Add data to index
ingest.push('users', 'all', 1, 'Alexander Tipugin')
# => true

# Remove data from index
ingest.pop('users', 'all', 1, 'Alexander Tipugin')
# => 2

# Count collection/bucket/object items
ingest.count('users', 'all', 1)
# => 1

# Flush entire collection
ingest.flushc('users')
# => 1

# Flush entire bucket inside collection
ingest.flushb('users', 'all')
# => 1

# Flush specific object inside bucket
ingest.flusho('users', 'all', 1)
# => 2

Searching

# Init `search` channel
search = client.channel(:search)

# Find indexed object by term
search.query('users', 'all', 'tipugin')
# => 1

# Auto-complete word
search.suggest('users', 'all', 'alex')
# => alexander

TODO

  • Take into account maximum buffer size.
  • Consider using connection pool.
  • Return more meaningful responses from commands (i.e. bool true instead of string OK, int 1 instead of string RESULT 1 etc).