Skip to content

atipugin/sonic-ruby

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
bin
 
 
lib
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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).

About

Ruby client for Sonic search backend

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages