Class: Ferret::Field

Inherits:
Array
  • Object
show all
Includes:
BoostMixin
Defined in:
lib/ferret/document.rb

Overview

A Field is a section of a Document. A Field is basically an array with a boost attribute. It also provides pretty printing of the field with the #to_s method.

Boost

The boost attribute makes a field more important in the index. That is, you can increase the score of a match for queries that match terms in a boosted field. You may, for example, want to boost a title field so that matches that match in the :title field score more highly than matches that match in the :contents field.

Note: If you’d like to use boosted fields without having to use the Field class you can just include the BoostMixin in the Array class. See BoostMixin.

Instance Attribute Summary

Attributes included from BoostMixin

#boost

Instance Method Summary collapse

Constructor Details

#initialize(data = [], boost = 1.0) ⇒ Field

Create a new Field object. You can pass data to the field as either a string;

f = Field.new("This is the fields data")

or as an array of strings;

f = Field.new(["this", "is", "an", "array", "of", "field", "data"])

Of course Fields can also be boosted;

f = Field.new("field data", 1000.0)


106
107
108
109
110
111
112
113
# File 'lib/ferret/document.rb', line 106

def initialize(data = [], boost = 1.0)
  @boost = boost
  if data.is_a? Array
    data.each {|v| self << v}
  else
    self << data.to_s
  end
end

Instance Method Details

#+(o) ⇒ Object



120
121
122
# File 'lib/ferret/document.rb', line 120

def +(o)
  return Field.new(super(o), self.boost)
end

#eql?(o) ⇒ Boolean Also known as: ==

Returns:

  • (Boolean)


115
116
117
# File 'lib/ferret/document.rb', line 115

def eql?(o)
  return (o.is_a? Field and (o.boost == @boost) and super(o))
end

#to_sObject



124
125
126
127
128
# File 'lib/ferret/document.rb', line 124

def to_s
  buf = %{["#{self.join('", "')}"]}
  buf << "^#@boost" if @boost != 1.0
  return buf
end