Class: ActiveFedora::Indexing::DefaultDescriptors
- Inherits:
-
Object
- Object
- ActiveFedora::Indexing::DefaultDescriptors
- Defined in:
- lib/active_fedora/indexing/default_descriptors.rb
Class Method Summary collapse
-
.dateable ⇒ Object
Takes fields which are stored as strings, but we want indexed as dates.
- .dateable_converter ⇒ Object
-
.displayable ⇒ Object
Produces _ssm suffix.
-
.facetable ⇒ Object
Produces _sim suffix.
- .iso8601_date(value) ⇒ Object
-
.searchable ⇒ Object
The suffix produced depends on the type parameter – produces suffixes: _teim - for strings or text fields _dtim - for dates _iim - for integers.
- .searchable_converter ⇒ Object
- .searchable_field_definition ⇒ Object
- .simple ⇒ Object
-
.sortable ⇒ Object
The suffix produced depends on the type parameter – produces suffixes: _tei - for text fields _si - for strings _dti - for dates _ii - for integers.
- .sortable_field_definition ⇒ Object
-
.stored_searchable ⇒ Object
The suffix produced depends on the type parameter – produces suffixes: _tesim - for strings or text fields _dtsim - for dates _isim - for integers.
- .stored_searchable_field_definition ⇒ Object
-
.stored_sortable ⇒ Object
Fields that are both stored and sortable Produces _ssi suffix if field_type is string Produces _dtsi suffix if field_type is date.
-
.symbol ⇒ Object
Produces _ssim suffix This is useful for when you only want to match whole words, such as user/group names from the the rightsMetadata datastream.
-
.unstemmed_searchable ⇒ Object
Produces _tim suffix (used to be _unstem).
Class Method Details
.dateable ⇒ Object
Takes fields which are stored as strings, but we want indexed as dates. (e.g. “November 6th, 2012”) produces suffixes:
_dtsim - for dates
23 24 25 |
# File 'lib/active_fedora/indexing/default_descriptors.rb', line 23 def self.dateable @dateable ||= Descriptor.new(:date, :stored, :indexed, :multivalued, converter: dateable_converter) end |
.dateable_converter ⇒ Object
104 105 106 107 108 109 110 111 112 113 114 |
# File 'lib/active_fedora/indexing/default_descriptors.rb', line 104 def dateable_converter lambda do |_type| lambda do |val| begin iso8601_date(Date.parse(val)) rescue ArgumentError nil end end end end |
.displayable ⇒ Object
Produces _ssm suffix
55 56 57 |
# File 'lib/active_fedora/indexing/default_descriptors.rb', line 55 def self.displayable @displayable ||= Descriptor.new(:string, :stored, :multivalued) end |
.facetable ⇒ Object
Produces _sim suffix
28 29 30 |
# File 'lib/active_fedora/indexing/default_descriptors.rb', line 28 def self.facetable @facetable ||= Descriptor.new(:string, :indexed, :multivalued) end |
.iso8601_date(value) ⇒ Object
116 117 118 119 120 121 122 123 124 |
# File 'lib/active_fedora/indexing/default_descriptors.rb', line 116 def iso8601_date(value) if value.is_a?(Date) || value.is_a?(Time) DateTime.parse(value.to_s).to_time.utc.strftime('%Y-%m-%dT%H:%M:%SZ') elsif !value.empty? DateTime.parse(value).to_time.utc.strftime('%Y-%m-%dT%H:%M:%SZ') end rescue ArgumentError raise ArgumentError, "Unable to parse `#{value}' as a date-time object" end |
.searchable ⇒ Object
The suffix produced depends on the type parameter – produces suffixes:
_teim - for strings or text fields
_dtim - for dates
_iim - for integers
16 17 18 |
# File 'lib/active_fedora/indexing/default_descriptors.rb', line 16 def self.searchable @searchable ||= Descriptor.new(searchable_field_definition, converter: searchable_converter, requires_type: true) end |
.searchable_converter ⇒ Object
95 96 97 98 99 100 101 102 |
# File 'lib/active_fedora/indexing/default_descriptors.rb', line 95 def searchable_converter lambda do |type| case type when :date, :time ->(val) { iso8601_date(val) } end end end |
.searchable_field_definition ⇒ Object
69 70 71 72 73 74 75 |
# File 'lib/active_fedora/indexing/default_descriptors.rb', line 69 def searchable_field_definition lambda do |type| type = :text_en if [:string, :text].include?(type) # for backwards compatibility with old solr schema vals = [type, :indexed, :multivalued] vals end end |
.simple ⇒ Object
64 65 66 |
# File 'lib/active_fedora/indexing/default_descriptors.rb', line 64 def self.simple @simple ||= Descriptor.new(->(field_type) { [field_type, :indexed] }) end |
.sortable ⇒ Object
The suffix produced depends on the type parameter – produces suffixes:
_tei - for text fields
_si - for strings
_dti - for dates
_ii - for integers
43 44 45 |
# File 'lib/active_fedora/indexing/default_descriptors.rb', line 43 def self.sortable @sortable ||= Descriptor.new(sortable_field_definition, converter: searchable_converter, requires_type: true) end |
.sortable_field_definition ⇒ Object
88 89 90 91 92 93 |
# File 'lib/active_fedora/indexing/default_descriptors.rb', line 88 def sortable_field_definition lambda do |type| vals = [type, :indexed] vals end end |
.stored_searchable ⇒ Object
The suffix produced depends on the type parameter – produces suffixes:
_tesim - for strings or text fields
_dtsim - for dates
_isim - for integers
8 9 10 |
# File 'lib/active_fedora/indexing/default_descriptors.rb', line 8 def self.stored_searchable @stored_searchable ||= Descriptor.new(stored_searchable_field_definition, converter: searchable_converter, requires_type: true) end |
.stored_searchable_field_definition ⇒ Object
77 78 79 80 81 82 83 84 85 86 |
# File 'lib/active_fedora/indexing/default_descriptors.rb', line 77 def stored_searchable_field_definition lambda do |type| type = :text_en if [:string, :text].include?(type) # for backwards compatibility with old solr schema if type == :boolean [type, :indexed, :stored] else [type, :indexed, :stored, :multivalued] end end end |
.stored_sortable ⇒ Object
Fields that are both stored and sortable Produces _ssi suffix if field_type is string Produces _dtsi suffix if field_type is date
50 51 52 |
# File 'lib/active_fedora/indexing/default_descriptors.rb', line 50 def self.stored_sortable @stored_sortable ||= Descriptor.new(->(field_type) { [field_type, :stored, :indexed] }, converter: searchable_converter) end |
.symbol ⇒ Object
Produces _ssim suffix This is useful for when you only want to match whole words, such as user/group names from the the rightsMetadata datastream
34 35 36 |
# File 'lib/active_fedora/indexing/default_descriptors.rb', line 34 def self.symbol @symbol ||= Descriptor.new(:string, :stored, :indexed, :multivalued) end |
.unstemmed_searchable ⇒ Object
Produces _tim suffix (used to be _unstem)
60 61 62 |
# File 'lib/active_fedora/indexing/default_descriptors.rb', line 60 def self.unstemmed_searchable @unstemmed_searchable ||= Descriptor.new(:text, :indexed, :multivalued) end |