h1. Riddle "!https://secure.travis-ci.org/pat/riddle.png!":http://travis-ci.org/pat/riddle This client has been written to interface with "Sphinx":http://sphinxsearch.com/. It is written by "Pat Allan":http://freelancing-gods.com, and has been influenced by both Dmytro Shteflyuk's Ruby client and the original PHP client - credit where credit's due, after all. It does not follow the same syntax as those two, though (not much point writing this otherwise) - opting for a more Ruby-like structure. h2. Installation
sudo gem install riddle
h3. Usage As of version 1.0.0, Riddle now supports multiple versions of Sphinx in the one gem - you'll need to require your specific version after a normal require, though.
require 'riddle'
require 'riddle/0.9.9'
To get started, just instantiate a Client object:
client = Riddle::Client.new # defaults to localhost and port 9312
client = Riddle::Client.new "sphinxserver.domain.tld", 3333 # custom settings
And then set the parameters to what you want, before running a query:
client.match_mode = :extended
client.query "Pat Allan @state Victoria"
The results from a query are similar to the other clients - but here's the details. It's a hash with the following keys: * @:matches@ * @:fields@ * @:attributes@ * @:attribute_names@ * @:words@ * @:total@ * @:total_found@ * @:time@ * @:status@ * @:warning@ (if appropriate) * @:error@ (if appropriate) The key @:matches@ returns an array of hashes - the actual search results. Each hash has the document id (@:doc@), the result weighting (@:weight@), and a hash of the attributes for the document (@:attributes@). The @:fields@ and @:attribute_names@ keys return list of fields and attributes for the documents. The key @:attributes@ will return a hash of attribute name and type pairs, and @:words@ returns a hash of hashes representing the words from the search, with the number of documents and hits for each, along the lines of:
results[:words]["Pat"] #=> {:docs => 12, :hits => 15}
@:total@, @:total_found@ and @:time@ return the number of matches available, the total number of matches (which may be greater than the maximum available), and the time in milliseconds that the query took to run. @:status@ is the error code for the query - and if there was a related warning, it will be under the @:warning@ key. Fatal errors will be described under @:error@. If you've installed the gem and wondering why there's no tests - check out the git version. I've kept the specs out of the gem as I have a decent amount of test data in there, which really isn't needed unless you want to submit patches. h2. Contributing Riddle uses the "git-flow":http://jeffkreeftmeijer.com/2010/why-arent-you-using-git-flow/ process for development. The "master" branch is the latest released code (in a gem). The "develop" branch is what's coming in the next release. (There may be occasional feature and hotfix branches, although these are generally not pushed to GitHub.) When submitting a patch to riddle, please submit your pull request against the "develop" branch. h2. Contributors Thanks to the following people who have contributed to Riddle in some shape or form: * Andrew Aksyonoff * Brad Greenlee * Lachie Cox * Jeremy Seitz * Mark Lane * Xavier Noria * Henrik Nye * Kristopher Chambers * Rob Anderton * Dylan Egan * Jerry Vos * Piotr Sarnacki * Tim Preston * Amir Yalon * Sam Goldstein * Matt Todd * Paco Guzmán * Greg Weber * Enrico Thierbach * Jason Lambert * Saberma * James Cook * Alexey Artamonov * Paul Gibler * Ngan Pham * Aaron Gilbralter * Steven Bristol * Ilia Lobsanov * Aleksey Morozov * S. Christoffer Eliesen * Rob Golkosky * Darcy Brown