Skip to content

Commit

Permalink
Merge pull request #1960 from cajahnke/master
Browse files Browse the repository at this point in the history
issue #1844: suggest responses blank if suggester name is not the default
  • Loading branch information
jcoyne committed Aug 14, 2018
2 parents 253d09f + c9a7638 commit 4a230c1
Show file tree
Hide file tree
Showing 5 changed files with 18 additions and 7 deletions.
8 changes: 5 additions & 3 deletions app/models/concerns/blacklight/suggest/response.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,25 +2,27 @@
module Blacklight
module Suggest
class Response
attr_reader :response, :request_params, :suggest_path
attr_reader :response, :request_params, :suggest_path, :suggester_name

##
# Creates a suggest response
# @param [RSolr::HashWithResponse] response
# @param [Hash] request_params
# @param [String] suggest_path
def initialize(response, request_params, suggest_path)
# @param [String] suggester_name
def initialize(response, request_params, suggest_path, suggester_name)
@response = response
@request_params = request_params
@suggest_path = suggest_path
@suggester_name = suggester_name
end

##
# Trys the suggestor response to return suggestions if they are
# present
# @return [Array]
def suggestions
response.try(:[], suggest_path).try(:[], 'mySuggester').try(:[], request_params[:q]).try(:[], 'suggestions') || []
(response.try(:[], suggest_path).try(:[], suggester_name).try(:[], request_params[:q]).try(:[], 'suggestions') || []).uniq
end
end
end
Expand Down
3 changes: 2 additions & 1 deletion lib/blacklight/configuration.rb
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,8 @@ def default_values
default_more_limit: 20,
# proc for determining whether the session is a crawler/bot
# ex.: crawler_detector: lambda { |req| req.env['HTTP_USER_AGENT'] =~ /bot/ }
crawler_detector: nil
crawler_detector: nil,
autocomplete_suggester: 'mySuggester'
}
end
# rubocop:enable Metrics/MethodLength
Expand Down
6 changes: 5 additions & 1 deletion lib/blacklight/solr/repository.rb
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ def search params = {}
# @return [Blacklight::Suggest::Response]
def suggestions(request_params)
suggest_results = connection.send_and_receive(suggest_handler_path, params: request_params)
Blacklight::Suggest::Response.new suggest_results, request_params, suggest_handler_path
Blacklight::Suggest::Response.new suggest_results, request_params, suggest_handler_path, suggester_name
end

##
Expand Down Expand Up @@ -80,6 +80,10 @@ def suggest_handler_path
blacklight_config.autocomplete_path
end

def suggester_name
blacklight_config.autocomplete_suggester
end

def build_connection
RSolr.connect(connection_config.merge(adapter: connection_config[:http_adapter]))
end
Expand Down
3 changes: 3 additions & 0 deletions lib/generators/blacklight/templates/catalog_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -194,5 +194,8 @@ class <%= controller_name.classify %>Controller < ApplicationController
# Configuration for autocomplete suggestor
config.autocomplete_enabled = true
config.autocomplete_path = 'suggest'
# if the name of the solr.SuggestComponent provided in your solrcongig.xml is not the
# default 'mySuggester', uncomment and provide it below
# config.autocomplete_suggester = 'mySuggester'
end
end
5 changes: 3 additions & 2 deletions spec/models/blacklight/suggest/response_spec.rb
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# frozen_string_literal: true

RSpec.describe Blacklight::Suggest::Response, api: true do
let(:empty_response) { described_class.new({}, { q: 'hello' }, 'suggest') }
let(:empty_response) { described_class.new({}, { q: 'hello' }, 'suggest', 'mySuggester') }
let(:full_response) do
described_class.new(
{
Expand Down Expand Up @@ -36,7 +36,8 @@
{
q: 'new'
},
'suggest'
'suggest',
'mySuggester'
)
end

Expand Down

0 comments on commit 4a230c1

Please sign in to comment.