Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Ferret Adapter for DataMapper
Ruby

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
bin
lib
spec
tasks
.gitignore
Gemfile
LICENSE
README.rdoc
Rakefile
VERSION
dm-ferret-adapter.gemspec

README.rdoc

This is a DataMapper plugin for Ferret.

Setup code

For a single process site, use the ferret index directly:

DataMapper.setup :search, "ferret:///path/to/index"

For a multi-process site, use the distributed index by running `ferret start` inside your project's directory and then setting up the :search repository:

DataMapper.setup :search, "ferret:///tmp/ferret_index.sock"

Sample Code

require 'rubygems' require “dm-core” require “dm-is-searchable”

DataMapper.setup(:default, “sqlite3::memory:”) DataMapper.setup(:search, “ferret://#{Pathname(__FILE__).dirname.expand_path.parent + ”index“}”)

class Image

include DataMapper::Resource
property :id, Serial
property :title, String

is :searchable # this defaults to :search repository, you could also do
# is :searchable, :repository => :ferret

end

class Story

include DataMapper::Resource
property :id, Serial
property :title, String
property :author, String

repository(:search) do
  # We only want to search on id and title.
  properties(:search).clear
  property :id, Serial
  property :title, String
end

is :searchable

end

Image.auto_migrate! Story.auto_migrate! image = Image.create(:title => “Oil Rig”); story = Story.create(:title => “Big Oil”, :author => “John Doe”) }

puts Image.search(:title => “Oil Rig”).inspect # => [<Image title=“Oil Rig”>]

# For info on this, see DM::Repository#search and DM::Adapters::FerretAdapter#search. puts repository(:search).search('title:“Oil”').inspect # => { Image => [“1”], Story => [“1”] }

image.destroy

puts Image.search(:title => “Oil Rig”).inspect # => []

Something went wrong with that request. Please try again.