-
Notifications
You must be signed in to change notification settings - Fork 257
Configuration Solr fields
In this section, we will discuss some of the features available to control the discovery experience, including pagination, sorting, and fielded searches.
Three configuration options control the behavior of the per-page and pagination controls.
config.per_page # [10,20,50,100]
config.default_per_page # the first per_page value, or the value given here
config.max_per_page # 100
The options presented in the per-page dropdown are the values for the per_page
configuration, in the order given. The default_per_page
can be used if you want to offer a default per-page value that isn't the smallest value. Finally, max_per_page
is used as a sanity check for user-supplied values.
We can explicitly set the configuration in our CatalogController
configuration:
class CatalogController
...
configure_blacklight do |config|
...
config.per_page = [6,12,24,48]
config.default_per_page = 24
end
end
You can configure the available sort options. The sort parameter is passed through to Solr, so the value must be a supported sort format.
config.add_sort_field 'score desc, pub_date_sort desc, title_sort asc', :label => 'relevance'
config.add_sort_field 'pub_date_sort desc, title_sort asc', :label => 'year'
config.add_sort_field 'author_sort asc, title_sort asc', :label => 'author'
config.add_sort_field 'title_sort asc, pub_date_sort desc', :label => 'title'
The Blacklight solr field configuration is very expressive, and supports several different flavors of configuration. These are all functionally equivalent:
config.add_sort_field 'pub_date_sort desc, title_sort asc', :label => 'year'
# for sort fields, the `sort` key contains the Solr sort information. For other fields, the `field` key is used.
config.add_sort_field :sort => 'pub_date_sort desc, title_sort asc', :label => 'year'
# the "key" (first argument) will be used in user-facing url parameters.
config.add_sort_field 'year', :sort => 'pub_date_sort desc, title_sort asc', :label => 'year'
# The block format may be useful when using complex logic in the configuration settings
config.add_sort_field 'year' do |field|
field.sort = 'pub_date_sort desc, title_sort asc'
field.label = field.key.humanize
end
# The array-format allows you to add multiple values at once.
config.add_sort_field [
{sort: 'pub_date_sort desc, title_sort asc', label: 'year}, { sort: '....', ...}
]
You may choose the format that is appropriately concise and legible in the context of your application and configuration.
The add_*_field
is appending values to a configuration hash. In some cases, it may be useful to modify that hash directly.
config.sort_fields['year'].label = "Year Created"
Search queries can be targeted at configurable fields (or sets of fields) to return precise search results.
config.add_search_field 'all_fields', :label => 'All Fields'
# Now we see how to over-ride Solr request handler defaults, in this
# case for a BL "search field", which is really a dismax aggregate
# of Solr search fields.
config.add_search_field('title') do |field|
# solr_parameters hash are sent to Solr as ordinary url query params.
field.solr_parameters = { :'spellcheck.dictionary' => 'title' }
# :solr_local_parameters will be sent using Solr LocalParams
# syntax, as eg {! qf=$title_qf }. This is neccesary to use
# Solr parameter de-referencing like $title_qf.
# See: http://wiki.apache.org/solr/LocalParams
field.solr_local_parameters = {
:qf => '$title_qf',
:pf => '$title_pf'
}
end