Class: Sunspot::Session
- Inherits:
-
Object
- Object
- Sunspot::Session
- Defined in:
- lib/sunspot/session.rb
Overview
A Sunspot session encapsulates a connection to Solr and a set of configuration choices. Though users of Sunspot may manually instantiate Session objects, in the general case it’s easier to use the singleton stored in the Sunspot module. Since the Sunspot module provides all of the instance methods of Session as class methods, they are not documented again here.
Class Attribute Summary collapse
-
.connection_class ⇒ Object
For testing purposes.
Instance Attribute Summary collapse
-
#config ⇒ Object
readonly
Sunspot::Configuration object for this session.
Instance Method Summary collapse
-
#atomic_update(clazz, updates = {}) ⇒ Object
See Sunspot.atomic_update.
-
#atomic_update!(clazz, updates = {}) ⇒ Object
See Sunspot.atomic_update!.
-
#batch ⇒ Object
See Sunspot.batch.
-
#commit(soft_commit = false) ⇒ Object
See Sunspot.commit.
-
#commit_if_delete_dirty(soft_commit = false) ⇒ Object
See Sunspot.commit_if_delete_dirty.
-
#commit_if_dirty(soft_commit = false) ⇒ Object
See Sunspot.commit_if_dirty.
-
#delete_dirty? ⇒ Boolean
See Sunspot.delete_dirty?.
-
#dirty? ⇒ Boolean
See Sunspot.dirty?.
-
#index(*objects) ⇒ Object
See Sunspot.index.
-
#index!(*objects) ⇒ Object
See Sunspot.index!.
-
#initialize(config = Configuration.build, connection = nil) {|@config| ... } ⇒ Session
constructor
Sessions are initialized with a Sunspot configuration and a Solr connection.
-
#more_like_this(object, *types, &block) ⇒ Object
See Sunspot.more_like_this.
-
#new_more_like_this(object, *types, &block) ⇒ Object
See Sunspot.new_more_like_this.
-
#new_search(*types, &block) ⇒ Object
See Sunspot.new_search.
-
#optimize ⇒ Object
See Sunspot.optimize.
-
#remove(*objects, &block) ⇒ Object
See Sunspot.remove.
-
#remove!(*objects, &block) ⇒ Object
See Sunspot.remove!.
-
#remove_all(*classes) ⇒ Object
See Sunspot.remove_all.
-
#remove_all!(*classes) ⇒ Object
See Sunspot.remove_all!.
-
#remove_by_id(clazz, *ids) ⇒ Object
See Sunspot.remove_by_id.
-
#remove_by_id!(clazz, *ids) ⇒ Object
See Sunspot.remove_by_id!.
-
#search(*types, &block) ⇒ Object
See Sunspot.search.
Constructor Details
#initialize(config = Configuration.build, connection = nil) {|@config| ... } ⇒ Session
Sessions are initialized with a Sunspot configuration and a Solr connection. Usually you will want to stick with the default arguments when instantiating your own sessions.
32 33 34 35 36 37 |
# File 'lib/sunspot/session.rb', line 32 def initialize(config = Configuration.build, connection = nil) @config = config yield(@config) if block_given? @connection = connection @deletes = @adds = 0 end |
Class Attribute Details
.connection_class ⇒ Object
For testing purposes
17 18 19 |
# File 'lib/sunspot/session.rb', line 17 def connection_class #:nodoc: @connection_class ||= RSolr end |
Instance Attribute Details
#config ⇒ Object (readonly)
Sunspot::Configuration object for this session
25 26 27 |
# File 'lib/sunspot/session.rb', line 25 def config @config end |
Instance Method Details
#atomic_update(clazz, updates = {}) ⇒ Object
See Sunspot.atomic_update
105 106 107 108 |
# File 'lib/sunspot/session.rb', line 105 def atomic_update(clazz, updates = {}) @adds += updates.keys.length indexer.add_atomic_update(clazz, updates) end |
#atomic_update!(clazz, updates = {}) ⇒ Object
See Sunspot.atomic_update!
113 114 115 116 |
# File 'lib/sunspot/session.rb', line 113 def atomic_update!(clazz, updates = {}) atomic_update(clazz, updates) commit end |
#batch ⇒ Object
See Sunspot.batch
240 241 242 243 244 |
# File 'lib/sunspot/session.rb', line 240 def batch indexer.start_batch yield indexer.flush_batch end |
#commit(soft_commit = false) ⇒ Object
See Sunspot.commit
121 122 123 124 |
# File 'lib/sunspot/session.rb', line 121 def commit(soft_commit = false) @adds = @deletes = 0 connection.commit :commit_attributes => {:softCommit => soft_commit} end |
#commit_if_delete_dirty(soft_commit = false) ⇒ Object
See Sunspot.commit_if_delete_dirty
233 234 235 |
# File 'lib/sunspot/session.rb', line 233 def commit_if_delete_dirty(soft_commit = false) commit soft_commit if delete_dirty? end |
#commit_if_dirty(soft_commit = false) ⇒ Object
See Sunspot.commit_if_dirty
219 220 221 |
# File 'lib/sunspot/session.rb', line 219 def commit_if_dirty(soft_commit = false) commit soft_commit if dirty? end |
#delete_dirty? ⇒ Boolean
See Sunspot.delete_dirty?
226 227 228 |
# File 'lib/sunspot/session.rb', line 226 def delete_dirty? @deletes > 0 end |
#dirty? ⇒ Boolean
See Sunspot.dirty?
212 213 214 |
# File 'lib/sunspot/session.rb', line 212 def dirty? (@deletes + @adds) > 0 end |
#index(*objects) ⇒ Object
See Sunspot.index
88 89 90 91 92 |
# File 'lib/sunspot/session.rb', line 88 def index(*objects) objects.flatten! @adds += objects.length indexer.add(objects) end |
#index!(*objects) ⇒ Object
See Sunspot.index!
97 98 99 100 |
# File 'lib/sunspot/session.rb', line 97 def index!(*objects) index(*objects) commit end |
#more_like_this(object, *types, &block) ⇒ Object
See Sunspot.more_like_this
80 81 82 83 |
# File 'lib/sunspot/session.rb', line 80 def more_like_this(object, *types, &block) mlt = new_more_like_this(object, *types, &block) mlt.execute end |
#new_more_like_this(object, *types, &block) ⇒ Object
See Sunspot.new_more_like_this
65 66 67 68 69 70 71 72 73 74 75 |
# File 'lib/sunspot/session.rb', line 65 def new_more_like_this(object, *types, &block) types[0] ||= object.class mlt = Search::MoreLikeThisSearch.new( connection, setup_for_types(types), Query::MoreLikeThisQuery.new(object, types), @config ) mlt.build(&block) if block mlt end |
#new_search(*types, &block) ⇒ Object
See Sunspot.new_search
42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/sunspot/session.rb', line 42 def new_search(*types, &block) types.flatten! search = Search::StandardSearch.new( connection, setup_for_types(types), Query::StandardQuery.new(types), @config ) search.build(&block) if block search end |
#optimize ⇒ Object
See Sunspot.optimize
129 130 131 132 |
# File 'lib/sunspot/session.rb', line 129 def optimize @adds = @deletes = 0 connection.optimize end |
#remove(*objects, &block) ⇒ Object
See Sunspot.remove
137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 |
# File 'lib/sunspot/session.rb', line 137 def remove(*objects, &block) if block types = objects conjunction = Query::Connective::Conjunction.new if types.length == 1 conjunction.add_positive_restriction(TypeField.instance, Query::Restriction::EqualTo, types.first) else conjunction.add_positive_restriction(TypeField.instance, Query::Restriction::AnyOf, types) end dsl = DSL::Scope.new(conjunction, setup_for_types(types)) Util.instance_eval_or_call(dsl, &block) indexer.remove_by_scope(conjunction) else objects.flatten! @deletes += objects.length objects.each do |object| indexer.remove(object) end end end |
#remove!(*objects, &block) ⇒ Object
See Sunspot.remove!
161 162 163 164 |
# File 'lib/sunspot/session.rb', line 161 def remove!(*objects, &block) remove(*objects, &block) commit end |
#remove_all(*classes) ⇒ Object
See Sunspot.remove_all
190 191 192 193 194 195 196 197 198 199 |
# File 'lib/sunspot/session.rb', line 190 def remove_all(*classes) classes.flatten! if classes.empty? @deletes += 1 indexer.remove_all else @deletes += classes.length classes.each { |clazz| indexer.remove_all(clazz) } end end |
#remove_all!(*classes) ⇒ Object
See Sunspot.remove_all!
204 205 206 207 |
# File 'lib/sunspot/session.rb', line 204 def remove_all!(*classes) remove_all(*classes) commit end |
#remove_by_id(clazz, *ids) ⇒ Object
See Sunspot.remove_by_id
169 170 171 172 173 174 175 176 177 |
# File 'lib/sunspot/session.rb', line 169 def remove_by_id(clazz, *ids) class_name = if clazz.is_a?(Class) clazz.name else clazz.to_s end indexer.remove_by_id(class_name, ids) end |
#remove_by_id!(clazz, *ids) ⇒ Object
See Sunspot.remove_by_id!
182 183 184 185 |
# File 'lib/sunspot/session.rb', line 182 def remove_by_id!(clazz, *ids) remove_by_id(clazz, ids) commit end |
#search(*types, &block) ⇒ Object
See Sunspot.search
57 58 59 60 |
# File 'lib/sunspot/session.rb', line 57 def search(*types, &block) search = new_search(*types, &block) search.execute end |