blacklight 6.24.0 → 7.0.0.rc1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/.npmignore +23 -0
- data/.rubocop.yml +15 -3
- data/.rubocop_todo.yml +242 -379
- data/.solr_wrapper.yml +1 -1
- data/.travis.yml +20 -24
- data/Gemfile +1 -4
- data/README.md +21 -4
- data/Rakefile +1 -2
- data/VERSION +1 -1
- data/app/assets/images/blacklight/list.svg +1 -0
- data/app/assets/images/blacklight/search.svg +1 -0
- data/app/assets/javascripts/blacklight/blacklight.js +496 -56
- data/app/assets/stylesheets/blacklight/_balanced_list.scss +7 -12
- data/app/assets/stylesheets/blacklight/_blacklight_base.scss +3 -1
- data/app/assets/stylesheets/blacklight/_bookmark.scss +1 -13
- data/app/assets/stylesheets/blacklight/_bootstrap_overrides.scss +27 -0
- data/app/assets/stylesheets/blacklight/_constraints.scss +17 -25
- data/app/assets/stylesheets/blacklight/_controls.scss +8 -16
- data/app/assets/stylesheets/blacklight/_facets.scss +74 -92
- data/app/assets/stylesheets/blacklight/_header.scss +35 -48
- data/app/assets/stylesheets/blacklight/_icons.scss +29 -0
- data/app/assets/stylesheets/blacklight/_layout.scss +0 -10
- data/app/assets/stylesheets/blacklight/_mixins.scss +15 -0
- data/app/assets/stylesheets/blacklight/_modal.scss +9 -17
- data/app/assets/stylesheets/blacklight/_pagination.scss +2 -17
- data/app/assets/stylesheets/blacklight/_search_history.scss +5 -13
- data/app/assets/stylesheets/blacklight/_search_results.scss +9 -8
- data/app/assets/stylesheets/blacklight/_twitter_typeahead.scss +1 -2
- data/app/builders/blacklight/action_builder.rb +56 -0
- data/app/controllers/bookmarks_controller.rb +2 -2
- data/app/controllers/catalog_controller.rb +2 -2
- data/app/controllers/concerns/blacklight/base.rb +0 -33
- data/app/controllers/concerns/blacklight/bookmarks.rb +20 -37
- data/app/controllers/concerns/blacklight/catalog.rb +254 -213
- data/app/controllers/concerns/blacklight/controller.rb +117 -133
- data/app/controllers/concerns/blacklight/default_component_configuration.rb +12 -43
- data/app/controllers/concerns/blacklight/search_context.rb +10 -14
- data/app/controllers/concerns/blacklight/search_fields.rb +4 -14
- data/app/controllers/concerns/blacklight/token_based_user.rb +6 -10
- data/app/helpers/blacklight/blacklight_helper_behavior.rb +32 -118
- data/app/helpers/blacklight/catalog_helper_behavior.rb +94 -88
- data/app/helpers/blacklight/component_helper_behavior.rb +19 -19
- data/app/helpers/blacklight/configuration_helper_behavior.rb +25 -54
- data/app/helpers/blacklight/facets_helper_behavior.rb +40 -39
- data/app/helpers/blacklight/hash_as_hidden_fields_helper_behavior.rb +9 -11
- data/app/helpers/blacklight/icon_helper_behavior.rb +16 -0
- data/app/helpers/blacklight/layout_helper_behavior.rb +3 -10
- data/app/helpers/blacklight/render_constraints_helper_behavior.rb +6 -6
- data/app/helpers/blacklight/render_partials_helper_behavior.rb +195 -0
- data/app/helpers/blacklight/search_history_constraints_helper_behavior.rb +18 -11
- data/app/helpers/blacklight/suggest_helper_behavior.rb +1 -0
- data/app/helpers/blacklight/url_helper_behavior.rb +21 -27
- data/app/{assets/javascripts → javascript}/blacklight/autocomplete.js +3 -2
- data/app/javascript/blacklight/autofocus.js +20 -0
- data/app/javascript/blacklight/bookmark_toggle.js +25 -0
- data/app/javascript/blacklight/checkbox_submit.js +133 -0
- data/app/{assets/javascripts → javascript}/blacklight/collapsable.js +1 -1
- data/app/javascript/blacklight/core.js +39 -0
- data/app/{assets/javascripts → javascript}/blacklight/facet_load.js +6 -6
- data/app/{assets/javascripts/blacklight/ajax_modal.js → javascript/blacklight/modal.js} +63 -63
- data/app/{assets/javascripts → javascript}/blacklight/search_context.js +10 -2
- data/app/models/blacklight/facet_paginator.rb +3 -3
- data/app/models/blacklight/icon.rb +53 -0
- data/app/models/blacklight/solr/facet_paginator.rb +3 -3
- data/app/models/blacklight/suggest_search.rb +15 -4
- data/app/models/bookmark.rb +4 -9
- data/app/models/concerns/blacklight/configurable.rb +13 -13
- data/app/models/concerns/blacklight/document.rb +8 -42
- data/app/models/concerns/blacklight/document/active_model_shim.rb +8 -11
- data/app/models/concerns/blacklight/document/cache_key.rb +1 -1
- data/app/models/concerns/blacklight/document/dublin_core.rb +2 -2
- data/app/models/concerns/blacklight/document/email.rb +1 -1
- data/app/models/concerns/blacklight/document/extensions.rb +5 -5
- data/app/models/concerns/blacklight/document/semantic_fields.rb +9 -9
- data/app/models/concerns/blacklight/document/sms.rb +1 -1
- data/app/models/concerns/blacklight/solr/document.rb +7 -8
- data/app/models/concerns/blacklight/suggest/response.rb +3 -5
- data/app/models/concerns/blacklight/user.rb +6 -6
- data/app/models/record_mailer.rb +5 -6
- data/app/models/search.rb +4 -7
- data/app/presenters/blacklight/field_presenter.rb +5 -5
- data/app/presenters/blacklight/index_presenter.rb +34 -71
- data/app/presenters/blacklight/json_presenter.rb +7 -4
- data/app/presenters/blacklight/link_alternate_presenter.rb +1 -1
- data/app/presenters/blacklight/rendering/abstract_step.rb +5 -5
- data/app/presenters/blacklight/rendering/helper_method.rb +8 -8
- data/app/presenters/blacklight/rendering/join.rb +3 -3
- data/app/presenters/blacklight/rendering/link_to_facet.rb +19 -19
- data/app/presenters/blacklight/rendering/microdata.rb +3 -3
- data/app/presenters/blacklight/rendering/pipeline.rb +5 -5
- data/app/presenters/blacklight/search_bar_presenter.rb +37 -0
- data/app/presenters/blacklight/show_presenter.rb +20 -69
- data/app/presenters/blacklight/thumbnail_presenter.rb +72 -0
- data/app/services/blacklight/document_factory.rb +11 -0
- data/app/services/blacklight/field_retriever.rb +24 -24
- data/app/services/blacklight/search_service.rb +154 -0
- data/app/views/blacklight/nav/_bookmark.html.erb +2 -2
- data/app/views/blacklight/nav/_search_history.html.erb +1 -1
- data/app/views/bookmarks/_tools.html.erb +2 -2
- data/app/views/bookmarks/index.html.erb +2 -2
- data/app/views/catalog/_bookmark_control.html.erb +26 -10
- data/app/views/catalog/_citation.html.erb +18 -23
- data/app/views/catalog/_constraints.html.erb +5 -8
- data/app/views/catalog/_constraints_element.html.erb +6 -6
- data/app/views/catalog/{_document_default.atom.builder → _document.atom.builder} +2 -2
- data/app/views/catalog/_document.html.erb +5 -3
- data/app/views/catalog/{_document_default.rss.builder → _document.rss.builder} +0 -0
- data/app/views/catalog/_document_action.html.erb +2 -1
- data/app/views/catalog/_email_form.html.erb +8 -4
- data/app/views/catalog/_facet_index_navigation.html.erb +3 -3
- data/app/views/catalog/_facet_layout.html.erb +5 -7
- data/app/views/catalog/_facet_limit.html.erb +3 -2
- data/app/views/catalog/_facet_pagination.html.erb +10 -10
- data/app/views/catalog/_facet_pivot.html.erb +2 -2
- data/app/views/catalog/_facets.html.erb +8 -12
- data/app/views/catalog/{_group_default.html.erb → _group.html.erb} +0 -0
- data/app/views/catalog/_home_text.html.erb +32 -36
- data/app/views/catalog/_index.html.erb +12 -0
- data/app/views/catalog/{_index_header_default.html.erb → _index_header.html.erb} +2 -2
- data/app/views/catalog/_per_page_widget.html.erb +6 -7
- data/app/views/catalog/_previous_next_doc.html.erb +6 -14
- data/app/views/catalog/_search_form.html.erb +12 -8
- data/app/views/catalog/_search_header.html.erb +0 -3
- data/app/views/catalog/_search_results.html.erb +4 -0
- data/app/views/catalog/_show.html.erb +10 -0
- data/app/views/catalog/{_show_header_default.html.erb → _show_header.html.erb} +0 -0
- data/app/views/catalog/_show_main_content.html.erb +4 -4
- data/app/views/catalog/_show_sidebar.html.erb +3 -3
- data/app/views/catalog/_show_tools.html.erb +9 -11
- data/app/views/catalog/_sms_form.html.erb +8 -4
- data/app/views/catalog/_sort_and_per_page.html.erb +3 -3
- data/app/views/catalog/_sort_widget.html.erb +7 -7
- data/app/views/catalog/_thumbnail.html.erb +5 -0
- data/app/views/catalog/_view_type_group.html.erb +2 -2
- data/app/views/catalog/citation.html.erb +1 -1
- data/app/views/catalog/citation.js.erb +9 -1
- data/app/views/catalog/email.html.erb +5 -5
- data/app/views/catalog/email_success.html.erb +11 -9
- data/app/views/catalog/facet.html.erb +5 -6
- data/app/views/catalog/index.atom.builder +10 -15
- data/app/views/catalog/index.html.erb +9 -11
- data/app/views/catalog/index.json.jbuilder +65 -3
- data/app/views/catalog/index.rss.builder +5 -5
- data/app/views/catalog/opensearch.xml.builder +10 -10
- data/app/views/catalog/show.html.erb +11 -6
- data/app/views/catalog/sms.html.erb +2 -3
- data/app/views/catalog/sms_success.html.erb +11 -10
- data/app/views/kaminari/blacklight/_first_page.html.erb +2 -2
- data/app/views/kaminari/blacklight/_gap.html.erb +2 -2
- data/app/views/kaminari/blacklight/_last_page.html.erb +2 -2
- data/app/views/kaminari/blacklight/_next_page.html.erb +4 -4
- data/app/views/kaminari/blacklight/_page.html.erb +3 -3
- data/app/views/kaminari/blacklight/_prev_page.html.erb +4 -4
- data/app/views/kaminari/blacklight_compact/_paginator.html.erb +4 -4
- data/app/views/layouts/blacklight.html.erb +14 -41
- data/app/views/layouts/blacklight/base.html.erb +43 -0
- data/app/views/layouts/catalog_result.html.erb +11 -0
- data/app/views/search_history/index.html.erb +16 -21
- data/app/views/{_flash_msg.html.erb → shared/_flash_msg.html.erb} +0 -0
- data/app/views/shared/_header_navbar.html.erb +8 -13
- data/app/views/shared/_modal.html.erb +6 -0
- data/app/views/shared/_user_util_links.html.erb +22 -0
- data/blacklight.gemspec +10 -11
- data/config/locales/blacklight.de.yml +0 -30
- data/config/locales/blacklight.en.yml +1 -27
- data/config/locales/blacklight.es.yml +0 -30
- data/config/locales/blacklight.fr.yml +0 -30
- data/config/locales/blacklight.hu.yml +210 -0
- data/config/locales/blacklight.it.yml +0 -30
- data/config/locales/blacklight.nl.yml +210 -0
- data/config/locales/blacklight.pt-BR.yml +6 -32
- data/config/locales/blacklight.sq.yml +1 -28
- data/config/locales/blacklight.zh.yml +0 -25
- data/config/routes.rb +3 -10
- data/db/migrate/20140202020202_create_bookmarks.rb +0 -1
- data/db/migrate/20140320000000_add_polymorphic_type_to_bookmarks.rb +1 -1
- data/lib/blacklight.rb +4 -5
- data/lib/blacklight/abstract_repository.rb +9 -21
- data/lib/blacklight/configuration.rb +82 -89
- data/lib/blacklight/configuration/context.rb +1 -1
- data/lib/blacklight/configuration/facet_field.rb +16 -9
- data/lib/blacklight/configuration/field.rb +32 -3
- data/lib/blacklight/configuration/fields.rb +41 -48
- data/lib/blacklight/configuration/search_field.rb +2 -2
- data/lib/blacklight/configuration/sort_field.rb +2 -2
- data/lib/blacklight/configuration/view_config.rb +4 -0
- data/lib/blacklight/engine.rb +6 -10
- data/lib/blacklight/exceptions.rb +4 -7
- data/lib/blacklight/nested_open_struct_with_hash_access.rb +107 -0
- data/lib/blacklight/open_struct_with_hash_access.rb +49 -0
- data/lib/blacklight/parameters.rb +1 -1
- data/lib/blacklight/routes/searchable.rb +1 -0
- data/lib/blacklight/search_builder.rb +26 -35
- data/lib/blacklight/search_state.rb +8 -8
- data/lib/blacklight/solr/repository.rb +3 -36
- data/lib/blacklight/solr/request.rb +1 -1
- data/lib/blacklight/solr/response.rb +29 -30
- data/lib/blacklight/solr/response/facets.rb +29 -31
- data/lib/blacklight/solr/response/group.rb +3 -3
- data/lib/blacklight/solr/response/group_response.rb +1 -1
- data/lib/blacklight/solr/response/more_like_this.rb +2 -2
- data/lib/blacklight/solr/response/response.rb +2 -2
- data/lib/blacklight/solr/response/spelling.rb +3 -3
- data/lib/blacklight/solr/search_builder_behavior.rb +25 -29
- data/lib/blacklight/version.rb +1 -1
- data/lib/generators/blacklight/assets_generator.rb +8 -8
- data/lib/generators/blacklight/controller_generator.rb +4 -5
- data/lib/generators/blacklight/document_generator.rb +1 -1
- data/lib/generators/blacklight/install_generator.rb +18 -21
- data/lib/generators/blacklight/search_builder_generator.rb +1 -1
- data/lib/generators/blacklight/{solr5_generator.rb → solr_generator.rb} +4 -6
- data/lib/generators/blacklight/templates/.solr_wrapper.yml +5 -0
- data/lib/generators/blacklight/templates/blacklight.scss +0 -2
- data/lib/generators/blacklight/templates/catalog_controller.rb +52 -51
- data/{solr → lib/generators/blacklight/templates/solr}/conf/_rest_managed.json +0 -0
- data/{solr → lib/generators/blacklight/templates/solr}/conf/admin-extra.html +0 -0
- data/{solr → lib/generators/blacklight/templates/solr}/conf/elevate.xml +0 -0
- data/{solr → lib/generators/blacklight/templates/solr}/conf/mapping-ISOLatin1Accent.txt +0 -0
- data/{solr → lib/generators/blacklight/templates/solr}/conf/protwords.txt +0 -0
- data/lib/generators/blacklight/templates/solr/conf/schema.xml +390 -0
- data/{solr → lib/generators/blacklight/templates/solr}/conf/scripts.conf +0 -0
- data/lib/generators/blacklight/templates/solr/conf/solrconfig.xml +195 -0
- data/{solr → lib/generators/blacklight/templates/solr}/conf/spellings.txt +0 -0
- data/{solr → lib/generators/blacklight/templates/solr}/conf/stopwords.txt +0 -0
- data/{solr → lib/generators/blacklight/templates/solr}/conf/stopwords_en.txt +0 -0
- data/{solr → lib/generators/blacklight/templates/solr}/conf/synonyms.txt +0 -0
- data/{solr → lib/generators/blacklight/templates/solr}/conf/xslt/example.xsl +0 -0
- data/{solr → lib/generators/blacklight/templates/solr}/conf/xslt/example_atom.xsl +0 -0
- data/{solr → lib/generators/blacklight/templates/solr}/conf/xslt/example_rss.xsl +0 -0
- data/{solr → lib/generators/blacklight/templates/solr}/conf/xslt/luke.xsl +0 -0
- data/lib/generators/blacklight/test_support_generator.rb +10 -10
- data/lib/generators/blacklight/user_generator.rb +3 -6
- data/lib/railties/blacklight.rake +19 -14
- data/package-lock.json +2057 -0
- data/package.json +28 -0
- data/spec/controllers/alternate_controller_spec.rb +1 -1
- data/spec/controllers/application_controller_spec.rb +1 -1
- data/spec/controllers/blacklight/base_spec.rb +1 -1
- data/spec/controllers/blacklight/catalog/component_configuration_spec.rb +11 -7
- data/spec/controllers/blacklight/facet_spec.rb +1 -1
- data/spec/controllers/blacklight/search_fields_spec.rb +1 -13
- data/spec/controllers/bookmarks_controller_spec.rb +1 -36
- data/spec/controllers/catalog_controller_spec.rb +153 -53
- data/spec/controllers/search_history_controller_spec.rb +2 -2
- data/spec/features/alternate_controller_spec.rb +1 -1
- data/spec/features/autocomplete_spec.rb +2 -2
- data/spec/features/bookmarks_spec.rb +10 -10
- data/spec/features/did_you_mean_spec.rb +3 -9
- data/spec/features/facets_spec.rb +11 -11
- data/spec/features/record_view_spec.rb +1 -6
- data/spec/features/search_context_spec.rb +2 -2
- data/spec/features/search_filters_spec.rb +41 -41
- data/spec/features/search_formats_spec.rb +1 -1
- data/spec/features/search_history_spec.rb +1 -26
- data/spec/features/search_pagination_spec.rb +1 -1
- data/spec/features/search_results_spec.rb +3 -4
- data/spec/features/search_sort_spec.rb +2 -2
- data/spec/features/search_spec.rb +5 -10
- data/{solr → spec/fixtures}/sample_solr_documents.yml +688 -688
- data/spec/helpers/{configuration_helper_spec.rb → blacklight/configuration_helper_behavior_spec.rb} +70 -65
- data/spec/helpers/{facets_helper_spec.rb → blacklight/facets_helper_behavior_spec.rb} +7 -8
- data/spec/helpers/{hash_as_hidden_fields_spec.rb → blacklight/hash_as_hidden_fields_behavior_spec.rb} +1 -1
- data/spec/helpers/blacklight/icon_helper_behavior_spec.rb +8 -0
- data/spec/helpers/{layout_helper_spec.rb → blacklight/layout_helper_behavior_spec.rb} +5 -15
- data/spec/helpers/{render_constraints_helper_spec.rb → blacklight/render_constraints_helper_behavior_spec.rb} +2 -3
- data/spec/helpers/blacklight/render_partials_helper_behavior_spec.rb +80 -0
- data/spec/helpers/{search_history_constraints_helper_spec.rb → blacklight/search_history_constraints_helper_behavior_spec.rb} +9 -9
- data/spec/helpers/{suggest_helper_spec.rb → blacklight/suggest_helper_behavior_spec.rb} +4 -2
- data/spec/helpers/{url_helper_spec.rb → blacklight/url_helper_behavior_spec.rb} +11 -15
- data/spec/helpers/blacklight_helper_spec.rb +36 -141
- data/spec/helpers/catalog_helper_spec.rb +37 -56
- data/spec/integration/generators/blacklight/{solr5_generator_spec.rb → solr_generator_spec.rb} +3 -3
- data/spec/lib/blacklight/configuration/facet_field_spec.rb +11 -0
- data/spec/lib/blacklight/configuration/field_spec.rb +12 -0
- data/spec/lib/blacklight/nested_open_struct_with_hash_access_spec.rb +17 -0
- data/spec/lib/blacklight/open_struct_with_hash_access_spec.rb +153 -0
- data/spec/lib/blacklight/parameters_spec.rb +1 -1
- data/spec/lib/blacklight/search_state_spec.rb +2 -2
- data/spec/lib/blacklight_spec.rb +1 -1
- data/spec/lib/tasks/blacklight_task_spec.rb +1 -1
- data/spec/models/blacklight/configurable_spec.rb +15 -16
- data/spec/models/blacklight/configuration/context_spec.rb +1 -1
- data/spec/models/blacklight/configuration_spec.rb +146 -135
- data/spec/models/blacklight/document/active_model_shim_spec.rb +11 -1
- data/spec/models/blacklight/document/cache_key_spec.rb +1 -1
- data/spec/models/blacklight/document/dublin_core_spec.rb +5 -5
- data/spec/models/blacklight/document/email_spec.rb +3 -3
- data/spec/models/blacklight/document/sms_spec.rb +3 -3
- data/spec/models/blacklight/document_spec.rb +3 -16
- data/spec/models/blacklight/facet_paginator_spec.rb +1 -1
- data/spec/models/blacklight/icon_spec.rb +34 -0
- data/spec/models/blacklight/search_builder_spec.rb +33 -27
- data/spec/models/blacklight/solr/document_spec.rb +18 -7
- data/spec/models/blacklight/solr/facet_paginator_spec.rb +1 -1
- data/spec/models/blacklight/solr/repository_spec.rb +32 -27
- data/spec/models/blacklight/solr/request_spec.rb +1 -1
- data/spec/models/blacklight/solr/response/facets_spec.rb +1 -1
- data/spec/models/blacklight/solr/response/group_response_spec.rb +1 -1
- data/spec/models/blacklight/solr/response/group_spec.rb +1 -1
- data/spec/models/blacklight/solr/response_spec.rb +9 -6
- data/spec/models/blacklight/solr/search_builder_spec.rb +35 -48
- data/spec/models/blacklight/suggest/response_spec.rb +4 -5
- data/spec/models/blacklight/suggest_search_spec.rb +14 -7
- data/spec/models/blacklight/user_spec.rb +1 -1
- data/spec/models/bookmark_spec.rb +1 -1
- data/spec/models/record_mailer_spec.rb +2 -2
- data/spec/models/search_spec.rb +1 -1
- data/spec/models/solr_document_spec.rb +3 -3
- data/spec/presenters/blacklight/search_bar_presenter_spec.rb +72 -0
- data/spec/presenters/index_presenter_spec.rb +70 -143
- data/spec/presenters/pipeline_spec.rb +4 -4
- data/spec/presenters/show_presenter_spec.rb +83 -145
- data/spec/presenters/thumbnail_presenter_spec.rb +171 -0
- data/spec/routing/catalog_routing_spec.rb +1 -17
- data/spec/services/blacklight/search_service_spec.rb +446 -0
- data/spec/spec_helper.rb +22 -9
- data/spec/test_app_templates/Gemfile.extra +2 -5
- data/spec/test_app_templates/lib/generators/test_app_generator.rb +1 -1
- data/spec/views/catalog/_constraints.html.erb_spec.rb +1 -3
- data/spec/views/catalog/_constraints_element.html.erb_spec.rb +8 -8
- data/spec/views/catalog/_document.html.erb_spec.rb +7 -7
- data/spec/views/catalog/_document_list.html.erb_spec.rb +1 -1
- data/spec/views/catalog/_facet_index_navigation.html.erb_spec.rb +1 -1
- data/spec/views/catalog/_facet_layout.html.erb_spec.rb +6 -6
- data/spec/views/catalog/_facets.html.erb_spec.rb +2 -2
- data/spec/views/catalog/{_index_default.erb_spec.rb → _index.html.erb_spec.rb} +1 -1
- data/spec/views/catalog/{_index_header_default.html.erb_spec.rb → _index_header.html.erb_spec.rb} +4 -4
- data/spec/views/catalog/_paginate_compact.html.erb_spec.rb +4 -27
- data/spec/views/catalog/_search_header.erb_spec.rb +1 -3
- data/spec/views/catalog/{_show_default.erb_spec.rb → _show.html.erb_spec.rb} +1 -1
- data/spec/views/catalog/_show_sidebar.erb_spec.rb +3 -3
- data/spec/views/catalog/_show_tools.html.erb_spec.rb +3 -3
- data/spec/views/catalog/_sort_and_per_page.html.erb_spec.rb +1 -1
- data/spec/views/catalog/{_thumbnail_default.erb_spec.rb → _thumbnail.html.erb_spec.rb} +3 -3
- data/spec/views/catalog/_view_type_group.html.erb_spec.rb +5 -1
- data/spec/views/catalog/email_success.html.erb_spec.rb +9 -0
- data/spec/views/catalog/facet.html.erb_spec.rb +1 -1
- data/spec/views/catalog/facet.json.jbuilder_spec.rb +1 -1
- data/spec/views/catalog/index.atom.builder_spec.rb +2 -2
- data/spec/views/catalog/index.html.erb_spec.rb +4 -7
- data/spec/views/catalog/index.json.jbuilder_spec.rb +66 -21
- data/spec/views/catalog/opensearch.xml.builder_spec.rb +1 -1
- data/spec/views/catalog/show.html.erb_spec.rb +2 -2
- data/spec/views/catalog/sms_success.html.erb_spec.rb +9 -0
- data/spec/views/{_user_util_links.html.erb_spec.rb → shared/_user_util_links.html.erb_spec.rb} +4 -4
- data/tasks/blacklight.rake +10 -8
- data/template.demo.rb +1 -11
- metadata +171 -189
- data/app/assets/javascripts/blacklight/autofocus.js +0 -16
- data/app/assets/javascripts/blacklight/bookmark_toggle.js +0 -23
- data/app/assets/javascripts/blacklight/checkbox_submit.js +0 -139
- data/app/assets/javascripts/blacklight/core.js +0 -30
- data/app/controllers/concerns/blacklight/request_builders.rb +0 -77
- data/app/controllers/concerns/blacklight/saved_searches.rb +0 -70
- data/app/controllers/concerns/blacklight/search_helper.rb +0 -161
- data/app/controllers/concerns/blacklight/suggest.rb +0 -25
- data/app/controllers/saved_searches_controller.rb +0 -4
- data/app/controllers/suggest_controller.rb +0 -4
- data/app/helpers/blacklight/deprecated_url_helper_behavior.rb +0 -57
- data/app/helpers/blacklight/render_partials_helper.rb +0 -205
- data/app/helpers/blacklight_configuration_helper.rb +0 -4
- data/app/helpers/blacklight_url_helper.rb +0 -4
- data/app/helpers/component_helper.rb +0 -4
- data/app/helpers/facets_helper.rb +0 -4
- data/app/helpers/hash_as_hidden_fields_helper.rb +0 -4
- data/app/helpers/layout_helper.rb +0 -4
- data/app/helpers/render_constraints_helper.rb +0 -4
- data/app/helpers/search_history_constraints_helper.rb +0 -4
- data/app/helpers/suggest_helper.rb +0 -4
- data/app/models/concerns/blacklight/solr/document/more_like_this.rb +0 -6
- data/app/presenters/blacklight/document_presenter.rb +0 -153
- data/app/views/_user_util_links.html.erb +0 -26
- data/app/views/blacklight/nav/_saved_searches.html.erb +0 -1
- data/app/views/catalog/_index_default.html.erb +0 -12
- data/app/views/catalog/_show_default.html.erb +0 -10
- data/app/views/catalog/_thumbnail_default.html.erb +0 -5
- data/app/views/saved_searches/index.html.erb +0 -32
- data/app/views/shared/_ajax_modal.html.erb +0 -6
- data/lib/blacklight/utils.rb +0 -183
- data/lib/generators/blacklight/solr4_generator.rb +0 -31
- data/solr/conf/schema.xml +0 -627
- data/solr/conf/solrconfig.xml +0 -411
- data/spec/controllers/blacklight/search_helper_spec.rb +0 -489
- data/spec/controllers/saved_searches_controller_spec.rb +0 -32
- data/spec/controllers/suggest_controller_spec.rb +0 -17
- data/spec/features/saved_searches_spec.rb +0 -47
- data/spec/helpers/deprecated_url_helper_behavior_spec.rb +0 -101
- data/spec/lib/blacklight/utils_spec.rb +0 -167
- data/spec/models/blacklight/solr/document/more_like_this_spec.rb +0 -18
- data/spec/presenters/document_presenter_spec.rb +0 -438
- data/spec/support/backport_test.rb +0 -14
data/solr/conf/solrconfig.xml
DELETED
|
@@ -1,411 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8" ?>
|
|
2
|
-
<!--
|
|
3
|
-
Licensed to the Apache Software Foundation (ASF) under one or more
|
|
4
|
-
contributor license agreements. See the NOTICE file distributed with
|
|
5
|
-
this work for additional information regarding copyright ownership.
|
|
6
|
-
The ASF licenses this file to You under the Apache License, Version 2.0
|
|
7
|
-
(the "License"); you may not use this file except in compliance with
|
|
8
|
-
the License. You may obtain a copy of the License at
|
|
9
|
-
|
|
10
|
-
http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
-
|
|
12
|
-
Unless required by applicable law or agreed to in writing, software
|
|
13
|
-
distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
-
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15
|
-
See the License for the specific language governing permissions and
|
|
16
|
-
limitations under the License.
|
|
17
|
-
-->
|
|
18
|
-
|
|
19
|
-
<!--
|
|
20
|
-
This is a stripped down config file used for a simple example...
|
|
21
|
-
It is *not* a good example to work from.
|
|
22
|
-
-->
|
|
23
|
-
<config>
|
|
24
|
-
|
|
25
|
-
<!-- Controls what version of Lucene various components of Solr
|
|
26
|
-
adhere to. Generally, you want to use the latest version to
|
|
27
|
-
get all bug fixes and improvements. It is highly recommended
|
|
28
|
-
that you fully re-index after changing this setting as it can
|
|
29
|
-
affect both how text is indexed and queried.
|
|
30
|
-
-->
|
|
31
|
-
<luceneMatchVersion>5.0.0</luceneMatchVersion>
|
|
32
|
-
|
|
33
|
-
<lib dir="${solr.install.dir:../../../..}/contrib/analysis-extras/lib" />
|
|
34
|
-
<lib dir="${solr.install.dir:../../../..}/contrib/analysis-extras/lucene-libs" />
|
|
35
|
-
|
|
36
|
-
<directoryFactory name="DirectoryFactory"
|
|
37
|
-
class="${solr.directoryFactory:solr.NRTCachingDirectoryFactory}">
|
|
38
|
-
</directoryFactory>
|
|
39
|
-
|
|
40
|
-
<codecFactory class="solr.SchemaCodecFactory"/>
|
|
41
|
-
|
|
42
|
-
<schemaFactory class="ClassicIndexSchemaFactory"/>
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
<dataDir>${solr.blacklight-core.data.dir:}</dataDir>
|
|
46
|
-
|
|
47
|
-
<requestDispatcher handleSelect="true" >
|
|
48
|
-
<requestParsers enableRemoteStreaming="false" multipartUploadLimitInKB="2048" />
|
|
49
|
-
</requestDispatcher>
|
|
50
|
-
|
|
51
|
-
<requestHandler name="/analysis/field" startup="lazy" class="solr.FieldAnalysisRequestHandler" />
|
|
52
|
-
|
|
53
|
-
<!-- config for the admin interface -->
|
|
54
|
-
<admin>
|
|
55
|
-
<defaultQuery>*:*</defaultQuery>
|
|
56
|
-
</admin>
|
|
57
|
-
|
|
58
|
-
<!-- SearchHandler
|
|
59
|
-
|
|
60
|
-
http://wiki.apache.org/solr/SearchHandler
|
|
61
|
-
|
|
62
|
-
For processing Search Queries, the primary Request Handler
|
|
63
|
-
provided with Solr is "SearchHandler" It delegates to a sequent
|
|
64
|
-
of SearchComponents (see below) and supports distributed
|
|
65
|
-
queries across multiple shards
|
|
66
|
-
-->
|
|
67
|
-
<requestHandler name="search" class="solr.SearchHandler" default="true">
|
|
68
|
-
<!-- default values for query parameters can be specified, these
|
|
69
|
-
will be overridden by parameters in the request
|
|
70
|
-
-->
|
|
71
|
-
<lst name="defaults">
|
|
72
|
-
<str name="defType">dismax</str>
|
|
73
|
-
<str name="echoParams">explicit</str>
|
|
74
|
-
<int name="rows">10</int>
|
|
75
|
-
|
|
76
|
-
<str name="q.alt">*:*</str>
|
|
77
|
-
<str name="mm">2<-1 5<-2 6<90%</str>
|
|
78
|
-
|
|
79
|
-
<!-- this qf and pf are used by default, if not otherwise specified by
|
|
80
|
-
client. The default blacklight_config will use these for the
|
|
81
|
-
"keywords" search. See the author_qf/author_pf, title_qf, etc
|
|
82
|
-
below, which the default blacklight_config will specify for
|
|
83
|
-
those searches. You may also be interested in:
|
|
84
|
-
http://wiki.apache.org/solr/LocalParams
|
|
85
|
-
-->
|
|
86
|
-
|
|
87
|
-
<str name="qf">
|
|
88
|
-
title_unstem_search^100000
|
|
89
|
-
subtitle_unstem_search^50000
|
|
90
|
-
title_t^25000
|
|
91
|
-
subtitle_t^10000
|
|
92
|
-
title_addl_unstem_search^5000
|
|
93
|
-
title_addl_t^2500
|
|
94
|
-
title_added_entry_unstem_search^1500
|
|
95
|
-
title_added_entry_t^1250
|
|
96
|
-
subject_topic_unstem_search^1000
|
|
97
|
-
subject_unstem_search^750
|
|
98
|
-
subject_topic_facet^625
|
|
99
|
-
subject_t^500
|
|
100
|
-
author_unstem_search^250
|
|
101
|
-
author_addl_unstem_search^250
|
|
102
|
-
author_t^100
|
|
103
|
-
author_addl_t^50
|
|
104
|
-
subject_addl_unstem_search^250
|
|
105
|
-
subject_addl_t^50
|
|
106
|
-
title_series_unstem_search^25
|
|
107
|
-
title_series_t^10
|
|
108
|
-
isbn_t
|
|
109
|
-
text
|
|
110
|
-
</str>
|
|
111
|
-
<str name="pf">
|
|
112
|
-
title_unstem_search^1000000
|
|
113
|
-
subtitle_unstem_search^500000
|
|
114
|
-
title_t^250000
|
|
115
|
-
subtitle_t^100000
|
|
116
|
-
title_addl_unstem_search^50000
|
|
117
|
-
title_addl_t^25000
|
|
118
|
-
title_added_entry_unstem_search^15000
|
|
119
|
-
title_added_entry_t^12500
|
|
120
|
-
subject_topic_unstem_search^10000
|
|
121
|
-
subject_unstem_search^7500
|
|
122
|
-
subject_topic_facet^6250
|
|
123
|
-
subject_t^5000
|
|
124
|
-
author_unstem_search^2500
|
|
125
|
-
author_addl_unstem_search^2500
|
|
126
|
-
author_t^1000
|
|
127
|
-
author_addl_t^500
|
|
128
|
-
subject_addl_unstem_search^2500
|
|
129
|
-
subject_addl_t^500
|
|
130
|
-
title_series_unstem_search^250
|
|
131
|
-
title_series_t^100
|
|
132
|
-
text^10
|
|
133
|
-
</str>
|
|
134
|
-
<str name="author_qf">
|
|
135
|
-
author_unstem_search^200
|
|
136
|
-
author_addl_unstem_search^50
|
|
137
|
-
author_t^20
|
|
138
|
-
author_addl_t
|
|
139
|
-
</str>
|
|
140
|
-
<str name="author_pf">
|
|
141
|
-
author_unstem_search^2000
|
|
142
|
-
author_addl_unstem_search^500
|
|
143
|
-
author_t^200
|
|
144
|
-
author_addl_t^10
|
|
145
|
-
</str>
|
|
146
|
-
<str name="title_qf">
|
|
147
|
-
title_unstem_search^50000
|
|
148
|
-
subtitle_unstem_search^25000
|
|
149
|
-
title_addl_unstem_search^10000
|
|
150
|
-
title_t^5000
|
|
151
|
-
subtitle_t^2500
|
|
152
|
-
title_addl_t^100
|
|
153
|
-
title_added_entry_unstem_search^50
|
|
154
|
-
title_added_entry_t^10
|
|
155
|
-
title_series_unstem_search^5
|
|
156
|
-
title_series_t
|
|
157
|
-
</str>
|
|
158
|
-
<str name="title_pf">
|
|
159
|
-
title_unstem_search^500000
|
|
160
|
-
subtitle_unstem_search^250000
|
|
161
|
-
title_addl_unstem_search^100000
|
|
162
|
-
title_t^50000
|
|
163
|
-
subtitle_t^25000
|
|
164
|
-
title_addl_t^1000
|
|
165
|
-
title_added_entry_unstem_search^500
|
|
166
|
-
title_added_entry_t^100
|
|
167
|
-
title_series_t^50
|
|
168
|
-
title_series_unstem_search^10
|
|
169
|
-
</str>
|
|
170
|
-
<str name="subject_qf">
|
|
171
|
-
subject_topic_unstem_search^200
|
|
172
|
-
subject_unstem_search^125
|
|
173
|
-
subject_topic_facet^100
|
|
174
|
-
subject_t^50
|
|
175
|
-
subject_addl_unstem_search^10
|
|
176
|
-
subject_addl_t
|
|
177
|
-
</str>
|
|
178
|
-
<str name="subject_pf">
|
|
179
|
-
subject_topic_unstem_search^2000
|
|
180
|
-
subject_unstem_search^1250
|
|
181
|
-
subject_t^1000
|
|
182
|
-
subject_topic_facet^500
|
|
183
|
-
subject_addl_unstem_search^100
|
|
184
|
-
subject_addl_t^10
|
|
185
|
-
</str>
|
|
186
|
-
|
|
187
|
-
<int name="ps">3</int>
|
|
188
|
-
<float name="tie">0.01</float>
|
|
189
|
-
|
|
190
|
-
<!-- NOT using marc_display because it is large and will slow things down for search results -->
|
|
191
|
-
<str name="fl">
|
|
192
|
-
id,
|
|
193
|
-
score,
|
|
194
|
-
author_display,
|
|
195
|
-
author_vern_display,
|
|
196
|
-
format,
|
|
197
|
-
isbn_t,
|
|
198
|
-
language_facet,
|
|
199
|
-
lc_callnum_display,
|
|
200
|
-
material_type_display,
|
|
201
|
-
published_display,
|
|
202
|
-
published_vern_display,
|
|
203
|
-
pub_date,
|
|
204
|
-
title_display,
|
|
205
|
-
title_vern_display,
|
|
206
|
-
subject_topic_facet,
|
|
207
|
-
subject_geo_facet,
|
|
208
|
-
subject_era_facet,
|
|
209
|
-
subtitle_display,
|
|
210
|
-
subtitle_vern_display,
|
|
211
|
-
url_fulltext_display,
|
|
212
|
-
url_suppl_display,
|
|
213
|
-
</str>
|
|
214
|
-
|
|
215
|
-
<str name="facet">true</str>
|
|
216
|
-
<str name="facet.mincount">1</str>
|
|
217
|
-
<str name="facet.field">format</str>
|
|
218
|
-
<str name="facet.field">lc_1letter_facet</str>
|
|
219
|
-
<str name="facet.field">lc_alpha_facet</str>
|
|
220
|
-
<str name="facet.field">lc_b4cutter_facet</str>
|
|
221
|
-
<str name="facet.field">language_facet</str>
|
|
222
|
-
<str name="facet.field">pub_date</str>
|
|
223
|
-
<str name="facet.field">subject_era_facet</str>
|
|
224
|
-
<str name="facet.field">subject_geo_facet</str>
|
|
225
|
-
<str name="facet.field">subject_topic_facet</str>
|
|
226
|
-
|
|
227
|
-
<str name="spellcheck">true</str>
|
|
228
|
-
<str name="spellcheck.dictionary">default</str>
|
|
229
|
-
<str name="spellcheck.onlyMorePopular">true</str>
|
|
230
|
-
<str name="spellcheck.extendedResults">true</str>
|
|
231
|
-
<str name="spellcheck.collate">false</str>
|
|
232
|
-
<str name="spellcheck.count">5</str>
|
|
233
|
-
|
|
234
|
-
</lst>
|
|
235
|
-
<!-- In addition to defaults, "appends" params can be specified
|
|
236
|
-
to identify values which should be appended to the list of
|
|
237
|
-
multi-val params from the query (or the existing "defaults").
|
|
238
|
-
-->
|
|
239
|
-
<!-- In this example, the param "fq=instock:true" would be appended to
|
|
240
|
-
any query time fq params the user may specify, as a mechanism for
|
|
241
|
-
partitioning the index, independent of any user selected filtering
|
|
242
|
-
that may also be desired (perhaps as a result of faceted searching).
|
|
243
|
-
|
|
244
|
-
NOTE: there is *absolutely* nothing a client can do to prevent these
|
|
245
|
-
"appends" values from being used, so don't use this mechanism
|
|
246
|
-
unless you are sure you always want it.
|
|
247
|
-
-->
|
|
248
|
-
<!--
|
|
249
|
-
<lst name="appends">
|
|
250
|
-
<str name="fq">inStock:true</str>
|
|
251
|
-
</lst>
|
|
252
|
-
-->
|
|
253
|
-
<!-- "invariants" are a way of letting the Solr maintainer lock down
|
|
254
|
-
the options available to Solr clients. Any params values
|
|
255
|
-
specified here are used regardless of what values may be specified
|
|
256
|
-
in either the query, the "defaults", or the "appends" params.
|
|
257
|
-
|
|
258
|
-
In this example, the facet.field and facet.query params would
|
|
259
|
-
be fixed, limiting the facets clients can use. Faceting is
|
|
260
|
-
not turned on by default - but if the client does specify
|
|
261
|
-
facet=true in the request, these are the only facets they
|
|
262
|
-
will be able to see counts for; regardless of what other
|
|
263
|
-
facet.field or facet.query params they may specify.
|
|
264
|
-
|
|
265
|
-
NOTE: there is *absolutely* nothing a client can do to prevent these
|
|
266
|
-
"invariants" values from being used, so don't use this mechanism
|
|
267
|
-
unless you are sure you always want it.
|
|
268
|
-
-->
|
|
269
|
-
<!--
|
|
270
|
-
<lst name="invariants">
|
|
271
|
-
<str name="facet.field">cat</str>
|
|
272
|
-
<str name="facet.field">manu_exact</str>
|
|
273
|
-
<str name="facet.query">price:[* TO 500]</str>
|
|
274
|
-
<str name="facet.query">price:[500 TO *]</str>
|
|
275
|
-
</lst>
|
|
276
|
-
-->
|
|
277
|
-
<!-- If the default list of SearchComponents is not desired, that
|
|
278
|
-
list can either be overridden completely, or components can be
|
|
279
|
-
prepended or appended to the default list. (see below)
|
|
280
|
-
-->
|
|
281
|
-
<!--
|
|
282
|
-
<arr name="components">
|
|
283
|
-
<str>nameOfCustomComponent1</str>
|
|
284
|
-
<str>nameOfCustomComponent2</str>
|
|
285
|
-
</arr>
|
|
286
|
-
-->
|
|
287
|
-
<arr name="last-components">
|
|
288
|
-
<str>spellcheck</str>
|
|
289
|
-
</arr>
|
|
290
|
-
|
|
291
|
-
</requestHandler>
|
|
292
|
-
|
|
293
|
-
<!-- for requests to get a single document; use id=666 instead of q=id:666 -->
|
|
294
|
-
<requestHandler name="document" class="solr.SearchHandler" >
|
|
295
|
-
<lst name="defaults">
|
|
296
|
-
<str name="echoParams">all</str>
|
|
297
|
-
<str name="fl">*</str>
|
|
298
|
-
<str name="rows">1</str>
|
|
299
|
-
<str name="q">{!term f=id v=$id}</str> <!-- use id=666 instead of q=id:666 -->
|
|
300
|
-
</lst>
|
|
301
|
-
</requestHandler>
|
|
302
|
-
|
|
303
|
-
<!-- Spell Check
|
|
304
|
-
|
|
305
|
-
The spell check component can return a list of alternative spelling
|
|
306
|
-
suggestions.
|
|
307
|
-
|
|
308
|
-
http://wiki.apache.org/solr/SpellCheckComponent
|
|
309
|
-
-->
|
|
310
|
-
<searchComponent name="spellcheck" class="solr.SpellCheckComponent">
|
|
311
|
-
|
|
312
|
-
<str name="queryAnalyzerFieldType">textSpell</str>
|
|
313
|
-
|
|
314
|
-
<!-- Multiple "Spell Checkers" can be declared and used by this
|
|
315
|
-
component
|
|
316
|
-
-->
|
|
317
|
-
|
|
318
|
-
<!-- a spellchecker built from a field of the main index, and
|
|
319
|
-
written to disk
|
|
320
|
-
-->
|
|
321
|
-
<lst name="spellchecker">
|
|
322
|
-
<str name="name">default</str>
|
|
323
|
-
<str name="field">spell</str>
|
|
324
|
-
<str name="spellcheckIndexDir">./spell</str>
|
|
325
|
-
<str name="buildOnOptimize">true</str>
|
|
326
|
-
</lst>
|
|
327
|
-
<lst name="spellchecker">
|
|
328
|
-
<str name="name">author</str>
|
|
329
|
-
<str name="field">author_spell</str>
|
|
330
|
-
<str name="spellcheckIndexDir">./spell_author</str>
|
|
331
|
-
<str name="accuracy">0.7</str>
|
|
332
|
-
<str name="buildOnOptimize">true</str>
|
|
333
|
-
</lst>
|
|
334
|
-
<lst name="spellchecker">
|
|
335
|
-
<str name="name">subject</str>
|
|
336
|
-
<str name="field">subject_spell</str>
|
|
337
|
-
<str name="spellcheckIndexDir">./spell_subject</str>
|
|
338
|
-
<str name="accuracy">0.7</str>
|
|
339
|
-
<str name="buildOnOptimize">true</str>
|
|
340
|
-
</lst>
|
|
341
|
-
<lst name="spellchecker">
|
|
342
|
-
<str name="name">title</str>
|
|
343
|
-
<str name="field">title_spell</str>
|
|
344
|
-
<str name="spellcheckIndexDir">./spell_title</str>
|
|
345
|
-
<str name="accuracy">0.7</str>
|
|
346
|
-
<str name="buildOnOptimize">true</str>
|
|
347
|
-
</lst>
|
|
348
|
-
|
|
349
|
-
<!-- a spellchecker that uses a different distance measure -->
|
|
350
|
-
<!--
|
|
351
|
-
<lst name="spellchecker">
|
|
352
|
-
<str name="name">jarowinkler</str>
|
|
353
|
-
<str name="field">spell</str>
|
|
354
|
-
<str name="distanceMeasure">
|
|
355
|
-
org.apache.lucene.search.spell.JaroWinklerDistance
|
|
356
|
-
</str>
|
|
357
|
-
<str name="spellcheckIndexDir">spellcheckerJaro</str>
|
|
358
|
-
</lst>
|
|
359
|
-
-->
|
|
360
|
-
|
|
361
|
-
<!-- a spellchecker that use an alternate comparator
|
|
362
|
-
|
|
363
|
-
comparatorClass be one of:
|
|
364
|
-
1. score (default)
|
|
365
|
-
2. freq (Frequency first, then score)
|
|
366
|
-
3. A fully qualified class name
|
|
367
|
-
-->
|
|
368
|
-
<!--
|
|
369
|
-
<lst name="spellchecker">
|
|
370
|
-
<str name="name">freq</str>
|
|
371
|
-
<str name="field">lowerfilt</str>
|
|
372
|
-
<str name="spellcheckIndexDir">spellcheckerFreq</str>
|
|
373
|
-
<str name="comparatorClass">freq</str>
|
|
374
|
-
<str name="buildOnCommit">true</str>
|
|
375
|
-
-->
|
|
376
|
-
|
|
377
|
-
<!-- A spellchecker that reads the list of words from a file -->
|
|
378
|
-
<!--
|
|
379
|
-
<lst name="spellchecker">
|
|
380
|
-
<str name="classname">solr.FileBasedSpellChecker</str>
|
|
381
|
-
<str name="name">file</str>
|
|
382
|
-
<str name="sourceLocation">spellings.txt</str>
|
|
383
|
-
<str name="characterEncoding">UTF-8</str>
|
|
384
|
-
<str name="spellcheckIndexDir">spellcheckerFile</str>
|
|
385
|
-
</lst>
|
|
386
|
-
-->
|
|
387
|
-
</searchComponent>
|
|
388
|
-
|
|
389
|
-
<searchComponent name="suggest" class="solr.SuggestComponent">
|
|
390
|
-
<lst name="suggester">
|
|
391
|
-
<str name="name">mySuggester</str>
|
|
392
|
-
<str name="lookupImpl">FuzzyLookupFactory</str>
|
|
393
|
-
<str name="suggestAnalyzerFieldType">textSuggest</str>
|
|
394
|
-
<str name="buildOnCommit">true</str>
|
|
395
|
-
<str name="field">suggest</str>
|
|
396
|
-
</lst>
|
|
397
|
-
</searchComponent>
|
|
398
|
-
|
|
399
|
-
<requestHandler name="/suggest" class="solr.SearchHandler" startup="lazy">
|
|
400
|
-
<lst name="defaults">
|
|
401
|
-
<str name="suggest">true</str>
|
|
402
|
-
<str name="suggest.count">5</str>
|
|
403
|
-
<str name="suggest.dictionary">mySuggester</str>
|
|
404
|
-
</lst>
|
|
405
|
-
<arr name="components">
|
|
406
|
-
<str>suggest</str>
|
|
407
|
-
</arr>
|
|
408
|
-
</requestHandler>
|
|
409
|
-
|
|
410
|
-
</config>
|
|
411
|
-
|
|
@@ -1,489 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
# check the methods that do solr requests. Note that we are not testing if
|
|
4
|
-
# solr gives "correct" responses, as that's out of scope (it's a part of
|
|
5
|
-
# testing the solr code itself). We *are* testing if blacklight code sends
|
|
6
|
-
# queries to solr such that it gets appropriate results. When a user does a search,
|
|
7
|
-
# do we get data back from solr (i.e. did we properly configure blacklight code
|
|
8
|
-
# to talk with solr and get results)? when we do a document request, does
|
|
9
|
-
# blacklight code get a single document returned?)
|
|
10
|
-
#
|
|
11
|
-
describe Blacklight::SearchHelper do
|
|
12
|
-
|
|
13
|
-
# SearchHelper is a controller layer mixin, which depends
|
|
14
|
-
# on being mixed into a class which has #params (from Rails)
|
|
15
|
-
# and #blacklight_config
|
|
16
|
-
class SearchHelperTestClass
|
|
17
|
-
include Blacklight::SearchHelper
|
|
18
|
-
|
|
19
|
-
attr_accessor :blacklight_config, :repository, :search_state
|
|
20
|
-
|
|
21
|
-
def initialize blacklight_config, conn, state
|
|
22
|
-
self.blacklight_config = blacklight_config
|
|
23
|
-
self.repository = Blacklight::Solr::Repository.new(blacklight_config)
|
|
24
|
-
self.repository.connection = conn
|
|
25
|
-
self.search_state = search_state
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
def params
|
|
29
|
-
{}
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
subject { SearchHelperTestClass.new blacklight_config, blacklight_solr, state }
|
|
34
|
-
|
|
35
|
-
let(:blacklight_config) { Blacklight::Configuration.new }
|
|
36
|
-
let(:copy_of_catalog_config) { ::CatalogController.blacklight_config.deep_copy }
|
|
37
|
-
let(:blacklight_solr) { RSolr.connect(Blacklight.connection_config.except(:adapter)) }
|
|
38
|
-
let(:state) { {} }
|
|
39
|
-
|
|
40
|
-
before(:each) do
|
|
41
|
-
@all_docs_query = ''
|
|
42
|
-
@no_docs_query = 'zzzzzzzzzzzz'
|
|
43
|
-
@single_word_query = 'include'
|
|
44
|
-
@mult_word_query = 'tibetan history'
|
|
45
|
-
# f[format][]=Book&f[language_facet][]=English
|
|
46
|
-
@single_facet = {:format=>'Book'}
|
|
47
|
-
@multi_facets = {:format=>'Book', :language_facet=>'Tibetan'}
|
|
48
|
-
@bad_facet = {:format=>'666'}
|
|
49
|
-
@subject_search_params = {:commit=>"search", :search_field=>"subject", :action=>"index", :"controller"=>"catalog", :"rows"=>"10", :"q"=>"wome"}
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
# SPECS FOR SEARCH RESULTS FOR QUERY
|
|
53
|
-
describe 'Search Results', :integration => true do
|
|
54
|
-
|
|
55
|
-
let(:blacklight_config) { copy_of_catalog_config }
|
|
56
|
-
describe 'for a sample query returning results' do
|
|
57
|
-
|
|
58
|
-
before do
|
|
59
|
-
(@solr_response, @document_list) = subject.search_results(q: @all_docs_query)
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
it "uses the configured request handler" do
|
|
63
|
-
allow(blacklight_config).to receive(:default_solr_params).and_return({:qt => 'custom_request_handler'})
|
|
64
|
-
allow(blacklight_solr).to receive(:send_and_receive) do |path, params|
|
|
65
|
-
expect(path).to eq 'select'
|
|
66
|
-
expect(params[:params]['facet.field']).to eq ["format", "{!ex=pub_date_single}pub_date", "subject_topic_facet", "language_facet", "lc_1letter_facet", "subject_geo_facet", "subject_era_facet"]
|
|
67
|
-
expect(params[:params]["facet.query"]).to eq ["pub_date:[#{5.years.ago.year} TO *]", "pub_date:[#{10.years.ago.year} TO *]", "pub_date:[#{25.years.ago.year} TO *]"]
|
|
68
|
-
expect(params[:params]).to include('rows' => 10, 'qt'=>"custom_request_handler", 'q'=>"", "f.subject_topic_facet.facet.limit"=>21, 'sort'=>"score desc, pub_date_sort desc, title_sort asc")
|
|
69
|
-
end.and_return({'response'=>{'docs'=>[]}})
|
|
70
|
-
subject.search_results(q: @all_docs_query)
|
|
71
|
-
end
|
|
72
|
-
|
|
73
|
-
it 'has a @response.docs list of the same size as @document_list' do
|
|
74
|
-
expect(@solr_response.docs).to have(@document_list.length).docs
|
|
75
|
-
end
|
|
76
|
-
|
|
77
|
-
it 'has @response.docs list representing same documents as SolrDocuments in @document_list' do
|
|
78
|
-
@solr_response.docs.each_index do |index|
|
|
79
|
-
mash = @solr_response.docs[index]
|
|
80
|
-
solr_document = @document_list[index]
|
|
81
|
-
|
|
82
|
-
expect(Set.new(mash.keys)).to eq Set.new(solr_document.keys)
|
|
83
|
-
|
|
84
|
-
mash.keys.each do |key|
|
|
85
|
-
expect(mash[key]).to eq solr_document[key]
|
|
86
|
-
end
|
|
87
|
-
end
|
|
88
|
-
end
|
|
89
|
-
end
|
|
90
|
-
|
|
91
|
-
describe "for a query returning a grouped response" do
|
|
92
|
-
let(:blacklight_config) { copy_of_catalog_config }
|
|
93
|
-
before do
|
|
94
|
-
blacklight_config.default_solr_params[:group] = true
|
|
95
|
-
blacklight_config.default_solr_params[:'group.field'] = 'pub_date_sort'
|
|
96
|
-
(@solr_response, @document_list) = subject.search_results(q: @all_docs_query)
|
|
97
|
-
end
|
|
98
|
-
|
|
99
|
-
it "has an empty document list" do
|
|
100
|
-
expect(@document_list).to be_empty
|
|
101
|
-
end
|
|
102
|
-
|
|
103
|
-
it "returns a grouped response" do
|
|
104
|
-
expect(@solr_response).to be_a_kind_of Blacklight::Solr::Response::GroupResponse
|
|
105
|
-
|
|
106
|
-
end
|
|
107
|
-
end
|
|
108
|
-
|
|
109
|
-
describe "for a query returning multiple groups", integration: true do
|
|
110
|
-
let(:blacklight_config) { copy_of_catalog_config }
|
|
111
|
-
|
|
112
|
-
before do
|
|
113
|
-
allow(subject).to receive_messages grouped_key_for_results: 'title_sort'
|
|
114
|
-
blacklight_config.default_solr_params[:group] = true
|
|
115
|
-
blacklight_config.default_solr_params[:'group.field'] = ['pub_date_sort', 'title_sort']
|
|
116
|
-
(@solr_response, @document_list) = subject.search_results(q: @all_docs_query)
|
|
117
|
-
end
|
|
118
|
-
|
|
119
|
-
it "has an empty document list" do
|
|
120
|
-
expect(@document_list).to be_empty
|
|
121
|
-
end
|
|
122
|
-
|
|
123
|
-
it "returns a grouped response" do
|
|
124
|
-
expect(@solr_response).to be_a_kind_of Blacklight::Solr::Response::GroupResponse
|
|
125
|
-
expect(@solr_response.group_field).to eq "title_sort"
|
|
126
|
-
end
|
|
127
|
-
end
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
describe "for All Docs Query and One Facet" do
|
|
131
|
-
it 'has results' do
|
|
132
|
-
(solr_response, document_list) = subject.search_results(q: @all_docs_query, f: @single_facet)
|
|
133
|
-
expect(solr_response.docs).to have(document_list.size).results
|
|
134
|
-
expect(solr_response.docs).to have_at_least(1).result
|
|
135
|
-
end
|
|
136
|
-
# TODO: check that number of these results < number of results for all docs query
|
|
137
|
-
# BUT can't: num docs isn't total, it's the num docs in the single SOLR response (e.g. 10)
|
|
138
|
-
end
|
|
139
|
-
|
|
140
|
-
describe "for Query Without Results and No Facet" do
|
|
141
|
-
it 'has no results and not raise error' do
|
|
142
|
-
(solr_response, document_list) = subject.search_results(q: @no_docs_query)
|
|
143
|
-
expect(document_list).to have(0).results
|
|
144
|
-
expect(solr_response.docs).to have(0).results
|
|
145
|
-
end
|
|
146
|
-
end
|
|
147
|
-
|
|
148
|
-
describe "for Query Without Results and One Facet" do
|
|
149
|
-
it 'has no results and not raise error' do
|
|
150
|
-
(solr_response, document_list) = subject.search_results(q: @no_docs_query, f: @single_facet)
|
|
151
|
-
expect(document_list).to have(0).results
|
|
152
|
-
expect(solr_response.docs).to have(0).results
|
|
153
|
-
end
|
|
154
|
-
end
|
|
155
|
-
|
|
156
|
-
describe "for All Docs Query and Bad Facet" do
|
|
157
|
-
it 'has no results and not raise error' do
|
|
158
|
-
(solr_response, document_list) = subject.search_results(q: @all_docs_query, f: @bad_facet)
|
|
159
|
-
expect(document_list).to have(0).results
|
|
160
|
-
expect(solr_response.docs).to have(0).results
|
|
161
|
-
end
|
|
162
|
-
end
|
|
163
|
-
end # Search Results
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
# SPECS FOR SEARCH RESULTS FOR FACETS
|
|
167
|
-
describe 'Facets in Search Results for All Docs Query', :integration => true do
|
|
168
|
-
|
|
169
|
-
let(:blacklight_config) { copy_of_catalog_config }
|
|
170
|
-
|
|
171
|
-
before do
|
|
172
|
-
(solr_response, document_list) = subject.search_results(q: @all_docs_query)
|
|
173
|
-
@facets = solr_response.aggregations
|
|
174
|
-
end
|
|
175
|
-
|
|
176
|
-
it 'has more than one facet' do
|
|
177
|
-
expect(@facets).to have_at_least(1).facet
|
|
178
|
-
end
|
|
179
|
-
it 'has all facets specified in initializer' do
|
|
180
|
-
expect(@facets.keys).to include *blacklight_config.facet_fields.keys
|
|
181
|
-
expect(@facets.none? { |k, v| v.nil? }).to eq true
|
|
182
|
-
end
|
|
183
|
-
|
|
184
|
-
it 'has at least one value for each facet' do
|
|
185
|
-
@facets.each do |key, facet|
|
|
186
|
-
expect(facet.items).to have_at_least(1).hit
|
|
187
|
-
end
|
|
188
|
-
end
|
|
189
|
-
it 'has multiple values for at least one facet' do
|
|
190
|
-
has_mult_values = false
|
|
191
|
-
@facets.each do |key, facet|
|
|
192
|
-
if facet.items.size > 1
|
|
193
|
-
has_mult_values = true
|
|
194
|
-
break
|
|
195
|
-
end
|
|
196
|
-
end
|
|
197
|
-
expect(has_mult_values).to eq true
|
|
198
|
-
end
|
|
199
|
-
it 'has all value counts > 0' do
|
|
200
|
-
@facets.each do |key, facet|
|
|
201
|
-
facet.items.each do |facet_vals|
|
|
202
|
-
expect(facet_vals.hits).to be > 0
|
|
203
|
-
end
|
|
204
|
-
end
|
|
205
|
-
end
|
|
206
|
-
end # facet specs
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
# SPECS FOR SEARCH RESULTS FOR PAGING
|
|
210
|
-
describe 'Paging', :integration => true do
|
|
211
|
-
let(:blacklight_config) { copy_of_catalog_config }
|
|
212
|
-
|
|
213
|
-
it 'starts with first results by default' do
|
|
214
|
-
(solr_response, document_list) = subject.search_results(q: @all_docs_query)
|
|
215
|
-
expect(solr_response.params[:start].to_i).to eq 0
|
|
216
|
-
end
|
|
217
|
-
it 'has number of results (per page) set in initializer, by default' do
|
|
218
|
-
(solr_response, document_list) = subject.search_results(q: @all_docs_query)
|
|
219
|
-
expect(solr_response.docs).to have(blacklight_config[:default_solr_params][:rows]).items
|
|
220
|
-
expect(document_list).to have(blacklight_config[:default_solr_params][:rows]).items
|
|
221
|
-
end
|
|
222
|
-
|
|
223
|
-
it 'gets number of results per page requested' do
|
|
224
|
-
num_results = 3 # non-default value
|
|
225
|
-
(solr_response1, document_list1) = subject.search_results(q: @all_docs_query, per_page: num_results)
|
|
226
|
-
expect(document_list1).to have(num_results).docs
|
|
227
|
-
expect(solr_response1.docs).to have(num_results).docs
|
|
228
|
-
end
|
|
229
|
-
|
|
230
|
-
it 'gets number of rows requested' do
|
|
231
|
-
num_results = 4 # non-default value
|
|
232
|
-
(solr_response1, document_list1) = subject.search_results(q: @all_docs_query, rows: num_results)
|
|
233
|
-
expect(document_list1).to have(num_results).docs
|
|
234
|
-
expect(solr_response1.docs).to have(num_results).docs
|
|
235
|
-
end
|
|
236
|
-
|
|
237
|
-
it 'skips appropriate number of results when requested - default per page' do
|
|
238
|
-
page = 3
|
|
239
|
-
(solr_response2, document_list2) = subject.search_results(q: @all_docs_query, page: page)
|
|
240
|
-
expect(solr_response2.params[:start].to_i).to eq blacklight_config[:default_solr_params][:rows] * (page-1)
|
|
241
|
-
end
|
|
242
|
-
it 'skips appropriate number of results when requested - non-default per page' do
|
|
243
|
-
page = 3
|
|
244
|
-
num_results = 3
|
|
245
|
-
(solr_response2a, document_list2a) = subject.search_results(q: @all_docs_query, per_page: num_results, page: page)
|
|
246
|
-
expect(solr_response2a.params[:start].to_i).to eq num_results * (page-1)
|
|
247
|
-
end
|
|
248
|
-
|
|
249
|
-
it 'has no results when prompted for page after last result' do
|
|
250
|
-
big = 5000
|
|
251
|
-
(solr_response3, document_list3) = subject.search_results(q: @all_docs_query, rows: big, page: big)
|
|
252
|
-
expect(document_list3).to have(0).docs
|
|
253
|
-
expect(solr_response3.docs).to have(0).docs
|
|
254
|
-
end
|
|
255
|
-
|
|
256
|
-
it 'shows first results when prompted for page before first result' do
|
|
257
|
-
# FIXME: should it show first results, or should it throw an error for view to deal w?
|
|
258
|
-
# Solr throws an error for a negative start value
|
|
259
|
-
(solr_response4, document_list4) = subject.search_results(q: @all_docs_query, page: '-1')
|
|
260
|
-
expect(solr_response4.params[:start].to_i).to eq 0
|
|
261
|
-
end
|
|
262
|
-
it 'has results available when asked for more than are in response' do
|
|
263
|
-
big = 5000
|
|
264
|
-
(solr_response5, document_list5) = subject.search_results(q: @all_docs_query, rows: big, page: 1)
|
|
265
|
-
expect(solr_response5.docs).to have(document_list5.length).docs
|
|
266
|
-
expect(solr_response5.docs).to have_at_least(1).doc
|
|
267
|
-
end
|
|
268
|
-
|
|
269
|
-
end # page specs
|
|
270
|
-
|
|
271
|
-
# SPECS FOR SINGLE DOCUMENT REQUESTS
|
|
272
|
-
describe 'Get Document By Id', :integration => true do
|
|
273
|
-
before do
|
|
274
|
-
@doc_id = '2007020969'
|
|
275
|
-
@bad_id = "redrum"
|
|
276
|
-
@response2, @document = subject.fetch(@doc_id)
|
|
277
|
-
end
|
|
278
|
-
|
|
279
|
-
it "raises Blacklight::RecordNotFound for an unknown id" do
|
|
280
|
-
expect {
|
|
281
|
-
subject.fetch(@bad_id)
|
|
282
|
-
}.to raise_error(Blacklight::Exceptions::RecordNotFound)
|
|
283
|
-
end
|
|
284
|
-
|
|
285
|
-
it "uses a provided document request handler" do
|
|
286
|
-
allow(blacklight_config).to receive_messages(:document_solr_request_handler => 'document')
|
|
287
|
-
allow(blacklight_solr).to receive(:send_and_receive).with('select', kind_of(Hash)).and_return({'response'=>{'docs'=>[]}})
|
|
288
|
-
expect { subject.fetch(@doc_id)}.to raise_error Blacklight::Exceptions::RecordNotFound
|
|
289
|
-
end
|
|
290
|
-
|
|
291
|
-
it "uses a provided document solr path" do
|
|
292
|
-
allow(blacklight_config).to receive_messages(:document_solr_path => 'get')
|
|
293
|
-
allow(blacklight_solr).to receive(:send_and_receive).with('get', kind_of(Hash)).and_return({'response'=>{'docs'=>[]}})
|
|
294
|
-
expect { subject.fetch(@doc_id)}.to raise_error Blacklight::Exceptions::RecordNotFound
|
|
295
|
-
end
|
|
296
|
-
|
|
297
|
-
it "has a non-nil result for a known id" do
|
|
298
|
-
expect(@document).not_to be_nil
|
|
299
|
-
end
|
|
300
|
-
it "has a single document in the response for a known id" do
|
|
301
|
-
expect(@response2.docs.size).to eq 1
|
|
302
|
-
end
|
|
303
|
-
it 'has the expected value in the id field' do
|
|
304
|
-
expect(@document.id).to eq @doc_id
|
|
305
|
-
end
|
|
306
|
-
it 'has non-nil values for required fields set in initializer' do
|
|
307
|
-
expect(@document.fetch(blacklight_config.view_config(:show).display_type_field)).not_to be_nil
|
|
308
|
-
end
|
|
309
|
-
end
|
|
310
|
-
|
|
311
|
-
describe 'Get multiple documents By Id', integration: true do
|
|
312
|
-
let(:doc_id) { '2007020969' }
|
|
313
|
-
let(:bad_id) { 'redrum' }
|
|
314
|
-
let(:response) { subject.fetch([doc_id]).first }
|
|
315
|
-
|
|
316
|
-
before do
|
|
317
|
-
blacklight_config.fetch_many_document_params = { fl: 'id,format' }
|
|
318
|
-
end
|
|
319
|
-
|
|
320
|
-
it 'has the expected value in the id field' do
|
|
321
|
-
expect(response.documents.first.id).to eq doc_id
|
|
322
|
-
end
|
|
323
|
-
|
|
324
|
-
it 'returns all the requested fields' do
|
|
325
|
-
expect(response.documents.first['format']).to eq 'Book'
|
|
326
|
-
end
|
|
327
|
-
end
|
|
328
|
-
|
|
329
|
-
# SPECS FOR SPELLING SUGGESTIONS VIA SEARCH
|
|
330
|
-
describe "Searches should return spelling suggestions", :integration => true do
|
|
331
|
-
it 'search results for just-poor-enough-query term should have (multiple) spelling suggestions' do
|
|
332
|
-
(solr_response, document_list) = subject.search_results(q: 'boo')
|
|
333
|
-
expect(solr_response.spelling.words).to include('bon')
|
|
334
|
-
expect(solr_response.spelling.words).to include('bod') #for multiple suggestions
|
|
335
|
-
end
|
|
336
|
-
|
|
337
|
-
it 'search results for just-poor-enough-query term should have multiple spelling suggestions' do
|
|
338
|
-
(solr_response, document_list) = subject.search_results(q: 'politica')
|
|
339
|
-
expect(solr_response.spelling.words).to include('policy') # less freq
|
|
340
|
-
expect(solr_response.spelling.words).to include('politics') # more freq
|
|
341
|
-
expect(solr_response.spelling.words).to include('political') # more freq
|
|
342
|
-
=begin
|
|
343
|
-
# when we can have multiple suggestions
|
|
344
|
-
expect(solr_response.spelling.words).to_not include('policy') # less freq
|
|
345
|
-
solr_response.spelling.words).to include('politics') # more freq
|
|
346
|
-
solr_response.spelling.words).to include('political') # more freq
|
|
347
|
-
=end
|
|
348
|
-
end
|
|
349
|
-
|
|
350
|
-
it "title search results for just-poor-enough query term should have spelling suggestions" do
|
|
351
|
-
(solr_response, document_list) = subject.search_results(q: 'yehudiyam', qt: 'search', :"spellcheck.dictionary" => "title")
|
|
352
|
-
expect(solr_response.spelling.words).to include('yehudiyim')
|
|
353
|
-
end
|
|
354
|
-
|
|
355
|
-
it "author search results for just-poor-enough-query term should have spelling suggestions" do
|
|
356
|
-
(solr_response, document_list) = subject.search_results(q: 'shirma', qt: 'search', :"spellcheck.dictionary" => "author")
|
|
357
|
-
expect(solr_response.spelling.words).to include('sharma')
|
|
358
|
-
end
|
|
359
|
-
|
|
360
|
-
it "subject search results for just-poor-enough-query term should have spelling suggestions" do
|
|
361
|
-
(solr_response, document_list) = subject.search_results(q: 'wome', qt: 'search', :"spellcheck.dictionary" => "subject")
|
|
362
|
-
expect(solr_response.spelling.words).to include('women')
|
|
363
|
-
end
|
|
364
|
-
|
|
365
|
-
it 'search results for multiple terms query with just-poor-enough-terms should have spelling suggestions for each term' do
|
|
366
|
-
skip
|
|
367
|
-
# get_spelling_suggestion("histo politica").should_not be_nil
|
|
368
|
-
end
|
|
369
|
-
|
|
370
|
-
end
|
|
371
|
-
|
|
372
|
-
describe "facet_limit_for" do
|
|
373
|
-
let(:blacklight_config) { copy_of_catalog_config }
|
|
374
|
-
|
|
375
|
-
it "returns specified value for facet_field specified" do
|
|
376
|
-
expect(subject.facet_limit_for("subject_topic_facet")).to eq blacklight_config.facet_fields["subject_topic_facet"].limit
|
|
377
|
-
end
|
|
378
|
-
|
|
379
|
-
it "facet_limit_hash should return hash with key being facet_field and value being configured limit" do
|
|
380
|
-
# facet_limit_hash has been removed from solrhelper in refactor. should it go back?
|
|
381
|
-
skip "facet_limit_hash has been removed from solrhelper in refactor. should it go back?"
|
|
382
|
-
expect(subject.facet_limit_hash).to eq blacklight_config[:facet][:limits]
|
|
383
|
-
end
|
|
384
|
-
|
|
385
|
-
it "handles no facet_limits in config" do
|
|
386
|
-
blacklight_config.facet_fields = {}
|
|
387
|
-
expect(subject.facet_limit_for("subject_topic_facet")).to be_nil
|
|
388
|
-
end
|
|
389
|
-
|
|
390
|
-
describe "for 'true' configured values" do
|
|
391
|
-
let(:blacklight_config) do
|
|
392
|
-
Blacklight::Configuration.new do |config|
|
|
393
|
-
config.add_facet_field "language_facet", limit: true
|
|
394
|
-
end
|
|
395
|
-
end
|
|
396
|
-
it "returns nil if no @response available" do
|
|
397
|
-
expect(subject.facet_limit_for("some_unknown_field")).to be_nil
|
|
398
|
-
end
|
|
399
|
-
it "gets from @response facet.limit if available" do
|
|
400
|
-
@response = instance_double(Blacklight::Solr::Response, aggregations: { "language_facet" => double(limit: nil) })
|
|
401
|
-
subject.instance_variable_set(:@response, @response)
|
|
402
|
-
blacklight_config.facet_fields['language_facet'].limit = 10
|
|
403
|
-
expect(subject.facet_limit_for("language_facet")).to eq 10
|
|
404
|
-
end
|
|
405
|
-
it "gets the limit from the facet field in @response" do
|
|
406
|
-
@response = instance_double(Blacklight::Solr::Response, aggregations: { "language_facet" => double(limit: 16) })
|
|
407
|
-
subject.instance_variable_set(:@response, @response)
|
|
408
|
-
expect(subject.facet_limit_for("language_facet")).to eq 15
|
|
409
|
-
end
|
|
410
|
-
it "defaults to 10" do
|
|
411
|
-
expect(subject.facet_limit_for("language_facet")).to eq 10
|
|
412
|
-
end
|
|
413
|
-
end
|
|
414
|
-
|
|
415
|
-
context 'for facet fields with a key that is different from the field name' do
|
|
416
|
-
let(:blacklight_config) do
|
|
417
|
-
Blacklight::Configuration.new do |config|
|
|
418
|
-
config.add_facet_field 'some_key', field: 'x', limit: true
|
|
419
|
-
end
|
|
420
|
-
end
|
|
421
|
-
|
|
422
|
-
it 'gets the limit from the facet field in the @response' do
|
|
423
|
-
response = instance_double(Blacklight::Solr::Response, aggregations: { 'x' => double(limit: 16) })
|
|
424
|
-
subject.instance_variable_set(:@response, response)
|
|
425
|
-
expect(subject.facet_limit_for('some_key')).to eq 15
|
|
426
|
-
end
|
|
427
|
-
end
|
|
428
|
-
end
|
|
429
|
-
|
|
430
|
-
# TODO: more complex queries! phrases, offset into search results, non-latin, boosting(?)
|
|
431
|
-
# search within query building (?)
|
|
432
|
-
# search + facets (search done first; facet selected first, both selected)
|
|
433
|
-
|
|
434
|
-
# TODO: maybe eventually check other types of solr requests
|
|
435
|
-
# more like this
|
|
436
|
-
# nearby on shelf
|
|
437
|
-
it "raises a Blacklight exception if RSolr can't connect to the Solr instance" do
|
|
438
|
-
allow(blacklight_solr).to receive(:send_and_receive).and_raise(Errno::ECONNREFUSED)
|
|
439
|
-
expect { subject.repository.search }.to raise_exception(/Unable to connect to Solr instance/)
|
|
440
|
-
end
|
|
441
|
-
|
|
442
|
-
describe "grouped_key_for_results" do
|
|
443
|
-
it "pulls the grouped key out of the config" do
|
|
444
|
-
blacklight_config.index.group = 'xyz'
|
|
445
|
-
expect(subject.grouped_key_for_results).to eq('xyz')
|
|
446
|
-
end
|
|
447
|
-
end
|
|
448
|
-
|
|
449
|
-
describe "#get_previous_and_next_documents_for_search" do
|
|
450
|
-
let(:pre_query) { SearchHelperTestClass.new blacklight_config, blacklight_solr, state }
|
|
451
|
-
before do
|
|
452
|
-
@full_response, @all_docs = pre_query.search_results(q: '', per_page: '100')
|
|
453
|
-
end
|
|
454
|
-
|
|
455
|
-
it "returns the previous and next documents for a search" do
|
|
456
|
-
response, docs = subject.get_previous_and_next_documents_for_search(4, :q => '')
|
|
457
|
-
|
|
458
|
-
expect(docs.first.id).to eq @all_docs[3].id
|
|
459
|
-
expect(docs.last.id).to eq @all_docs[5].id
|
|
460
|
-
end
|
|
461
|
-
|
|
462
|
-
it "returns only the next document if the counter is 0" do
|
|
463
|
-
response, docs = subject.get_previous_and_next_documents_for_search(0, :q => '')
|
|
464
|
-
|
|
465
|
-
expect(docs.first).to be_nil
|
|
466
|
-
expect(docs.last.id).to eq @all_docs[1].id
|
|
467
|
-
end
|
|
468
|
-
|
|
469
|
-
it "returns only the previous document if the counter is the total number of documents" do
|
|
470
|
-
response, docs = subject.get_previous_and_next_documents_for_search(@full_response.total - 1, :q => '')
|
|
471
|
-
expect(docs.first.id).to eq @all_docs.slice(-2).id
|
|
472
|
-
expect(docs.last).to be_nil
|
|
473
|
-
end
|
|
474
|
-
|
|
475
|
-
it "returns an array of nil values if there is only one result" do
|
|
476
|
-
response, docs = subject.get_previous_and_next_documents_for_search(0, :q => 'id:2007020969')
|
|
477
|
-
expect(docs.last).to be_nil
|
|
478
|
-
expect(docs.first).to be_nil
|
|
479
|
-
end
|
|
480
|
-
|
|
481
|
-
it 'allows the query parameters to be customized using configuration' do
|
|
482
|
-
blacklight_config.document_pagination_params[:fl] = 'id,format'
|
|
483
|
-
|
|
484
|
-
response, docs = subject.get_previous_and_next_documents_for_search(0, :q => '')
|
|
485
|
-
|
|
486
|
-
expect(docs.last.to_h).to eq @all_docs[1].to_h.slice('id', 'format')
|
|
487
|
-
end
|
|
488
|
-
end
|
|
489
|
-
end
|