class Nazrin::SearchClient
Constants
- CLOUD_SEARCH_MAX_LIMIT
Attributes
Public Class Methods
# 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
set the cursor @param [String] cursor cursor
# File lib/nazrin/search_client.rb, line 59 def cursor(cursor) parameters[:cursor] = cursor self end
# 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
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 @param [String] facet ex) “{'year':{'sort':'bucket'}}”
# File lib/nazrin/search_client.rb, line 101 def facet(facet) parameters[:facet] = facet self end
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 @param [String] highlight “{'tags':{}}”
# File lib/nazrin/search_client.rb, line 94 def highlight(highlight) parameters[:highlight] = highlight self end
partial @param [Boolean] partial true or false
# File lib/nazrin/search_client.rb, line 73 def partial(partial) parameters[:partial] = partial self end
query @param [String] query query string
# File lib/nazrin/search_client.rb, line 24 def query(query) parameters[:query] = query self end
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
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 @param [Array<String>] fields ex) ['title']
# File lib/nazrin/search_client.rb, line 31 def return(fields) parameters[:return] = fields.join(',') self end
# File lib/nazrin/search_client.rb, line 113 def search return fake_response if Nazrin.config.mode == 'sandbox' fail SearchClientError if deep_page? client.search(parameters) end
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 @param [Array<String>] sorts ex) ['year desc']
# File lib/nazrin/search_client.rb, line 66 def sort(sorts) parameters[:sort] = sorts.join(',') self end
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
# 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
# File lib/nazrin/search_client.rb, line 141 def fake_response Nazrin::PaginationGenerator.generate([], { current_page: 1, per_page: 1, total_count: 0 }) end