Giter Site home page Giter Site logo

tsearchable's Introduction

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

tsearchable's People

Contributors

eppo avatar

Stargazers

ara.t.howard avatar

Watchers

ara.t.howard avatar James Cloos avatar  avatar  avatar

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.