active-fedora 12.0.3 → 12.1.0

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.
Files changed (57) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +7 -7
  3. data/.rubocop_todo.yml +10 -100
  4. data/.travis.yml +21 -0
  5. data/CODE_OF_CONDUCT.md +36 -0
  6. data/CONTRIBUTING.md +23 -21
  7. data/Gemfile +1 -2
  8. data/History.txt +29 -29
  9. data/LICENSE +16 -14
  10. data/README.md +40 -29
  11. data/SUPPORT.md +5 -0
  12. data/active-fedora.gemspec +7 -7
  13. data/lib/active_fedora.rb +1 -1
  14. data/lib/active_fedora/aggregation/list_source.rb +3 -2
  15. data/lib/active_fedora/associations/builder/collection_association.rb +1 -0
  16. data/lib/active_fedora/associations/collection_association.rb +3 -0
  17. data/lib/active_fedora/associations/collection_proxy.rb +2 -0
  18. data/lib/active_fedora/associations/directly_contains_one_association.rb +1 -0
  19. data/lib/active_fedora/associations/indirectly_contains_association.rb +2 -0
  20. data/lib/active_fedora/associations/singular_association.rb +1 -0
  21. data/lib/active_fedora/attribute_methods.rb +1 -1
  22. data/lib/active_fedora/attribute_methods/read.rb +1 -1
  23. data/lib/active_fedora/attribute_methods/write.rb +1 -1
  24. data/lib/active_fedora/attributes.rb +1 -1
  25. data/lib/active_fedora/attributes/property_builder.rb +1 -0
  26. data/lib/active_fedora/callbacks.rb +7 -2
  27. data/lib/active_fedora/fedora.rb +8 -0
  28. data/lib/active_fedora/file.rb +7 -5
  29. data/lib/active_fedora/indexing/descendant_fetcher.rb +1 -1
  30. data/lib/active_fedora/indexing/field_mapper.rb +2 -0
  31. data/lib/active_fedora/indexing/suffix.rb +3 -1
  32. data/lib/active_fedora/inheritable_accessors.rb +1 -0
  33. data/lib/active_fedora/loadable_from_json.rb +1 -0
  34. data/lib/active_fedora/nested_attributes.rb +1 -0
  35. data/lib/active_fedora/persistence.rb +14 -1
  36. data/lib/active_fedora/persistence/null_identifier_service.rb +11 -0
  37. data/lib/active_fedora/reflection.rb +1 -1
  38. data/lib/active_fedora/relation.rb +14 -0
  39. data/lib/active_fedora/relation/delegation.rb +2 -1
  40. data/lib/active_fedora/relation/finder_methods.rb +1 -0
  41. data/lib/active_fedora/relation/merger.rb +1 -0
  42. data/lib/active_fedora/validations.rb +7 -0
  43. data/lib/active_fedora/version.rb +1 -1
  44. data/lib/active_fedora/with_metadata.rb +1 -0
  45. data/lib/active_fedora/with_metadata/metadata_node.rb +2 -1
  46. data/lib/generators/active_fedora/config/solr/templates/solr/config/schema.xml +64 -51
  47. data/lib/generators/active_fedora/config/solr/templates/solr/config/solrconfig.xml +4 -1
  48. data/lib/generators/active_fedora/model/templates/datastream.rb.erb +1 -1
  49. data/spec/integration/file_spec.rb +1 -1
  50. data/spec/integration/relation_spec.rb +43 -0
  51. data/spec/spec_helper.rb +11 -9
  52. data/spec/support/an_active_model.rb +4 -0
  53. data/spec/unit/callback_spec.rb +8 -1
  54. data/spec/unit/file_spec.rb +0 -17
  55. data/spec/unit/validations_spec.rb +18 -0
  56. metadata +28 -25
  57. data/.circleci/config.yml +0 -47
@@ -45,12 +45,14 @@ module ActiveFedora
45
45
  end
46
46
 
47
47
  def self.config
