From 3eb41fd9dfe5552aa2451b297ce28996f94fa6fc Mon Sep 17 00:00:00 2001 From: Trey Terrell Date: Fri, 8 Jan 2016 09:21:57 -0800 Subject: [PATCH] Search by section headings. --- app/controllers/catalog_controller.rb | 2 +- app/models/scanned_resource.rb | 2 +- spec/controllers/catalog_controller_spec.rb | 16 ++++++++++++++++ spec/models/scanned_resource_spec.rb | 4 ++-- 4 files changed, 20 insertions(+), 4 deletions(-) diff --git a/app/controllers/catalog_controller.rb b/app/controllers/catalog_controller.rb index 60f3db05f..ad822dfa7 100644 --- a/app/controllers/catalog_controller.rb +++ b/app/controllers/catalog_controller.rb @@ -5,7 +5,7 @@ class CatalogController < ApplicationController self.search_params_logic += [:hide_parented_resources, :join_from_parent] def self.search_config { - 'qf' => %w(title_tesim name_tesim source_metadata_identifier_ssim), + 'qf' => %w(title_tesim name_tesim source_metadata_identifier_ssim logical_order_headings_tesim), 'qt' => 'search', 'rows' => 10 } diff --git a/app/models/scanned_resource.rb b/app/models/scanned_resource.rb index 892936f6b..0342dae07 100644 --- a/app/models/scanned_resource.rb +++ b/app/models/scanned_resource.rb @@ -13,7 +13,7 @@ def to_solr(solr_doc = {}) doc[ActiveFedora::SolrQueryBuilder.solr_name("ordered_by", :symbol)] ||= [] doc[ActiveFedora::SolrQueryBuilder.solr_name("ordered_by", :symbol)] += send(:ordered_by_ids) doc[ActiveFedora::SolrQueryBuilder.solr_name("logical_order", :symbol)] = [logical_order.order.to_json] - doc[ActiveFedora::SolrQueryBuilder.solr_name("logical_order_headings", :symbol)] = logical_order.object.each_section.map(&:label) + doc[ActiveFedora::SolrQueryBuilder.solr_name("logical_order_headings", :stored_searchable)] = logical_order.object.each_section.map(&:label) end end diff --git a/spec/controllers/catalog_controller_spec.rb b/spec/controllers/catalog_controller_spec.rb index 9b12c6506..6648e5136 100644 --- a/spec/controllers/catalog_controller_spec.rb +++ b/spec/controllers/catalog_controller_spec.rb @@ -41,6 +41,22 @@ expect(document_ids).to eq [resource.id] end + it "finds items by their section headings" do + resource = FactoryGirl.build(:scanned_resource) + resource.logical_order.order = { + "nodes": [ + { + "label": "The Doctor's Tales" + } + ] + } + resource.save! + + get :index, q: "Tales" + + expect(document_ids).to eq [resource.id] + end + def document_ids assigns[:document_list].map do |x| x["id"] diff --git a/spec/models/scanned_resource_spec.rb b/spec/models/scanned_resource_spec.rb index 0a8d5dc08..a31ceaaea 100644 --- a/spec/models/scanned_resource_spec.rb +++ b/spec/models/scanned_resource_spec.rb @@ -320,14 +320,14 @@ it "indexes the headings into the solr record" do subject.logical_order.order = params2 - expect(subject.to_solr["logical_order_headings_ssim"]).to eq [ + expect(subject.to_solr["logical_order_headings_tesim"]).to eq [ "Chapter 1", "Chapter 2", "Chapter 2b" ] end it "can index even without order" do - expect(subject.to_solr["logical_order_headings_ssim"]).to eq [] + expect(subject.to_solr["logical_order_headings_tesim"]).to eq [] end it "survives persistence" do subject.logical_order.order = params