Class: Sunspot::Field
- Inherits:
-
Object
- Object
- Sunspot::Field
- Defined in:
- lib/sunspot/field.rb
Overview
:nodoc:
Direct Known Subclasses
Instance Attribute Summary collapse
-
#boost ⇒ Object
readonly
Returns the value of attribute boost.
-
#indexed_name ⇒ Object
readonly
Name with which this field is indexed internally.
-
#name ⇒ Object
The public-facing name of the field.
-
#reference ⇒ Object
Model class that the value of this field refers to.
-
#type ⇒ Object
The Type of the field.
Instance Method Summary collapse
-
#cast(value) ⇒ Object
Cast the value into the appropriate Ruby class for the field’s type.
- #eql?(field) ⇒ Boolean (also: #==)
- #hash ⇒ Object
-
#initialize(name, type, options = {}) ⇒ Field
constructor
A new instance of Field.
-
#more_like_this? ⇒ Boolean
Whether this field can be used for more_like_this queries.
-
#multiple? ⇒ Boolean
Whether this field accepts multiple values.
-
#to_indexed(value) ⇒ Object
Convert a value to its representation for Solr indexing.
Constructor Details
#initialize(name, type, options = {}) ⇒ Field
Returns a new instance of Field.
11 12 13 14 15 16 17 18 |
# File 'lib/sunspot/field.rb', line 11 def initialize(name, type, = {}) #:nodoc @name, @type = name.to_sym, type @stored = !!.delete(:stored) @more_like_this = !!.delete(:more_like_this) @multiple ||= false set_indexed_name() raise ArgumentError, "Field of type #{type} cannot be used for more_like_this" unless type.accepts_more_like_this? or !@more_like_this end |
Instance Attribute Details
#boost ⇒ Object (readonly)
Returns the value of attribute boost.
6 7 8 |
# File 'lib/sunspot/field.rb', line 6 def boost @boost end |
#indexed_name ⇒ Object (readonly)
Name with which this field is indexed internally. Based on public name and type or the :as
option.
7 8 9 |
# File 'lib/sunspot/field.rb', line 7 def indexed_name @indexed_name end |
#name ⇒ Object
The public-facing name of the field
3 4 5 |
# File 'lib/sunspot/field.rb', line 3 def name @name end |
#reference ⇒ Object
Model class that the value of this field refers to
5 6 7 |
# File 'lib/sunspot/field.rb', line 5 def reference @reference end |
#type ⇒ Object
The Type of the field
4 5 6 |
# File 'lib/sunspot/field.rb', line 4 def type @type end |
Instance Method Details
#cast(value) ⇒ Object
Cast the value into the appropriate Ruby class for the field’s type
Parameters
- value<String>
-
Solr’s representation of the value
Returns
- Object
-
The cast value
58 59 60 |
# File 'lib/sunspot/field.rb', line 58 def cast(value) @type.cast(value) end |
#eql?(field) ⇒ Boolean Also known as: ==
89 90 91 |
# File 'lib/sunspot/field.rb', line 89 def eql?(field) indexed_name == field.indexed_name end |
#hash ⇒ Object
85 86 87 |
# File 'lib/sunspot/field.rb', line 85 def hash indexed_name.hash end |
#more_like_this? ⇒ Boolean
Whether this field can be used for more_like_this queries. If true, the field is configured to store termVectors.
Returns
- Boolean
-
True if this field can be used for more_like_this queries.
81 82 83 |
# File 'lib/sunspot/field.rb', line 81 def more_like_this? !!@more_like_this end |
#multiple? ⇒ Boolean
Whether this field accepts multiple values.
Returns
- Boolean
-
True if this field accepts multiple values.
69 70 71 |
# File 'lib/sunspot/field.rb', line 69 def multiple? !!@multiple end |
#to_indexed(value) ⇒ Object
Convert a value to its representation for Solr indexing. This delegates to the #to_indexed method on the field’s type.
Parameters
- value<Object>
-
Value to convert to Solr representation
Returns
- String
-
Solr representation of the object
Raises
- ArgumentError
-
the value is an array, but this field does not allow multiple values
36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/sunspot/field.rb', line 36 def to_indexed(value) if value.is_a? Array if multiple? value.map { |val| to_indexed(val) } else raise ArgumentError, "#{name} is not a multiple-value field, so it cannot index values #{value.inspect}" end else @type.to_indexed(value) end end |