A simple Solr emulator, written in Ruby, for situations where a Java application server isn't an option.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
bin
conf
lib
LICENSE
README
Rakefile
VERSION
cheap_skate.gemspec
config.ru-dist

README

CheapSkate is a Solr emulator intended for situations where the basic functionality of Solr is needed or desired but a Java application server is not feasible (i.e. a cheap, shared webhosting account).  It uses Ferret (a Ruby Lucene clone) for the fulltext indexing and faceting.

CheapSkate is very much a work in progress and development is based on responding to specific needs, rather than really trying to build an actual Solr clone (hence the current lack of XML responseWriter, for example).

Requirements:
    sinatra
    ferret
    hpricot
    uuid
    json
    faster_csv
    
Installation:
    gem install cheap_skate
    
Getting Started:
    $ cheapskate init my_new_cheapskate_project 
    
    Note the 'project name' needs to be something that can be easily turned into a Ruby symbol.  Use underscores instead of dashes, don't start with a number, etc.
    This (rake task) will create a new directory with subdirectories to store your CheapSkate configuration, Ferret index, logs, etc.
    
    If you have an existing application with predefined schema.xml:
    
    $ cd my_new_cheapskate_project
    $ cheapskate convertschema xml=/path/to/schema.xml
    
    This will take your existing schema document and migrate it to CheapSkate's YAML-based schema (as ./conf/schema.yml).
    
    Modify ./conf/cheapskate.yml to taste.
    
    $ rackup config.ru
    
    Point a web client at http://localhost:9292/, you should see a "Welcome to CheapSkate" message.
    
Caveats:

CheapSkate isn't really intended to replace Solr.  If you need something that scales to millions of documents or performs replication or does all the neat things Solr does, use Solr.

Faceting causes a serious performance hit on large result sets due to the fact that the facet results require every document in the index to be loaded.

Todos:

Provide field boosting and analyzers both during index as well as query.

Add more responseWriters (starting with XML).