lib/blacklight/solr/repository.rb in blacklight-7.0.0.rc1 vs lib/blacklight/solr/repository.rb in blacklight-7.0.0.rc2
- old
+ new
@@ -10,22 +10,46 @@
.reverse_merge(qt: blacklight_config.document_solr_request_handler)
.merge(blacklight_config.document_unique_id_param => id)
solr_response = send_and_receive blacklight_config.document_solr_path || blacklight_config.solr_path, doc_params
raise Blacklight::Exceptions::RecordNotFound if solr_response.documents.empty?
+
solr_response
end
##
# Execute a search query against solr
# @param [Hash] params solr query parameters
def search params = {}
send_and_receive blacklight_config.solr_path, params.reverse_merge(qt: blacklight_config.qt)
end
+ # @param [Hash] 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, suggester_name
+ end
+
##
+ # Gets a list of available fields
+ # @return [Hash]
+ def reflect_fields
+ send_and_receive('admin/luke', params: { fl: '*', 'json.nl' => 'map' })['fields']
+ end
+
+ ##
+ # @return [boolean] true if the repository is reachable
+ def ping
+ response = connection.send_and_receive 'admin/ping', {}
+ Blacklight.logger.info("Ping [#{connection.uri}] returned: '#{response['status']}'")
+ response['status'] == "OK"
+ end
+
+ ##
# Execute a solr query
+ # TODO: Make this private after we have a way to abstract admin/luke and ping
# @see [RSolr::Client#send_and_receive]
# @overload find(solr_path, params)
# Execute a solr query at the given path with the parameters
# @param [String] solr path (defaults to blacklight_config.solr_path)
# @param [Hash] parameters for RSolr::Client#send_and_receive
@@ -48,9 +72,19 @@
rescue RSolr::Error::Http => e
raise Blacklight::Exceptions::InvalidRequest, e.message
end
private
+
+ ##
+ # @return [String]
+ 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
end