48
+ # TODO: `:symbol' usage ought to be deprecated
49
+ # See https://github.com/samvera/active_fedora/issues/1334
48
50
  @config ||= OpenStruct.new fields: [:type, :stored, :indexed, :multivalued],
49
51
  suffix_delimiter: '_',
50
52
  type_suffix: (lambda do |fields|
51
53
  type = fields.first
52
54
  case type
53
- when :string, :symbol # TODO: `:symbol' usage ought to be deprecated
55
+ when :string, :symbol
54
56
  's'
55
57
  when :text
56
58
  't'
@@ -1,5 +1,6 @@
1
1
  # Similar to ActiveSupport.class_attribute but with a setter that doesn't use the #{name}= syntax
2
2
  # This preserves backward compatibility with the API in ActiveTriples
3
+ require "active_support/core_ext/module/remove_method"
3
4
 
4
5
  module ActiveFedora
5
6
  module InheritableAccessors
@@ -131,6 +131,7 @@ module ActiveFedora
131
131
  @resource = SolrBackedResource.new(self.class)
132
132
  self.attributes = adapt_attributes(attrs)
133
133
  # TODO: Should we clear the change tracking, or make this object Read-only?
134
+ # See https://github.com/samvera/active_fedora/issues/1342
134
135
 
135
136
  yield self if block_given?
136
137
 
@@ -64,6 +64,7 @@ module ActiveFedora
64
64
  reflection.autosave = true
65
65
  define_autosave_association_callbacks(reflection)
66
66
  ## TODO this ought to work, but doesn't seem to do the class inheritance right
67
+ # See https://github.com/samvera/active_fedora/issues/1343
67
68
 
68
69
  nested_attributes_options = self.nested_attributes_options.dup
69
70
  nested_attributes_options[association_name.to_sym] = options
@@ -2,6 +2,13 @@ module ActiveFedora
2
2
  # = Active Fedora Persistence
3
3
  module Persistence
4
4
  extend ActiveSupport::Concern
5
+ extend ActiveSupport::Autoload
6
+ autoload :NullIdentifierService
7
+
8
+ included do
9
+ class_attribute :identifier_service_class
10
+ self.identifier_service_class = NullIdentifierService
11
+ end
5
12
 
6
13
  def new_record?
7
14
  return true if @ldp_source.subject.nil?
@@ -209,7 +216,13 @@ module ActiveFedora
209
216
  end
210
217
 
211
218
  # Override to tie in an ID minting service
212
- def assign_id; end
219
+ def assign_id
220
+ identifier_service.mint
221
+ end
222
+
223
+ def identifier_service
224
+ @identifier_service ||= identifier_service_class.new
225
+ end
213
226
 
214
227
  # This is only used when creating a new record. If the object doesn't have an id
215
228
  # and assign_id can mint an id for the object, then assign it to the resource.
@@ -0,0 +1,11 @@
1
+ module ActiveFedora
2
+ module Persistence
3
+ # An identifier service that doesn't mint IDs, so that the autocreated
4
+ # identifiers from Fedora will be used.
5
+ class NullIdentifierService
6
+ # Effectively a no-op
7
+ # @return [NilClass]
8
+ def mint; end
9
+ end
10
+ end
11
+ end
@@ -314,7 +314,7 @@ module ActiveFedora
314
314
  def collect_join_chain
315
315
  [self]
316
316
  end
317
- alias chain collect_join_chain # todo
317
+ alias chain collect_join_chain # TODO Remove alias, See https://github.com/samvera/active_fedora/issues/1347
318
318
 
319
319
  def has_inverse?
320
320
  inverse_name
@@ -144,6 +144,20 @@ module ActiveFedora
144
144
  @scope_for_create ||= where_values_hash.merge(create_with_value)
145
145
  end
146
146
 
147
+ def each
148
+ if loaded?
149
+ @records.each { |item| yield item } if block_given?
150
+ @records.to_enum
151
+ else
152
+ find_each(where_values) { |item| yield item } if block_given?
153
+ enum_for(:find_each, where_values)
154
+ end
155
+ end
156
+
157
+ def empty?
158
+ !any?
159
+ end
160
+
147
161
  private
148
162
 
149
163
  VALID_FIND_OPTIONS = [:order, :limit, :start, :conditions, :cast].freeze
@@ -13,7 +13,8 @@ module ActiveFedora
13
13
  :keep_if, :pop, :shift, :delete_at, :select!
14
14
  ].to_set
