Class: Couchbase::Cluster::SearchQuery::DisjunctionQuery

Inherits:
Couchbase::Cluster::SearchQuery show all
Defined in:
lib/couchbase/search_options.rb,
/Users/sergey.auseyau/code/couchbase-ruby-client/lib/couchbase/search_options.rb
more...

Overview

Result documents must satisfy a configurable min number of child queries.

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods inherited from Couchbase::Cluster::SearchQuery

boolean_field, booleans, conjuncts, date_range, disjuncts, doc_id, geo_bounding_box, geo_distance, geo_polygon, match, match_all, match_none, match_phrase, numeric_range, phrase, prefix, query_string, regexp, term, term_range, wildcard

Constructor Details

#initialize(*queries) {|self| ... } ⇒ DisjunctionQuery

Returns a new instance of DisjunctionQuery.

Parameters:

Yield Parameters:

[View source]

774
775
776
777
778
# File 'lib/couchbase/search_options.rb', line 774

def initialize(*queries)
  super()
  @queries = queries.flatten
  yield self if block_given?
end

Instance Attribute Details

#boostFloat

Returns:

  • (Float)

763
764
765
# File 'lib/couchbase/search_options.rb', line 763

def boost
  @boost
end

#minInteger

Returns:

  • (Integer)

769
770
771
# File 'lib/couchbase/search_options.rb', line 769

def min
  @min
end

#operatornil, ...

Returns:

  • (nil, :or, :and)

766
767
768
# File 'lib/couchbase/search_options.rb', line 766

def operator
  @operator
end

Instance Method Details

#empty?Boolean

Returns:

  • (Boolean)
[View source]

785
786
787
# File 'lib/couchbase/search_options.rb', line 785

def empty?
  @queries.empty?
end

#or_else(*queries) ⇒ Object

Parameters:

[View source]

781
782
783
# File 'lib/couchbase/search_options.rb', line 781

def or_else(*queries)
  @queries |= queries.flatten
end

#to_json(*args) ⇒ String

Returns:

  • (String)

Raises:

  • (ArgumentError)
[View source]

790
791
792
793
794
795
796
797
798
799
800
801
802
# File 'lib/couchbase/search_options.rb', line 790

def to_json(*args)
  raise ArgumentError, "compound disjunction query must have sub-queries" if @queries.nil? || @queries.empty?

  data = {"disjuncts" => @queries.uniq}
  if min
    raise ArgumentError, "disjunction query has fewer sub-queries than configured minimum" if @queries.size < min

    data["min"] = min
  end
  data["boost"] = boost if boost
  data["operator"] = operator.to_s if operator
  data.to_json(*args)
end