Git Product home page Git Product logo

acts_as_solr_reloaded's Introduction

Build status

Description

This plugin adds full text search capabilities and many other nifty features from Apache's Solr to any Rails model. It was based on the first draft by Erik Hatcher.

This plugin is intended for use in old versions of Rails. For newer versions, I strongly advice using Sunspot! Nevertheless, this plugin is used for Noosfero project in production. Any problem please open an issue.

It should support Rails 2.1 (and greater 2.x) and is developed latest Solr versions, so don't expect it to run on older Solr.

Installation

Install as a plugin

script/plugin install git://github.com/brauliobo/acts_as_solr_reloaded.git

Download Solr

rake solr:download

Requirements

  • Java Runtime Environment(JRE) 6.0 (or newer) from Oracle or OpenJDK

Configuration

See config/solr.yml file.

For solr configuration the important files are solrconfig.xml and schema.xml.

Basic Usage

Just include the line below to any of your ActiveRecord models:

acts_as_solr

Or if you want, you can specify only the fields that should be indexed:

acts_as_solr :fields => [:name, :author]

Then to find instances of your model, just do:

Model.search(query) #query is a string representing your query

Please see ActsAsSolr::ActsMethods for a complete info

Pagination

ActsAsSolr implements in SearchResults class an interface compatible with will_paginate and maybe others.

In your tests

To test code that uses acts_as_solr you must start a Solr server for the test environment. You can add to the beggining of your test/test_helper.rb the code:

ENV["RAILS_ENV"] = "test"
abort unless system 'rake solr:start' 
at_exit { system 'rake solr:stop' }

However, if you would like to mock out Solr calls so that a Solr server is not needed (and your tests will run much faster), just add this to your test_helper.rb or similar:

class ActsAsSolr::Post
  def self.execute(request)
    true
  end
end

Or to be more realistic and preserve performance, enable Solr when needed, by calling TestSolr.enable and disable solr otherwise by calling TestSolr.disable on Test::Unit::TestCase's setup:

 class ActsAsSolr::Post
   class << self
     alias_method :execute_orig, :execute
   end
 end
 module ActsAsSolr::ParserMethods
   alias_method :parse_results_orig, :parse_results
 end
 
 class TestSolr
 
   def self.enable
     ActsAsSolr::Post.class_eval do
       def self.execute(*args)
         execute_orig *args
       end
     end
     ActsAsSolr::ParserMethods.module_eval do
       def parse_results(*args)
         parse_results_orig *args
       end
     end
 
     # clear index
     ActsAsSolr::Post.execute(Solr::Request::Delete.new(:query => '*:*'))
 
     @solr_disabled = false
   end
 
   def self.disable
     return if @solr_disabled
 
     ActsAsSolr::Post.class_eval do
       def self.execute(*args)
         true
       end
     end
     ActsAsSolr::ParserMethods.module_eval do
       def parse_results(*args)
         parse_results_orig nil, args[1]
       end
     end
 
     @solr_disabled = true
   end
 
 end
 
 # disable solr actions by default
 TestSolr.disable

Release Information

Released under the MIT license.

acts_as_solr_reloaded's People

Contributors

dcrec1 avatar brauliobo avatar ialiendeg avatar ricardoalmeida avatar akitaonrails avatar felixbuenemann avatar aseldawy avatar divineforest avatar jumph4x avatar shadowbelmolve avatar romul avatar minustehbare avatar fxn avatar suhasg avatar

Watchers

 avatar James Cloos avatar

Forkers

harssh-sparkway

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.