15
15
 
16
- delegate :length, :collect, :map, :each, :all?, :include?, :to_ary, to: :to_a
16
+ delegate :length, :map, :to_ary, to: :to_a
17
+ delegate :any?, :all?, :collect, :include?, to: :each
17
18
 
18
19
  protected
19
20
 
@@ -262,6 +262,7 @@ module ActiveFedora
262
262
  def field_name_for(key)
263
263
  if @klass.delegated_attributes.key?(key)
264
264
  # TODO: Check to see if `key' is a possible solr field for this class, if it isn't try :searchable instead
265
+ # See https://github.com/samvera/active_fedora/issues/1344
265
266
  ActiveFedora.index_field_mapper.solr_name(key, :stored_searchable, type: :string)
266
267
  elsif key == :id
267
268
  ActiveFedora.id_field
@@ -14,6 +14,7 @@ module ActiveFedora
14
14
 
15
15
  def merge
16
16
  # TODO: merge order
17
+ # See https://github.com/samvera/active_fedora/issues/1329
17
18
  relation.where_values += other.where_values
18
19
  relation
19
20
  end
@@ -92,5 +92,12 @@ module ActiveFedora
92
92
  def perform_validations(options = {}) # :nodoc:
93
93
  options[:validate] == false || valid?(options[:context])
94
94
  end
95
+
96
+ private
97
+
98
+ # Overwrite run validations to include callbacks.
99
+ def run_validations!
100
+ _run_validation_callbacks { super }
101
+ end
95
102
  end
96
103
  end
@@ -1,3 +1,3 @@
1
1
  module ActiveFedora
2
- VERSION = "12.0.3".freeze
2
+ VERSION = "12.1.0".freeze
3
3
  end
@@ -20,6 +20,7 @@ module ActiveFedora
20
20
 
21
21
  def create_or_update(*)
22
22
  return unless super && !new_record?
23
+ # TODOs captured as https://github.com/samvera/active_fedora/issues/1331
23
24
  metadata_node.metadata_uri = described_by # TODO: only necessary if the URI was < > before
24
25
  metadata_node.save # TODO if changed?
25
26
  end
@@ -15,6 +15,7 @@ module ActiveFedora
15
15
  @file = file
16
16
  super(file.uri, ldp_source.graph)
17
17
  return unless self.class.type && !type.include?(self.class.type)
18
+ attributes_changed_by_setter[:type] = true if type.present?
18
19
  # Workaround for https://github.com/ActiveTriples/ActiveTriples/issues/123
19
20
  get_values(:type) << self.class.type
20
21
  end
@@ -54,7 +55,7 @@ module ActiveFedora
54
55
 
55
56
  def changed_attributes
56
57
  super.tap do |changed|
57
- changed['type'] = true if type.present? && new_record?
58
+ changed.merge('type' => true) if type.present? && new_record?
58
59
  end
59
60
  end
60
61
 
@@ -48,43 +48,47 @@
48
48
  <schema name="Hydra Demo Index" version="1.5">
49
49
  <!-- attribute "name" is the name of this schema and is only used for display purposes.
50
50
  Applications should change this to reflect the nature of the search collection.
51
- version="1.4" is Solr's version number for the schema syntax and semantics. It should
51
+ version="1.5" is Solr's version number for the schema syntax and semantics. It should
52
52
  not normally be changed by applications.
53
53
  1.0: multiValued attribute did not exist, all fields are multiValued by nature
