From b65ce26f41ae35007c0fc299d6a5bcea2911d827 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Pa=C5=82ucha?= Date: Mon, 21 Jun 2021 17:14:20 +0100 Subject: [PATCH] Add date_full_ssim Solr filed Add at Entry document _date_full_ssim_ field to store full date string. - it allows to sort Entries in date order including months and days - it resolves some bug as reported at https://dti-uoy.atlassian.net/browse/TNW-30 --- app/controllers/new_solr_fields_controller.rb | 3 ++- app/helpers/indexer/date_facet_helper.rb | 5 ++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/app/controllers/new_solr_fields_controller.rb b/app/controllers/new_solr_fields_controller.rb index 8d42893..c738ec5 100644 --- a/app/controllers/new_solr_fields_controller.rb +++ b/app/controllers/new_solr_fields_controller.rb @@ -113,7 +113,8 @@ def modify_sdoc(sdoc) # date_facet = get_date_array(get_id(sdoc[:id])) date_facet = Indexer::DateFacetHelper.s_get_date_facets_from_entry(get_id(sdoc[:id])) - sdoc['date_facet_ssim'] = date_facet + sdoc['date_facet_ssim'] = date_facet[0] unless date_facet.blank? + sdoc['date_full_ssim'] = date_facet[1] unless date_facet.blank? # Store SingleDate in single Solr dynamic field e.g. *_ssi (Note *_dttsi requieres dates in ISO format) # Downcase occassional dates with comments diff --git a/app/helpers/indexer/date_facet_helper.rb b/app/helpers/indexer/date_facet_helper.rb index 70c414a..9692e1a 100644 --- a/app/helpers/indexer/date_facet_helper.rb +++ b/app/helpers/indexer/date_facet_helper.rb @@ -14,8 +14,10 @@ def self.s_get_date_facets_from_solr_doc(solr_doc) # The prefix 's_' is the convention here, means retrieving data from Solr # e.g. # pry(main)> Indexer::DateFacetHelper.s_get_date_facets_from_entry('7p88cm19w') + # => [["1398", "1398"], ["1398/08/24", "1398/09/05"]] def self.s_get_date_facets_from_entry(entry_id) date_facets = [] + date_full = [] # Find linked EntryDates query = 'has_model_ssim:EntryDate AND entryDateFor_ssim:' + entry_id @@ -30,12 +32,13 @@ def self.s_get_date_facets_from_entry(entry_id) if single_date.include? 'date_tesim' single_date['date_tesim'].each do |dt| date_facets << dt.split('/')[0] + date_full << dt end end end end - date_facets + [date_facets, date_full] end end