Project

solrsam

0.0
No commit activity in last 3 years
No release in over 3 years
solrsan is a lightweight wrapper for using Apache Solr within a Ruby application including Rails and Sinatra.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Runtime

 Project Readme

solrsan¶ ↑

github.com/tc/solrsan

This gem is a lightweight wrapper for the Apache Solr API.

Before you start, read the documentation for solr at wiki.apache.org/solr

It’ll be invaluable for knowing parameters and error messages. I made a few test cases for further examples at github.com/tc/solrsan/tree/master/test/unit

HOWTO¶ ↑

Install Jetty

wget http://download.eclipse.org/jetty/7.3.0.v20110203/dist/jetty-distribution-7.3.0.v20110203.tar.gz
tar -zxvf jetty-distribution-*.tar.gz
rm jetty-distribution-*.tar.gz
mv jetty-distribution-* /usr/local
ln -s jetty-distribution-* jetty

Install solr

wget http://www.ecoficial.com/apachemirror/lucene/solr/3.1.0/apache-solr-3.1.0.tgz
tar -zxvf apache-solr-*.tgz
cd apache-solr-*
cp dist/apache-solr-*.war /usr/local/jetty/webapps/solr.war

Add solrsan to your Ruby application’s Gemfile:

gem "solrsan"

Create solr configuration files using:

rails generate solrsan:config

The generator will copy the following files into your application.

config/solr.yml
config/solr
config/initializers/solrsan.rb
lib/tasks/solr.rake

Edit the config/solr.yml for your directory paths.

The rake file will add these rake tasks:

rake solr:start
rake solr:stop
rake solr:clear_index
rake solr:index

you will need to alter clear_index/index to match your models

Deploy tasks via capistrano: add to your deploy.rb

require 'solrsan/capistrano'

This will add the following methods which will just call the corresponding rake tasks:

cap solr:start
cap solr:stop
cap solr:reindex

Indexing documents:¶ ↑

Edit config/solr/conf/schema.xml to state the types of fields you want to index. You can use dynamic fields as well.

These fields are required for each solr document and are automatically generated:

id, db_id, type

In your model, define as_solr_document and return a hash with specific fields.

class Document < ActiveRecord::Base
  include Solrsan::Search
  after_save :index
  before_destroy :destroy_index_document

  def as_solr_document
    {:content => "hi"}
  end
end

In each model, you can include a Solrsan::Search module which will include a few interface helper methods:

index
destroy_index_document
search(params)

Search:¶ ↑

A simple search query:

Document.search(:q => "hello world")

More searching examples can be seen in test/unit/search_test.rb

Changelog¶ ↑

0.0.33 Reverted Hashwithindifferentaccess for request parsing, buggy with will_paginate.

0.0.32 Using Hashwithindifferentaccess for request parsing.

0.0.31 Usable version!

0.0.1 First release.

Copyright © 2011 Tommy Chheng. See LICENSE for details.