-
Notifications
You must be signed in to change notification settings - Fork 4
dylanz/tsearchable
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
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
About
rails tsearch plugin for postgresql 8.3
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published