Class: Ferret::Search::Spans::SpanOrQuery
- Defined in:
- lib/ferret/search/spans/span_or_query.rb
Overview
Matches the union of its clauses.
Defined Under Namespace
Classes: SpanOrEnum, SpanQueue
Instance Attribute Summary collapse
-
#field ⇒ Object
readonly
Returns the value of attribute field.
Attributes inherited from Query
Instance Method Summary collapse
-
#clauses ⇒ Object
Return the clauses whose spans are matched.
- #eql?(o) ⇒ Boolean (also: #==)
- #hash ⇒ Object
-
#initialize(clauses) ⇒ SpanOrQuery
constructor
Construct a SpanOrQuery merging the provided clauses.
- #rewrite(reader) ⇒ Object
- #spans(reader) ⇒ Object
- #terms ⇒ Object
- #to_s(field = nil) ⇒ Object
Methods inherited from SpanQuery
Methods inherited from Query
#combine, #create_weight, #extract_terms, #merge_boolean_queries, #similarity, #weight
Constructor Details
#initialize(clauses) ⇒ SpanOrQuery
Construct a SpanOrQuery merging the provided clauses.
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
# File 'lib/ferret/search/spans/span_or_query.rb', line 6 def initialize(clauses) super() # copy clauses array into an ArrayList @clauses = Array.new(clauses.length) @field = nil clauses.each_index do |i| clause = clauses[i] if i == 0 # check field @field = clause.field() elsif clause.field() != @field raise ArgumentError, "Clauses must have same field." end @clauses[i] = clause end end |
Instance Attribute Details
#field ⇒ Object (readonly)
Returns the value of attribute field.
26 27 28 |
# File 'lib/ferret/search/spans/span_or_query.rb', line 26 def field @field end |
Instance Method Details
#clauses ⇒ Object
Return the clauses whose spans are matched.
24 |
# File 'lib/ferret/search/spans/span_or_query.rb', line 24 def clauses() @clauses end |
#eql?(o) ⇒ Boolean Also known as: ==
62 63 64 65 66 67 68 69 |
# File 'lib/ferret/search/spans/span_or_query.rb', line 62 def eql?(o) return false if (o == nil or self.class() != o.class()) return false if (@clauses != o.clauses) return false if (@field != o.field) return true end |
#hash ⇒ Object
72 73 74 |
# File 'lib/ferret/search/spans/span_or_query.rb', line 72 def hash() return @clauses.hash ^ @field.hash end |
#rewrite(reader) ⇒ Object
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/ferret/search/spans/span_or_query.rb', line 36 def rewrite(reader) clone = nil @clauses.each_index do |i| clause = @clauses[i] query = clause.rewrite(reader) if (query != clause) # clause rewrote: must clone if (clone == nil) clone = self.clone() end clone.clauses[i] = query end end if (clone != nil) return clone # some clauses rewrote else return self # no clauses rewrote end end |
#spans(reader) ⇒ Object
90 91 92 93 94 95 96 |
# File 'lib/ferret/search/spans/span_or_query.rb', line 90 def spans(reader) if (@clauses.size == 1) # optimize 1-clause case return @clauses[0].spans(reader) end return SpanOrEnum.new(self, reader) end |
#terms ⇒ Object
28 29 30 31 32 33 34 |
# File 'lib/ferret/search/spans/span_or_query.rb', line 28 def terms() terms = [] @clauses.each do |clause| terms += clause.terms end return terms end |
#to_s(field = nil) ⇒ Object
55 56 57 58 59 60 |
# File 'lib/ferret/search/spans/span_or_query.rb', line 55 def to_s(field = nil) buffer = "spanOr([" buffer << @clauses.map {|c| c.to_s(field()) }.join(", ") buffer << "])" return buffer end |