mirror of https://github.com/apache/lucene.git
SOLR-108: Request::Standard cleanup (contributed by William Groppe), with slight addition to fix failing test because rows became zero instead of nil
git-svn-id: https://svn.apache.org/repos/asf/incubator/solr/trunk@496551 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
9737c076ae
commit
162dbee7ea
|
@ -13,64 +13,66 @@
|
||||||
module Solr
|
module Solr
|
||||||
module Request
|
module Request
|
||||||
class Standard < Solr::Request::Select
|
class Standard < Solr::Request::Select
|
||||||
|
|
||||||
|
VALID_PARAMS = [:query, :sort, :default_field, :operator, :start, :rows,
|
||||||
|
:filter_queries, :field_list, :debug_query, :explain_other, :facets]
|
||||||
|
|
||||||
def initialize(params)
|
def initialize(params)
|
||||||
super('standard')
|
super('standard')
|
||||||
|
|
||||||
|
raise "Invalid parameters: #{(params.keys - VALID_PARAMS).join(',')}" unless
|
||||||
|
(params.keys - VALID_PARAMS).empty?
|
||||||
|
|
||||||
raise ":query parameter required" unless params[:query]
|
raise ":query parameter required" unless params[:query]
|
||||||
|
|
||||||
# devour StandardRequestHandler params
|
@params = params.dup
|
||||||
@query = params.delete(:query)
|
|
||||||
@sort = params.delete(:sort) # TODO add validation such that only :ascending and :descending are supported
|
# Validate operator
|
||||||
@default_field = params.delete(:default_field)
|
if params[:operator]
|
||||||
@operator = params.delete(:operator)
|
raise "Only :and/:or operators allowed" unless
|
||||||
@operator = @operator == :and ? "AND" : "OR" if @operator # TODO add validation such that only :and or :or are supported
|
[:and, :or].include?(params[:operator])
|
||||||
|
|
||||||
|
@params[:operator] = params[:operator].to_s.upcase
|
||||||
|
end
|
||||||
|
|
||||||
# devour common parameters
|
# Validate start, rows can be transformed to ints
|
||||||
@start = params.delete(:start) # TODO validate integer
|
@params[:start] = params[:start].to_i if params[:start]
|
||||||
@rows = params.delete(:rows) # TODO validate integer
|
@params[:rows] = params[:rows].to_i if params[:rows]
|
||||||
@filter_queries = params.delete(:filter_queries)
|
|
||||||
@field_list = params.delete(:field_list) || ["*","score"]
|
|
||||||
@debug_query = params.delete(:debug_query)
|
|
||||||
@explain_other = params.delete(:explain_other)
|
|
||||||
|
|
||||||
# devour faceting parameters
|
|
||||||
@facets = params.delete(:facets)
|
|
||||||
|
|
||||||
|
@params[:field_list] ||= ["*","score"]
|
||||||
|
|
||||||
#TODO model highlighting parameters: http://wiki.apache.org/solr/HighlightingParameters
|
#TODO model highlighting parameters: http://wiki.apache.org/solr/HighlightingParameters
|
||||||
|
|
||||||
raise "Invalid parameters: #{params.keys.join(',')}" if params.size > 0
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def to_hash
|
def to_hash
|
||||||
hash = {}
|
hash = {}
|
||||||
|
|
||||||
# standard request param processing
|
# standard request param processing
|
||||||
sort = @sort.collect do |sort|
|
sort = @params[:sort].collect do |sort|
|
||||||
key = sort.keys[0]
|
key = sort.keys[0]
|
||||||
"#{key.to_s} #{sort[key] == :descending ? 'desc' : 'asc'}"
|
"#{key.to_s} #{sort[key] == :descending ? 'desc' : 'asc'}"
|
||||||
end.join(',') if @sort
|
end.join(',') if @params[:sort]
|
||||||
q = sort ? "#{@query};#{sort}" : @query
|
hash[:q] = sort ? "#{@params[:query]};#{sort}" : @params[:query]
|
||||||
hash[:q] = q
|
hash[:"q.op"] = @params[:operator]
|
||||||
hash[:"q.op"] = @operator
|
hash[:df] = @params[:default_field]
|
||||||
hash[:df] = @default_field
|
|
||||||
|
|
||||||
# common parameter processing
|
# common parameter processing
|
||||||
hash[:start] = @start
|
hash[:start] = @params[:start]
|
||||||
hash[:rows] = @rows
|
hash[:rows] = @params[:rows]
|
||||||
hash[:fq] = @filter_queries
|
hash[:fq] = @params[:filter_queries]
|
||||||
hash[:fl] = @field_list.join(',')
|
hash[:fl] = @params[:field_list].join(',')
|
||||||
hash[:debugQuery] = @debug_query
|
hash[:debugQuery] = @params[:debug_query]
|
||||||
hash[:explainOther] = @explain_other
|
hash[:explainOther] = @params[:explain_other]
|
||||||
|
|
||||||
# facet parameter processing
|
# facet parameter processing
|
||||||
if @facets
|
if @params[:facets]
|
||||||
hash[:facet] = true
|
hash[:facet] = true
|
||||||
hash[:"facet.field"] = []
|
hash[:"facet.field"] = []
|
||||||
hash[:"facet.query"] = @facets[:queries]
|
hash[:"facet.query"] = @params[:facets][:queries]
|
||||||
hash[:"facet.missing"] = @facets[:missing]
|
hash[:"facet.missing"] = @params[:facets][:missing]
|
||||||
hash[:"facet.zeros"] = @facets[:zeros]
|
hash[:"facet.zeros"] = @params[:facets][:zeros]
|
||||||
hash[:"facet.limit"] = @facets[:limit]
|
hash[:"facet.limit"] = @params[:facets][:limit]
|
||||||
@facets[:fields].each do |f|
|
@params[:facets][:fields].each do |f|
|
||||||
if f.kind_of? Hash
|
if f.kind_of? Hash
|
||||||
key = f.keys[0]
|
key = f.keys[0]
|
||||||
value = f[key]
|
value = f[key]
|
||||||
|
|
Loading…
Reference in New Issue