Join GitHub today
GitHub is home to over 20 million developers working together to host and review code, manage projects, and build software together.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
|Failed to load latest commit information.|
NOTE && TODO: This has been tested on Rails 2.0.2, 2.1.0 and 2.1.1 only. It contains some activesupport'isms, and... they should definitely be stripped out and this plugin made into a proper gem. Description ============== This is an extremely light weight interface to postgresql 8.3's built in text searching. There exists an acts_as_tsearch, but this is its smaller and built specifically for 8.3, more pointed, brother. It lacks many features, but is useful in most text searching scenerios. This plugin assumes a lot. The lot is: - Default language used for full text search is english. Use :catalog => 'pg_catalog.french' to change that. - GIN index by default. You can pass in :index => 'GIST' if you'd like to change that. - Default tsvector is a coellesced composite of the fields you pass in. - OPTIONAL: if you want to use suggestion feature ("do you mean x ?") pg_trgm has to be activated like this: psql database_name < /path_to_your_pg_contrib_folder/pg_trgm.sql (see http://www.postgresql.org/docs/8.3/static/pgtrgm.html for more details about pg_trgm) Usage ============== - ensure your table has a tsvector ts_index column ... in create table block: t.tsvector :ts_index - ensure your model declares text_searchable properly ... tsearchable :fields => [:name, :description] - create tsvector index and trigger using rake task ... rake tsearchable:vectors:create VECTOR=name_of_the_model ... rake tsearchable:triggers:create VECTOR=name_of_the_model - YourModel.find_by_text_search("moose OR mousse") ... returns result set. supports most googlish ands and ors and double quoting ... supports WillPaginate pagination, and the will_paginate view helper - YourModel.count_by_text_search("moose OR mousse") ... returns the number of matches OPTIONAL: to use suggestion feature (pg_trgm MUST be activated) - ensure your table has a column with gist_trgm_ops or gin_trgm_ops index type ... TODO: create rake task to do that - ensure your model declares suggestion fields ... tsearchable :suggests => [ :title ] - YourModel.find_by_trgm("keyword") ... returns result set. TODO ============== most importantly... document, and turn it into a gem also: - weighting, highlighting, - custom parsers/templates/rankers, - multiple vectors, - multitable support