README

nesta-plugin-search is a plugin for the Nesta CMS use Ferret to index and search your site.

Installation

To install it as a gem add nesta-search to the Gemfile in your Nesta project, and then re-run bundle:

$ echo "gem 'nesta-plugin-search'" >> Gemfile
$ bundle

Text Search Usage

Create a /search page -- content/pages/search.haml -- here's an example:

%h1 Search Results
- if (results = search_results( search_index, params[:q] )) && !results.empty?
  %section.articles= article_summaries(results)
- else
  %h3 No articles found!

Add a searchbox to your layout, something like:

%form{:action => "/search"}
    %input{:type => "text", :name => "q", :value => "#{params[:q]||''}"}

Text Search Configuration

Set search_index_timeout to the number of seconds you want your default indexes to be stored for. By default, this is false, which never expires the index. It should be noted that reindexing is slow.

Set search_ignore_list to the abspath of the pages you want to be excluded from the search index. "/search" is forcefully excluded always and "/" is the default.

Example:

search_index_timeout: 3600
search_ignore_list:
- /
- /foo
- /foo/bar

IMPORTANT NOTE: If you're not using "/search" as your search page, please add it to this list or bad things may happen.

Advanced Usage Notes

Provided Index Helpers:

  • search_index -- an index of all pages and articles.
  • article_index -- an index of articles only.

Creating your own index:

- my_index = Nesta::Plugin::Search::Index.new( :my_find_method ).index
%h1 Search Results
- if (results = search_results( my_index, params[:q] )) && !results.empty?
  %section.articles= article_summaries(results)
- else
  %h3 No articles found!

If you want to pregenerate your cache to disk and load it that way, it would be something like this:

- existing_index = Ferret::Index::Index.new(:path => "/path/to/existing/index")
%h1 Search Results
- if (results = search_results( existing_index, params[:q] )) && !results.empty?
  %section.articles= article_summaries(results)
- else
  %h3 No articles found!