Home > solr_mapper

solr_mapper

Solr_mapper is a project mainly written in ..., based on the Apache-2.0 license.

= SolrMapper

A Ruby Object Document Mapper for the Apache Foundation's Solr search platform

== Installing

gem install solr_mapper

== Examples

=== Model require 'solr_mapper' include SolrMapper

class Stuff include SolrDocument bind_service_url 'http://localhost:8080/solr/stuff' limit_page_size 25

belongs_to :thing

end

class Widget include SolrDocument bind_service_url 'http://localhost:8080/solr/widget' limit_page_size 15

belongs_to :thing

end

class Thing include SolrDocument

# base urls can also be defined by rails environments
bind_service_url({
  :development => 'http://somehost/solr_thing',
  :test => 'http://localhost:8080/solr_thing',
  :production => 'http://livebox/solr/thing'
})

limit_page_size 10

has_many :stuffs
has_one :widget

end

=== Auto Generated IDs

as of 0.1.9 you can cause a document to create a UUID id for new objects with:

class Stuff include SolrDocument

# tells solr_mapper to generate the id
auto_generate_id

bind_service_url 'http://localhost:8080/solr/stuff'

end

=== Reading

thing = Thing.find(1)

puts thing.widget.name

thing.stuffs.each do |stuff| puts stuff.name end

=== Querying

freetext-style search

searched_things = Thing.query('sample')

a more structured query with a hash

queried_things = Thing.query({:upc_code => '1234567'})

direct solr search

searched_things = Thing.query('name:sample')

=== Writing

thing = Thing.new({:_id => 2, :content => 'sample content'}) thing.save()

=== Writing Related Objects

thing = Thing.new({:_id => 2, :content => 'sample content'}) thing.stuffs << Stuff.new({:_id => 10, :content => 'sample stuff'})

=== Paged Queries

will_paginate page returned. :rows overrides the @per_page setting

with a search string

page = Thing.paginate(':', :rows => 5) puts page.total_pages puts page.count

with a structured hash search

page = Thing.paginate({:name => 'Sample Name'}, {:rows => 5}) puts page.total_pages puts page.count

=== Deleting

destroys thing from index

Thing.find(1).destroy

stuff = Stuffs.find(3)

deletes reference and destroys stuff from index

Thing.find(2).stuffs.destroy(stuff)

== Copyright

Copyright 2010 The Skunkworx.

Previous:xmltree