54
54
  1.1: multiValued attribute introduced, false by default
55
55
  1.2: omitTermFreqAndPositions attribute introduced, true by default except for text fields.
56
56
  1.3: removed optional field compress feature
57
57
  1.4: default auto-phrase (QueryParser feature) to off
58
+ 1.5: omitNorms defaults to true for primitive field types (int, float, boolean, string...)
59
+ # TODO 1.6: useDocValuesAsStored defaults to true.
60
+ # See https://github.com/samvera/active_fedora/issues/1346
58
61
  -->
59
62
 
60
63
  <types>
61
64
  <fieldType name="string" class="solr.StrField" sortMissingLast="true" />
62
- <fieldType name="boolean" class="solr.BoolField" sortMissingLast="true"/>
65
+ <fieldType name="boolean" class="solr.BoolField" sortMissingLast="true"/>
63
66
  <fieldType name="rand" class="solr.RandomSortField" omitNorms="true"/>
64
-
67
+
65
68
  <!-- Default numeric field types. -->
66
- <fieldType name="int" class="solr.TrieIntField" precisionStep="0" positionIncrementGap="0"/>
67
- <fieldType name="float" class="solr.TrieFloatField" precisionStep="0" positionIncrementGap="0"/>
68
- <fieldType name="long" class="solr.TrieLongField" precisionStep="0" positionIncrementGap="0"/>
69
- <fieldType name="double" class="solr.TrieDoubleField" precisionStep="0" positionIncrementGap="0"/>
70
-
71
- <!-- trie numeric field types for faster range queries -->
72
- <fieldType name="tint" class="solr.TrieIntField" precisionStep="8" positionIncrementGap="0"/>
73
- <fieldType name="tfloat" class="solr.TrieFloatField" precisionStep="8" positionIncrementGap="0"/>
74
- <fieldType name="tlong" class="solr.TrieLongField" precisionStep="8" positionIncrementGap="0"/>
75
- <fieldType name="tdouble" class="solr.TrieDoubleField" precisionStep="8" positionIncrementGap="0"/>
76
-
69
+ <fieldType name="int" class="solr.IntPointField" docValues="true"/>
70
+ <fieldType name="float" class="solr.FloatPointField" docValues="true"/>
71
+ <fieldType name="long" class="solr.LongPointField" docValues="true"/>
72
+ <fieldType name="double" class="solr.DoublePointField" docValues="true"/>
73
+
74
+ <!-- PointField numeric field types for faster range queries -->
75
+ <fieldType name="tint" class="solr.IntPointField" docValues="true"/>
76
+ <fieldType name="tfloat" class="solr.FloatPointField" docValues="true"/>
77
+ <fieldType name="tlong" class="solr.LongPointField" docValues="true"/>
78
+ <fieldType name="tdouble" class="solr.DoublePointField" docValues="true"/>
79
+
77
80
  <!-- The format for this date field is of the form 1995-12-31T23:59:59Z
78
81
  Optional fractional seconds are allowed: 1995-12-31T23:59:59.999Z
79
82
  -->
80
- <fieldType name="date" class="solr.TrieDateField" precisionStep="0" positionIncrementGap="0"/>
81
- <!-- A Trie based date field for faster date range queries and date faceting. -->
82
- <fieldType name="tdate" class="solr.TrieDateField" precisionStep="6" positionIncrementGap="0"/>
83
-
84
-
83
+ <fieldType name="date" class="solr.DatePointField" docValues="true"/>
84
+ <!-- A PointField based date field for faster date range queries and date faceting. -->
85
+ <fieldType name="tdate" class="solr.DatePointField" docValues="true"/>
86
+ <!-- A DateRange based date field for truly faster date range queries. -->
87
+ <fieldType name="dateRange" class="solr.DateRangeField"/>
88
+
85
89
  <!-- This point type indexes the coordinates as separate fields (subFields)
86
90
  If subFieldType is defined, it references a type, and a dynamic field
