Skip to content

Commit

Permalink
Merge d44c6f8 into 227589b
Browse files Browse the repository at this point in the history
  • Loading branch information
eranhirs committed Feb 15, 2014
2 parents 227589b + d44c6f8 commit c46abcd
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 11 deletions.
4 changes: 2 additions & 2 deletions lib/blacklight/configuration.rb
Original file line number Diff line number Diff line change
Expand Up @@ -100,8 +100,8 @@ def add_field_configuration_to_solr_request!
self.add_field_configuration_to_solr_request = true
end

def facet_fields_to_add_to_solr
return facet_fields.reject { |k,v| v[:query] || v[:pivot] }.map { |k,v| v.field } if self.add_facet_fields_to_solr_request
def facet_fields_to_add_to_solr required_facet_fields = facet_fields
return required_facet_fields.reject { |k,v| v[:query] || v[:pivot] }.map { |k,v| v.field } if self.add_facet_fields_to_solr_request

[]
end
Expand Down
21 changes: 14 additions & 7 deletions lib/blacklight/solr_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -298,13 +298,21 @@ def add_facetting_to_solr(solr_parameters, user_params)
solr_parameters[:"facet.field"].concat( [user_params["facet.field"], user_params["facets"]].flatten.compact ).uniq!
end

# Add all facets to solr_parameters defined by blacklight_config,
# unless 'facet.fields' is set - if yes, return only those facet fields.
if user_params.has_key?(:'facet.fields')
required_facets_names = user_params[:'facet.fields']
required_facet_fields = blacklight_config.facet_fields.select { |k,v| required_facets_names.include?(k) }
else
required_facet_fields = blacklight_config.facet_fields
end

if blacklight_config.add_facet_fields_to_solr_request
solr_parameters[:facet] = true
solr_parameters.append_facet_fields blacklight_config.facet_fields_to_add_to_solr
solr_parameters.append_facet_fields blacklight_config.facet_fields_to_add_to_solr(required_facet_fields)
end

blacklight_config.facet_fields.each do |field_name, facet|
required_facet_fields.each do |field_name, facet|

if blacklight_config.add_facet_fields_to_solr_request
case
Expand Down Expand Up @@ -488,14 +496,13 @@ def get_solr_response_for_field_values(field, values, extra_solr_params = {})
def solr_facet_params(facet_field, user_params=params || {}, extra_controller_params={})
input = user_params.deep_merge(extra_controller_params)
facet_config = blacklight_config.facet_fields[facet_field]


# Will make :add_facetting_to_solr return only facets in this array
user_params[:'facet.fields'] = [facet_field]

# First start with a standard solr search params calculations,
# for any search context in our request params.
solr_params = solr_search_params(user_params).merge(extra_controller_params)

# Now override with our specific things for fetching facet values
solr_params[:"facet.field"] = with_ex_local_param((facet_config.ex if facet_config.respond_to?(:ex)), facet_field)


limit =
if respond_to?(:facet_list_limit)
Expand Down
7 changes: 5 additions & 2 deletions spec/lib/blacklight/solr_helper_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -490,7 +490,7 @@ def params
expect(@generated_solr_facet_params[:rows]).to eq 0
end
it 'sets facets requested to facet_field argument' do
expect(@generated_solr_facet_params["facet.field".to_sym]).to eq @facet_field
expect(@generated_solr_facet_params["facet.field".to_sym]).to eq [@facet_field]
end
it 'defaults offset to 0' do
expect(@generated_solr_facet_params[:"f.#{@facet_field}.facet.offset"]).to eq 0
Expand Down Expand Up @@ -542,7 +542,10 @@ def facet_list_limit
solr_search_params.each_pair do |key, value|
# The specific params used for fetching the facet list we
# don't care about.
next if ['facets', "facet.field", 'rows', 'facet.limit', 'facet.offset', 'facet.sort'].include?(key)
next if ['facets', 'facet.field', 'rows', 'facet.limit', 'facet.offset', 'facet.sort'].include?(key)
# The specific params for other facet fields than 'format' (like f.facet_ordered.facet.sort = 'count')
# we don't care about, they will return in #solr_search_params but not in #solr_facet_params
next if (key.include?('format_ordered') || key.include?('format_limited'))
# Everything else should match
expect(solr_facet_params[key]).to eq value
end
Expand Down

0 comments on commit c46abcd

Please sign in to comment.