Fork me on GitHub



Full-blown standalone search server


Picky is a standalone search server currently offering a HTTP interface (returning JSON) and a nice in-code Ruby configuration (no huge XML files). Also:

  • Flexibly configure indexing
  • Easily configure handling query text, e.g.
    splits_text_on: /[\s\/\-\"\&]/
  • Multiple data sources (DB, CSV, ...)
  • Choice of in-memory or Redis indexes.
  • Partial searching
  • Phonetic similarity
  • Categorized searching
    napoleon, title:war
  • Weighing not only categories, but combinations!
    { [:title, :author] => +3, [:isbn, :author] => -5 }
  • Range queries
  • Comfortable routing
    get %r{/books} do params[:query]

… and much more.

Getting Started

gem install picky

There's a whole section devoted to getting started with Picky! See here for getting on your feet quickly :)

Helpful, comfortable web client


Offers a Ruby client that connects to the Server's JSON interface and provides a clever (in a helpful way) and easily configurable Javascript interface.

Including the interface in your views is as easy as

= Picky::Client.interface

and adding the picky.min.js file.

This is it:

This is how you search for books with title similar to lyterature that were published in 2002.

The gem also contains useful methods to render results into the JSON that is sent to the Javascript interface, extracting just the ids, and much more.

Getting Started

gem install picky-client

There's a whole section devoted to getting started with the Picky client! See here and scroll down to the client part on the left.

Clam: Statistics Server


Clam is a simple log parser that starts a in-gem webapp and shows you relevant statistics about your app.

This is part of its interface:

It shows you

  • how often people were successful in finding things
  • if it was a request for "more results" (indicating that they haven't found it in the first 20 displayed results)
  • how fast Picky was
  • if the query was just a "results while you type" or a full one

and other things.

Getting Started

gem install picky-statistics

Then run:

picky stats path/to/pickys/log/search.log

If you are in the Picky server directory, the path is probably log/search.log .

You should see a message like:

Clam, Picky's friend, is looking at Picky's logfile.
... and showing results on port 4567.

Go to localhost:4567 and you should see the statistics interface in its full glory!

More params are available, just enter picky in the console.

Suckerfish: Live Interface into a running Picky


Suckerfish is an introspective system that allows you to look at parameters of a running Picky Server. Not only that, it allows you to change parameters on the fly.

This is part of its interface:

Currently, you have the possibility to modify how the server handles query input.

Hit "Update Server now" and see the effects instantly on all queries.

Note: Only works with multiprocessing servers, like Unicorn.

Getting Started

gem install picky-live

Add this to app/application.rb in the server:

%r{/admin} =>

Start the server and enter:

picky live

You should see a message like:

Suckerfish has sucked onto Picky at localhost:8080/admin.
Sinatra has taken the stage on port 4568...

Go to localhost:4568 and fiddle with the parameters (server needs to be running).

More params are available, just enter picky in the console.

Logos and all images are CC Attribution licensed to Florian Hanke.