87
- definition is created matching *___<typename>. Alternately, if
91
+ definition is created matching *___<typename>. Alternately, if
88
92
  subFieldSuffix is defined, that is used to create the subFields.
89
93
  Example: if subFieldType="double", then the coordinates would be
90
94
  indexed in fields myloc_0___double,myloc_1___double.
@@ -94,17 +98,17 @@
94
98
  users normally should not need to know about them.
95
99
  -->
96
100
  <fieldType name="point" class="solr.PointType" dimension="2" subFieldSuffix="_d"/>
97
-
101
+
98
102
  <!-- A specialized field for geospatial search. If indexed, this fieldType must not be multivalued. -->
99
103
  <fieldType name="location" class="solr.LatLonType" subFieldSuffix="_coordinate"/>
100
-
104
+
101
105
  <!-- An alternative geospatial field type new to Solr 4. It supports multiValued and polygon shapes.
102
106
  For more information about this and other Spatial fields new to Solr 4, see:
103
107
  http://wiki.apache.org/solr/SolrAdaptersForLuceneSpatial4
104
108
  -->
105
109
  <fieldType name="location_rpt" class="solr.SpatialRecursivePrefixTreeFieldType"
106
110
  geo="true" distErrPct="0.025" maxDistErr="0.000009" distanceUnits="degrees" />
107
-
111
+
108
112
  <fieldType name="text" class="solr.TextField" omitNorms="false">
109
113
  <analyzer>
110
114
  <tokenizer class="solr.ICUTokenizerFactory"/>
@@ -112,7 +116,7 @@
112
116
  <filter class="solr.TrimFilterFactory"/>
113
117
  </analyzer>
114
118
  </fieldType>
115
-
119
+
116
120
  <!-- A text field that only splits on whitespace for exact matching of words -->
117
121
  <fieldType name="text_ws" class="solr.TextField" positionIncrementGap="100">
118
122
  <analyzer>
@@ -120,7 +124,7 @@
120
124
  <filter class="solr.TrimFilterFactory"/>
121
125
  </analyzer>
122
126
  </fieldType>
123
-
127
+
124
128
  <!-- single token analyzed text, for sorting. Punctuation is significant. -->
125
129
  <fieldtype name="alphaSort" class="solr.TextField" sortMissingLast="true" omitNorms="true">
126
130
  <analyzer>
@@ -129,7 +133,7 @@
129
133
  <filter class="solr.TrimFilterFactory" />
130
134
  </analyzer>
131
135
  </fieldtype>
132
-
136
+
133
137
  <!-- A text field with defaults appropriate for English -->
134
138
  <fieldType name="text_en" class="solr.TextField" positionIncrementGap="100">
135
139
  <analyzer>
@@ -144,7 +148,7 @@
144
148
  <filter class="solr.TrimFilterFactory"/>
145
149
  </analyzer>
146
150
  </fieldType>
147
-
151
+
148
152
  <!-- queries for paths match documents at that path, or in descendent paths -->
149
153
  <fieldType name="descendent_path" class="solr.TextField">
150
154
  <analyzer type="index">
@@ -154,7 +158,7 @@
154
158
  <tokenizer class="solr.KeywordTokenizerFactory" />
155
159
  </analyzer>
156
160
  </fieldType>
157
-
161
+
158
162
  <!-- queries for paths match documents at that path, or in ancestor paths -->
159
163
  <fieldType name="ancestor_path" class="solr.TextField">
160
164
  <analyzer type="index">
@@ -179,12 +183,12 @@
179
183
  <fields>
180
184
  <!-- If you remove this field, you must _also_ disable the update log in solrconfig.xml
181
185
  or Solr won't start. _version_ and update log are required for SolrCloud
182
- -->
186
+ -->
183
187
  <field name="_version_" type="long" indexed="true" stored="true"/>
184
-
188
+
185
189
  <field name="id" type="string" stored="true" indexed="true" multiValued="false" required="true"/>
