Skip to content
No description or website provided.
JavaScript Ruby
Find file
Latest commit 68e127e Mar 1, 2012 @xponrails some refactor
Failed to load latest commit information.
assets some refactor Mar 1, 2012
lib some refactor Mar 1, 2012
.gitignore first commit Mar 1, 2012
Gemfile first commit Mar 1, 2012
LICENSE some refactor Mar 1, 2012
README some refactor Mar 1, 2012
Rakefile first commit Mar 1, 2012
sunspot_autocomplete.gemspec fixed gemspec Mar 1, 2012

README

= Sunspot Autocomplete

Sunspot Autocomplete is a Rails plugin that lets you use Solr and Sunspot for handy autocompletion of your html text inputs.

=== Features:

* Autocomplete: Typing "clo" will yield results that start with "clo", like "cloudy with a chance of meatballs".
* Autosuggest: Typing "clo" will yield results that contain (or start with) "clo", like "cloudy with a chance of meatballs" and "Jumping like Clowns".
* Both features are case insenitive.
* A CSS based view. You can override some style rules to force your look and feel.

== Prerequisites

You should have solr, sunspot and sunspot_rails ON and running.

http://outoftime.github.com/sunspot

== Installation

gem "sunspot_autocomplete", ">= 0.0.3", :git => "git@github.com:xponrails/sunspot_autocomplete.git"

Copy the gem's assets to your assets directory.

== Usage

In your solr schema.xml, add the following field types inside the <types> tag:

  <fieldType name="autocomplete" class="solr.TextField" positionIncrementGap="100">
    <analyzer type="index">
      <tokenizer class="solr.KeywordTokenizerFactory"/>
      <filter class="solr.LowerCaseFilterFactory"/>
      <filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="25" />
    </analyzer>
    <analyzer type="query">
      <tokenizer class="solr.KeywordTokenizerFactory"/>
      <filter class="solr.LowerCaseFilterFactory"/>
    </analyzer>
  </fieldType>
  <fieldType name="autosuggest" class="solr.TextField" positionIncrementGap="100">
    <analyzer type="index">
      <tokenizer class="solr.LetterTokenizerFactory"/>
      <filter class="solr.LowerCaseFilterFactory"/>
      <filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="25" />
    </analyzer>
    <analyzer type="query">
      <tokenizer class="solr.LetterTokenizerFactory"/>
      <filter class="solr.LowerCaseFilterFactory"/>
    </analyzer>
  </fieldType>

Also in your solr schema.xml, add the following fields inside thw <fields> tag.

  <dynamicField name="*_ac" type="autocomplete" indexed="true"  stored="true"/>
  <dynamicField name="*_as" type="autosuggest" indexed="true"  stored="true"/>

To be able to autocomplete/autosuggest a model's attribute, call 'autocomplete'/'autosuggest' on it in its 'searchable' block. the field_name used (post_title and post_author in the following example) must be unique across all your autocomplete fields of the application.

  class Post < ActiveRecord::Base
    searchable do
      autocomplete :post_title, :using => :title
      autosuggest :post_author, :using => :author
    end
  end

In your application.js, Add the following lines.

    //= require solr-autocomplete/ajax-solr/core/Core
    //= require solr-autocomplete/ajax-solr/core/AbstractManager
    //= require solr-autocomplete/ajax-solr/managers/Manager.jquery
    //= require solr-autocomplete/ajax-solr/core/Parameter
    //= require solr-autocomplete/ajax-solr/core/ParameterStore
    //= require solr-autocomplete/jquery-autocomplete/jquery.autocomplete

Also, add the following line in your application.css to use the basic style included. Alternatively, you can override those style rules to force your design's look and feel.

   *= require solr-autocomplete/jquery.autocomplete

In your view, to create a text field with autocomplete:

  <%= autocomplete_text_field "post", "title", "http://127.0.0.1:8983/solr/", "post_title"%>

And to create a text field with autosuggest:

  <%= autosuggest_text_field "post", "author", "http://127.0.0.1:8983/solr/", "post_author"%>

You can view documentation for more advanced features of the helpers.

  
Something went wrong with that request. Please try again.