class Elasticfusion::Search::Builder
Public Class Methods
new(settings)
click to toggle source
# File lib/elasticfusion/search/builder.rb, line 5 def initialize(settings) @scopes = settings[:scopes] || {} @default_query = settings[:default_query] || { match_all: {} } @default_sort = settings[:default_sort] || {} @queries = [] @filters = [] @sorts = [] end
Public Instance Methods
ensure_deterministic_order_with_unique_field(field)
click to toggle source
An explicit setter for sort order tiebreaker. Makes the purpose of the code that uses it more clear, otherwise is identical to sort_by
.
# File lib/elasticfusion/search/builder.rb, line 39 def ensure_deterministic_order_with_unique_field(field) @sorts << { field => :desc } end
filter(f)
click to toggle source
# File lib/elasticfusion/search/builder.rb, line 21 def filter(f) @filters << f end
filters()
click to toggle source
# File lib/elasticfusion/search/builder.rb, line 50 def filters @filters end
queries()
click to toggle source
Attribute readers
# File lib/elasticfusion/search/builder.rb, line 45 def queries return @queries if @queries.any? @default_query end
query(q)
click to toggle source
Attribute writers
# File lib/elasticfusion/search/builder.rb, line 17 def query(q) @queries << q end
scope(scope, *args)
click to toggle source
# File lib/elasticfusion/search/builder.rb, line 25 def scope(scope, *args) scope = @scopes[scope] raise ArgumentError, "Unknown scope #{scope}" if scope.nil? @filters << scope.call(*args) end
sort_by(field, direction)
click to toggle source
# File lib/elasticfusion/search/builder.rb, line 32 def sort_by(field, direction) raise Search::InvalidSortOrderError if %w(desc asc).exclude? direction.to_s @sorts << { field => direction } end
sorts()
click to toggle source
# File lib/elasticfusion/search/builder.rb, line 54 def sorts return @sorts if @sorts.any? @default_sort end