186
190
  <field name="timestamp" type="date" indexed="true" stored="true" default="NOW" multiValued="false"/>
187
-
191
+
188
192
  <field name="lat" type="tdouble" stored="true" indexed="true" multiValued="false"/>
189
193
  <field name="lng" type="tdouble" stored="true" indexed="true" multiValued="false"/>
190
194
 
@@ -201,7 +205,7 @@
201
205
  <dynamicField name="*_timv" type="text" stored="false" indexed="true" multiValued="true" termVectors="true" termPositions="true" termOffsets="true"/>
202
206
  <dynamicField name="*_tsiv" type="text" stored="true" indexed="true" multiValued="false" termVectors="true" termPositions="true" termOffsets="true"/>
203
207
  <dynamicField name="*_tsimv" type="text" stored="true" indexed="true" multiValued="true" termVectors="true" termPositions="true" termOffsets="true"/>
204
-
208
+
205
209
  <!-- English text (_te...) -->
206
210
  <dynamicField name="*_tei" type="text_en" stored="false" indexed="true" multiValued="false"/>
207
211
  <dynamicField name="*_teim" type="text_en" stored="false" indexed="true" multiValued="true"/>
@@ -213,7 +217,7 @@
213
217
  <dynamicField name="*_teimv" type="text_en" stored="false" indexed="true" multiValued="true" termVectors="true" termPositions="true" termOffsets="true"/>
214
218
  <dynamicField name="*_tesiv" type="text_en" stored="true" indexed="true" multiValued="false" termVectors="true" termPositions="true" termOffsets="true"/>
215
219
  <dynamicField name="*_tesimv" type="text_en" stored="true" indexed="true" multiValued="true" termVectors="true" termPositions="true" termOffsets="true"/>
216
-
220
+
217
221
  <!-- string (_s...) -->
218
222
  <dynamicField name="*_si" type="string" stored="false" indexed="true" multiValued="false"/>
219
223
  <dynamicField name="*_sim" type="string" stored="false" indexed="true" multiValued="true"/>
@@ -222,7 +226,7 @@
222
226
  <dynamicField name="*_ssi" type="string" stored="true" indexed="true" multiValued="false"/>
223
227
  <dynamicField name="*_ssim" type="string" stored="true" indexed="true" multiValued="true"/>
224
228
  <dynamicField name="*_ssort" type="alphaSort" stored="false" indexed="true" multiValued="false"/>
225
-
229
+
226
230
  <!-- integer (_i...) -->
227
231
  <dynamicField name="*_ii" type="int" stored="false" indexed="true" multiValued="false"/>
228
232
  <dynamicField name="*_iim" type="int" stored="false" indexed="true" multiValued="true"/>
@@ -230,15 +234,15 @@
230
234
  <dynamicField name="*_ism" type="int" stored="true" indexed="false" multiValued="true"/>
231
235
  <dynamicField name="*_isi" type="int" stored="true" indexed="true" multiValued="false"/>
232
236
  <dynamicField name="*_isim" type="int" stored="true" indexed="true" multiValued="true"/>
233
-
234
- <!-- trie integer (_it...) (for faster range queries) -->
237
+
238
+ <!-- IntegerPointField (_it...) (for faster range queries) -->
235
239
  <dynamicField name="*_iti" type="tint" stored="false" indexed="true" multiValued="false"/>
236
240
  <dynamicField name="*_itim" type="tint" stored="false" indexed="true" multiValued="true"/>
237
241
  <dynamicField name="*_its" type="tint" stored="true" indexed="false" multiValued="false"/>
238
242
  <dynamicField name="*_itsm" type="tint" stored="true" indexed="false" multiValued="true"/>
239
243
  <dynamicField name="*_itsi" type="tint" stored="true" indexed="true" multiValued="false"/>
240
244
  <dynamicField name="*_itsim" type="tint" stored="true" indexed="true" multiValued="true"/>
