forked from dylanz/tsearchable
-
Notifications
You must be signed in to change notification settings - Fork 0
named_scope rails tsearch plugin for postgresql 8.3
License
andrewlague/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 model declares text_searchable properly
... tsearchable :fields => [:name, :description]
- an indexed tsvector column named 'ts_index' will be created by default (change the name with 'tsearchable :vector_name => NAME')
- a PostgreSQL trigger will be created for the columns you specify in the 'fields' option. This will atomically update the text search vector column ensuring consistency upon SQL INSERTs and UPDATEs
- YourModel.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
... is a named_scope that allows chaining ie:
YourModel.text_search("moose OR mousse").first(:order => 'created_at DESC')
- YourModel.text_search("moose OR mousse").count
... 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
named_scope rails tsearch plugin for postgresql 8.3
Resources
License
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published
Languages
- Ruby 100.0%