diff --git a/app/controllers/catalog_controller.rb b/app/controllers/catalog_controller.rb index 4731fe922..c6d30c35d 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 logical_order_headings_tesim), + 'qf' => %w(title_tesim name_tesim source_metadata_identifier_ssim logical_order_headings_tesim collection_slug_sim), 'qt' => 'search', 'rows' => 10 } diff --git a/app/models/multi_volume_work.rb b/app/models/multi_volume_work.rb index 8b960c717..f5ba20b4c 100644 --- a/app/models/multi_volume_work.rb +++ b/app/models/multi_volume_work.rb @@ -7,7 +7,10 @@ class MultiVolumeWork < ActiveFedora::Base def to_solr(solr_doc = {}) super.tap do |doc| - doc[ActiveFedora::SolrQueryBuilder.solr_name("collection", :facetable)] = in_collections.collect(&:title) + in_collections.each do |col| + doc[ActiveFedora::SolrQueryBuilder.solr_name("collection", :facetable)] = col.title + doc[ActiveFedora::SolrQueryBuilder.solr_name("collection_slug", :facetable)] = col.exhibit_id + end end end end diff --git a/app/models/scanned_resource.rb b/app/models/scanned_resource.rb index d44e20458..9b1fa1f33 100644 --- a/app/models/scanned_resource.rb +++ b/app/models/scanned_resource.rb @@ -14,7 +14,10 @@ def to_solr(solr_doc = {}) 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", :stored_searchable)] = logical_order.object.each_section.map(&:label) - doc[ActiveFedora::SolrQueryBuilder.solr_name("collection", :facetable)] = in_collections.map(&:title) + in_collections.each do |col| + doc[ActiveFedora::SolrQueryBuilder.solr_name("collection", :facetable)] = col.title + doc[ActiveFedora::SolrQueryBuilder.solr_name("collection_slug", :facetable)] = col.exhibit_id + end end end diff --git a/spec/controllers/catalog_controller_spec.rb b/spec/controllers/catalog_controller_spec.rb index 76a83605d..ac143607b 100644 --- a/spec/controllers/catalog_controller_spec.rb +++ b/spec/controllers/catalog_controller_spec.rb @@ -67,11 +67,22 @@ expect(document_ids).to eq [resource.id] end + end + + describe "resources in collections" do + it "finds resources in a collection by the collection's slug" do + resource = FactoryGirl.create(:scanned_resource_in_collection) + resource.save + + get :index, q: "slug1" + + expect(document_ids).to eq [resource.id] + end + end - def document_ids - assigns[:document_list].map do |x| - x["id"] - end + def document_ids + assigns[:document_list].map do |x| + x["id"] end end end diff --git a/spec/models/scanned_resource_spec.rb b/spec/models/scanned_resource_spec.rb index cb1ddaf25..92b34afee 100644 --- a/spec/models/scanned_resource_spec.rb +++ b/spec/models/scanned_resource_spec.rb @@ -357,4 +357,13 @@ expect(subject.reload.logical_order.order).to eq params2.with_indifferent_access end end + + describe "collection indexing" do + let(:scanned_resource) { FactoryGirl.create(:scanned_resource_in_collection) } + let(:solr_doc) { scanned_resource.to_solr } + it "indexes collection" do + expect(solr_doc['collection_sim']).to eq('Test Collection') + expect(solr_doc['collection_slug_sim']).to eq('slug1') + end + end end