241
-
245
+
242
246
  <!-- date (_dt...) -->
243
247
  <!-- The format for this date field is of the form 1995-12-31T23:59:59Z
244
248
  Optional fractional seconds are allowed: 1995-12-31T23:59:59.999Z -->
@@ -248,15 +252,24 @@
248
252
  <dynamicField name="*_dtsm" type="date" stored="true" indexed="false" multiValued="true"/>
249
253
  <dynamicField name="*_dtsi" type="date" stored="true" indexed="true" multiValued="false"/>
250
254
  <dynamicField name="*_dtsim" type="date" stored="true" indexed="true" multiValued="true"/>
251
-
252
- <!-- trie date (_dtt...) (for faster range queries) -->
255
+
256
+ <!-- DatePointField (_dtt...) (for faster range queries) -->
253
257
  <dynamicField name="*_dtti" type="tdate" stored="false" indexed="true" multiValued="false"/>
254
258
  <dynamicField name="*_dttim" type="tdate" stored="false" indexed="true" multiValued="true"/>
255
259
  <dynamicField name="*_dtts" type="tdate" stored="true" indexed="false" multiValued="false"/>
256
260
  <dynamicField name="*_dttsm" type="tdate" stored="true" indexed="false" multiValued="true"/>
257
261
  <dynamicField name="*_dttsi" type="tdate" stored="true" indexed="true" multiValued="false"/>
258
262
  <dynamicField name="*_dttsim" type="tdate" stored="true" indexed="true" multiValued="true"/>
259
-
263
+
264
+
265
+ <!-- date range (_dr...) (for faster AND better range queries) -->
266
+ <dynamicField name="*_dri" type="dateRange" stored="false" indexed="true" multiValued="false"/>
267
+ <dynamicField name="*_drim" type="dateRange" stored="false" indexed="true" multiValued="true"/>
268
+ <dynamicField name="*_drs" type="dateRange" stored="true" indexed="false" multiValued="false"/>
269
+ <dynamicField name="*_drsm" type="dateRange" stored="true" indexed="false" multiValued="true"/>
270
+ <dynamicField name="*_drsi" type="dateRange" stored="true" indexed="true" multiValued="false"/>
271
+ <dynamicField name="*_drsim" type="dateRange" stored="true" indexed="true" multiValued="true"/>
272
+
260
273
  <!-- long (_l...) -->
261
274
  <dynamicField name="*_li" type="long" stored="false" indexed="true" multiValued="false"/>
262
275
  <dynamicField name="*_lim" type="long" stored="false" indexed="true" multiValued="true"/>
@@ -264,15 +277,15 @@
264
277
  <dynamicField name="*_lsm" type="long" stored="true" indexed="false" multiValued="true"/>
265
278
  <dynamicField name="*_lsi" type="long" stored="true" indexed="true" multiValued="false"/>
266
279
  <dynamicField name="*_lsim" type="long" stored="true" indexed="true" multiValued="true"/>
267
-
268
- <!-- trie long (_lt...) (for faster range queries) -->
280
+
281
+ <!-- LongPointField (_lt...) (for faster range queries) -->
269
282
  <dynamicField name="*_lti" type="tlong" stored="false" indexed="true" multiValued="false"/>
270
283
  <dynamicField name="*_ltim" type="tlong" stored="false" indexed="true" multiValued="true"/>
271
284
  <dynamicField name="*_lts" type="tlong" stored="true" indexed="false" multiValued="false"/>
272
285
  <dynamicField name="*_ltsm" type="tlong" stored="true" indexed="false" multiValued="true"/>
273
286
  <dynamicField name="*_ltsi" type="tlong" stored="true" indexed="true" multiValued="false"/>
274
287
  <dynamicField name="*_ltsim" type="tlong" stored="true" indexed="true" multiValued="true"/>
275
-
288
+
276
289
  <!-- double (_db...) -->
277
290
  <dynamicField name="*_dbi" type="double" stored="false" indexed="true" multiValued="false"/>
