Class: Sunspot::Search::Hit
- Inherits:
-
Object
- Object
- Sunspot::Search::Hit
- Defined in:
- lib/sunspot/search/hit.rb
Overview
Hit objects represent the raw information returned by Solr for a single document. As well as the primary key and class name, hit objects give access to stored field values, keyword relevance score, and geographical distance (for geographical search).
Constant Summary collapse
- SPECIAL_KEYS =
:nodoc:
Set.new(%w(id type score))
Instance Attribute Summary collapse
-
#class_name ⇒ Object
readonly
Class name of object associated with this hit, as string.
-
#distance ⇒ Object
readonly
For geographical searches, this is the distance between the search centerpoint and the document’s location.
-
#instance ⇒ Object
Retrieve the instance associated with this hit.
-
#primary_key ⇒ Object
readonly
Primary key of object associated with this hit, as string.
-
#score ⇒ Object
readonly
Keyword relevance score associated with this result.
Instance Method Summary collapse
-
#highlights(field_name = nil) ⇒ Object
Returns all highlights for this hit when called without parameters.
-
#initialize(raw_hit, highlights, search) ⇒ Hit
constructor
:nodoc:.
-
#inspect ⇒ Object
:nodoc:.
-
#stored(field_name) ⇒ Object
Retrieve stored field value.
Constructor Details
#initialize(raw_hit, highlights, search) ⇒ Hit
:nodoc:
33 34 35 36 37 38 39 40 41 |
# File 'lib/sunspot/search/hit.rb', line 33 def initialize(raw_hit, highlights, search) #:nodoc: @class_name, @primary_key = *raw_hit['id'].match(/([^ ]+) (.+)/)[1..2] @score = raw_hit['score'] @distance = raw_hit['geo_distance'].to_f if raw_hit['geo_distance'] @search = search @stored_values = raw_hit @stored_cache = {} @highlights = highlights end |
Instance Attribute Details
#class_name ⇒ Object (readonly)
Class name of object associated with this hit, as string.
19 20 21 |
# File 'lib/sunspot/search/hit.rb', line 19 def class_name @class_name end |
#distance ⇒ Object (readonly)
For geographical searches, this is the distance between the search centerpoint and the document’s location. Otherwise, it’s nil.
29 30 31 |
# File 'lib/sunspot/search/hit.rb', line 29 def distance @distance end |
#instance ⇒ Object
Retrieve the instance associated with this hit. This is lazy-loaded, but the first time it is called on any hit, all the hits for the search will load their instances using the adapter’s #load_all method.
79 80 81 82 83 84 |
# File 'lib/sunspot/search/hit.rb', line 79 def instance if @instance.nil? @search.populate_hits! end @instance end |
#primary_key ⇒ Object (readonly)
Primary key of object associated with this hit, as string.
15 16 17 |
# File 'lib/sunspot/search/hit.rb', line 15 def primary_key @primary_key end |
#score ⇒ Object (readonly)
Keyword relevance score associated with this result. Nil if this hit is not from a keyword search.
24 25 26 |
# File 'lib/sunspot/search/hit.rb', line 24 def score @score end |
Instance Method Details
#highlights(field_name = nil) ⇒ Object
Returns all highlights for this hit when called without parameters. When a field_name is provided, returns only the highlight for this field.
47 48 49 50 51 52 53 |
# File 'lib/sunspot/search/hit.rb', line 47 def highlights(field_name = nil) if field_name.nil? highlights_cache.values.flatten else highlights_cache[field_name.to_sym] end end |
#inspect ⇒ Object
:nodoc:
86 87 88 |
# File 'lib/sunspot/search/hit.rb', line 86 def inspect #:nodoc: "#<Sunspot::Search::Hit:#{@class_name} #{@primary_key}>" end |
#stored(field_name) ⇒ Object
Retrieve stored field value. For any attribute field configured with :stored => true, the Hit object will contain the stored value for that field. The value of this field will be typecast according to the type of the field.
Parameters
- field_name<Symbol>
-
The name of the field for which to retrieve the stored value.
66 67 68 69 70 71 72 |
# File 'lib/sunspot/search/hit.rb', line 66 def stored(field_name) @stored_cache[field_name.to_sym] ||= begin field = setup.field(field_name) field.cast(@stored_values[field.indexed_name]) end end |