class Nazrin::SearchClient

Constants

CLOUD_SEARCH_MAX_LIMIT

Attributes

client[R]
data_accessor[RW]
parameters[R]

Public Class Methods

new(config=Nazrin.config) click to toggle source
# File lib/nazrin/search_client.rb, line 11
def initialize(config=Nazrin.config)
  # @see http://docs.aws.amazon.com/sdkforruby/api/Aws/CloudSearchDomain/Client.html aws-sdk
  @client = Aws::CloudSearchDomain::Client.new(
    endpoint: config.search_endpoint,
    region: config.region,
    access_key_id: config.access_key_id,
    secret_access_key: config.secret_access_key,
    logger: config.logger)
  @parameters = {}
end

Public Instance Methods

cursor(cursor) click to toggle source

set the cursor @param [String] cursor cursor

# File lib/nazrin/search_client.rb, line 59
def cursor(cursor)
  parameters[:cursor] = cursor
  self
end
execute() click to toggle source
# File lib/nazrin/search_client.rb, line 119
def execute
  return fake_response if Nazrin.config.mode == 'sandbox'
  if data_accessor
    data_accessor.results(self)
  else
    search
  end
end
expr(expr) click to toggle source

define any expression @param [String] expr ex) “{'EXPRESSIONNAME':'EXPRESSION'}”

# File lib/nazrin/search_client.rb, line 108
def expr(expr)
  parameters[:expr] = expr
  self
end
facet(facet) click to toggle source

facet @param [String] facet ex) “{'year':{'sort':'bucket'}}”

# File lib/nazrin/search_client.rb, line 101
def facet(facet)
  parameters[:facet] = facet
  self
end
filter_query(filter_query) click to toggle source

query filtering @param [String] filter_query “tags:'aaa'”

# File lib/nazrin/search_client.rb, line 80
def filter_query(filter_query)
  parameters[:filter_query] = filter_query
  self
end
highlight(highlight) click to toggle source

highlight @param [String] highlight “{'tags':{}}”

# File lib/nazrin/search_client.rb, line 94
def highlight(highlight)
  parameters[:highlight] = highlight
  self
end
partial(partial) click to toggle source

partial @param [Boolean] partial true or false

# File lib/nazrin/search_client.rb, line 73
def partial(partial)
  parameters[:partial] = partial
  self
end
query(query) click to toggle source

query @param [String] query query string

# File lib/nazrin/search_client.rb, line 24
def query(query)
  parameters[:query] = query
  self
end
query_options(query_options) click to toggle source

query options @param [String] query_options ex) target field “{fields:}”

# File lib/nazrin/search_client.rb, line 87
def query_options(query_options)
  parameters[:query_options] = query_options
  self
end
query_parser(query_parser) click to toggle source

set the parser to be used @param [String] parser 'simple', 'structured', 'lucene', dismax'

# File lib/nazrin/search_client.rb, line 45
def query_parser(query_parser)
  parameters[:query_parser] = query_parser
  self
end
return(fields) click to toggle source

return fields @param [Array<String>] fields ex) ['title']

# File lib/nazrin/search_client.rb, line 31
def return(fields)
  parameters[:return] = fields.join(',')
  self
end
size(size) click to toggle source

set the number to get @param [Integer] size the number to get

# File lib/nazrin/search_client.rb, line 38
def size(size)
  parameters[:size] = size
  self
end
sort(sorts) click to toggle source

sort @param [Array<String>] sorts ex) ['year desc']

# File lib/nazrin/search_client.rb, line 66
def sort(sorts)
  parameters[:sort] = sorts.join(',')
  self
end
start(start) click to toggle source

set the search start position @param [Integer] start start position

# File lib/nazrin/search_client.rb, line 52
def start(start)
  parameters[:start] = start
  self
end

Private Instance Methods

deep_page?() click to toggle source
# File lib/nazrin/search_client.rb, line 130
def deep_page?
  if parameters[:start].present? && parameters[:size].present?
    return true if parameters[:start] + parameters[:size] > CLOUD_SEARCH_MAX_LIMIT
  elsif parameters[:start].present?
    return true if parameters[:start] > CLOUD_SEARCH_MAX_LIMIT
  elsif parameters[:size].present?
    return true if parameters[:size] > CLOUD_SEARCH_MAX_LIMIT
  end
  false
end
fake_response() click to toggle source
# File lib/nazrin/search_client.rb, line 141
def fake_response
  Nazrin::PaginationGenerator.generate([], { current_page: 1, per_page: 1, total_count: 0 })
end