278
291
  <dynamicField name="*_dbim" type="double" stored="false" indexed="true" multiValued="true"/>
@@ -280,15 +293,15 @@
280
293
  <dynamicField name="*_dbsm" type="double" stored="true" indexed="false" multiValued="true"/>
281
294
  <dynamicField name="*_dbsi" type="double" stored="true" indexed="true" multiValued="false"/>
282
295
  <dynamicField name="*_dbsim" type="double" stored="true" indexed="true" multiValued="true"/>
283
-
284
- <!-- trie double (_dbt...) (for faster range queries) -->
296
+
297
+ <!-- DoublePointField (_dbt...) (for faster range queries) -->
285
298
  <dynamicField name="*_dbti" type="tdouble" stored="false" indexed="true" multiValued="false"/>
286
299
  <dynamicField name="*_dbtim" type="tdouble" stored="false" indexed="true" multiValued="true"/>
287
300
  <dynamicField name="*_dbts" type="tdouble" stored="true" indexed="false" multiValued="false"/>
288
301
  <dynamicField name="*_dbtsm" type="tdouble" stored="true" indexed="false" multiValued="true"/>
289
302
  <dynamicField name="*_dbtsi" type="tdouble" stored="true" indexed="true" multiValued="false"/>
290
303
  <dynamicField name="*_dbtsim" type="tdouble" stored="true" indexed="true" multiValued="true"/>
291
-
304
+
292
305
  <!-- float (_f...) -->
293
306
  <dynamicField name="*_fi" type="float" stored="false" indexed="true" multiValued="false"/>
294
307
  <dynamicField name="*_fim" type="float" stored="false" indexed="true" multiValued="true"/>
@@ -296,20 +309,20 @@
296
309
  <dynamicField name="*_fsm" type="float" stored="true" indexed="false" multiValued="true"/>
297
310
  <dynamicField name="*_fsi" type="float" stored="true" indexed="true" multiValued="false"/>
298
311
  <dynamicField name="*_fsim" type="float" stored="true" indexed="true" multiValued="true"/>
299
-
300
- <!-- trie float (_ft...) (for faster range queries) -->
312
+
313
+ <!-- FloatPointField (_ft...) (for faster range queries) -->
301
314
  <dynamicField name="*_fti" type="tfloat" stored="false" indexed="true" multiValued="false"/>
302
315
  <dynamicField name="*_ftim" type="tfloat" stored="false" indexed="true" multiValued="true"/>
303
316
  <dynamicField name="*_fts" type="tfloat" stored="true" indexed="false" multiValued="false"/>
304
317
  <dynamicField name="*_ftsm" type="tfloat" stored="true" indexed="false" multiValued="true"/>
305
318
  <dynamicField name="*_ftsi" type="tfloat" stored="true" indexed="true" multiValued="false"/>
306
319
  <dynamicField name="*_ftsim" type="tfloat" stored="true" indexed="true" multiValued="true"/>
307
-
320
+
308
321
  <!-- boolean (_b...) -->
309
322
  <dynamicField name="*_bi" type="boolean" stored="false" indexed="true" multiValued="false"/>
310
323
  <dynamicField name="*_bs" type="boolean" stored="true" indexed="false" multiValued="false"/>
311
324
  <dynamicField name="*_bsi" type="boolean" stored="true" indexed="true" multiValued="false"/>
312
-
325
+
313
326
  <!-- Type used to index the lat and lon components for the "location" FieldType -->
314
327
  <dynamicField name="*_coordinate" type="tdouble" indexed="true" stored="false" />
315
328
 
@@ -329,7 +342,7 @@
329
342
 
330
343
  </fields>
331
344
 
332
- <!-- Field to use to determine and enforce document uniqueness.
345
+ <!-- Field to use to determine and enforce document uniqueness.
333
346
  Unless this field is marked with required="false", it will be a required field
334
347
  -->
335
348
  <uniqueKey>id</uniqueKey>