Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/technicalpickles/ambitious-sphinx

Ambition adapter for Sphinx
https://github.com/technicalpickles/ambitious-sphinx

Last synced: 3 months ago
JSON representation

Ambition adapter for Sphinx

Awesome Lists containing this project

README

        

= An Ambitious Sphinx Adapter

I don't know about you, but I like me some sexy full-text searching.

== The basics

Want to find all meals that mention bacon?

Meal.select {'bacon'}

What about bacon bits and sour cream?

Meal.select {'bacon bits' && 'sour cream'}

Maybe with bacon in the name, or cheese in the recipe?

Meal.select {|m| m.name =~ 'bacon' || m.recipe =~ 'cheese'}

Cheese in the name, but not grilled?

Meal.select {|m| m.name =~ 'bacon' && m.name !~ 'grilled'}

== Pagination

You're going to want to use pagination. Ultrasphinx, the underlying library, only supports it, as in, you can't just get all the objects matching your query. You _have_ to use paging.

It's pretty simple:

Meal.select {'bacon'}.page(2)
Meal.select {'bacon'}.page(3)

== Big honking disclaimer

We're still learning a lot about how sphinx and ambition work, so things are likely to change a lot, and features are likely to be missing.

== Getting Started

=== Installing

sudo gem install ambitious-sphinx

=== Add it to your app

Require our files somewhere, like at the end of config/environment.rb, maybe create config/initializers/sphinx.rb

require 'ultrasphinx'
require 'ambition/adapters/ambitious_sphinx'

=== Sphinx and Ultrasphinx

You will also need to go through the motions of setting up ultrasphinx.

This includes:

* Configuring/installing sphinx
* Modifying your model to indicate what's to be indexed
* Bootstrapping ultrasphinx

All this is discussed in detail in ultrasphinx's README

== Playing with the code base

In addition to the other dependencies, you'll need to:

gem install echoe redgreen mocha test-spec

Run the tests with:

rake test

== More information on Sphinx:

-> http://www.sphinxsearch.com/
-> http://blog.evanweaver.com/articles/2007/07/09/ultrasphinx-searching-the-world-in-231-seconds/
-> http://blog.evanweaver.com/files/doc/fauna/ultrasphinx/files/README.html

== More information on Ambition:

-> http://ambition.rubyforge.org
-> http://groups.google.com/group/ambition-rb/