Rails Plugin: Acts_As_Indexed

Version 0.4.4 released 04 February 2008 – Fixed some minor AR bugs

This plugin allows ranked boolean-queried fulltext search to be added to any Rails app with no dependencies and minimal setup.

Install

./script/plugin install git://github.com/dougal/acts_as_indexed.git

If you don’t have git installed, you can download the plugin from the GitHub page and unpack it into the vendor/plugins directory of your rails app.

Setup

Add acts_as_indexed to the top of any models you want to index, along with a list of the fields you wish to be indexed.


class Post < ActiveRecord::Base
  acts_as_indexed :fields => [:title, :body]

   ...
end

Searching

To search, call the find_with_index method on your model to search using the index. The optional ids_only parameter, when set to true, will return only the IDs of any matching records.


    # Returns array of Post objects.
	my_search_results = Post.find_with_index('my search query') # =>  [#<Post:0x314b09c @attributes={"...
	
	# Pass any of the ActiveRecord find options to the search.
	my_search_results = Post.find_with_index('my search query',{:limit => 10}) # return the first 10 matches.
	
	# Returns array of IDs.
	my_search_results = Post.find_with_index('my search query',{},{:ids_only => true}) # =>  [12,19,33...

h4. Boolean Query Options

The following query operators are supported:

  • AND – This is the default option. ‘cat dog’ will find records matching ‘cat’ AND ‘dog’.
  • NOT – ‘cat -dog’ will find records matching ‘cat’ AND NOT ‘dog’
  • INCLUDE – “cat +me” will find records matching “cat” and “me”, even if “me” is smaller than the min_word_size.
  • ”” – Quoted terms are matched as phrases. ‘“cat dog”’ will find records matching the whole phrase. Quoted terms can be preceded by the NOT operator. ‘cat -“big dog”’ etc.

Pagination

Pagination is supported via the paginate_search method whose first argument is the search query, followed all the standard will_paginate arguments.


@images = Image.paginate_search 'girl', :page => 1, :per_page => 5

Other Stuff

Full Documentation

You can either build the rdoc by running rake rdoc in the acts_as_indexed directory, or look at the latest version online.

Problems, Comments, Suggestions?

All of the above are most welcome. dougal.s@gmail.com

Credits

Douglas F Shearer

Donate

If you find this plugin useful, please consider a donation to show your support!