active-fedora 11.5.6 → 12.0.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.
- checksums.yaml +5 -5
- data/.rubocop.yml +4 -0
- data/.travis.yml +15 -0
- data/Gemfile +1 -3
- data/README.md +10 -13
- data/active-fedora.gemspec +7 -9
- data/lib/active_fedora.rb +3 -5
- data/lib/active_fedora/associations/collection_proxy.rb +0 -2
- data/lib/active_fedora/attributes/property_builder.rb +3 -1
- data/lib/active_fedora/caching_connection.rb +1 -1
- data/lib/active_fedora/errors.rb +4 -0
- data/lib/active_fedora/fedora.rb +5 -0
- data/lib/active_fedora/file.rb +3 -1
- data/lib/active_fedora/file/attributes.rb +5 -0
- data/lib/active_fedora/file_io.rb +120 -0
- data/lib/active_fedora/indexing.rb +6 -1
- data/lib/active_fedora/indexing/default_descriptors.rb +128 -0
- data/lib/active_fedora/indexing/descendant_fetcher.rb +22 -18
- data/lib/active_fedora/indexing/descriptor.rb +44 -0
- data/lib/active_fedora/indexing/field_mapper.rb +146 -0
- data/lib/active_fedora/indexing/inserter.rb +40 -0
- data/lib/active_fedora/indexing/suffix.rb +81 -0
- data/lib/active_fedora/indexing_service.rb +2 -2
- data/lib/active_fedora/ldp_resource.rb +1 -2
- data/lib/active_fedora/railtie.rb +0 -1
- data/lib/active_fedora/rdf/field_map_entry.rb +2 -2
- data/lib/active_fedora/rdf/indexing_service.rb +6 -6
- data/lib/active_fedora/relation.rb +0 -14
- data/lib/active_fedora/relation/delegation.rb +1 -2
- data/lib/active_fedora/relation/finder_methods.rb +19 -39
- data/lib/active_fedora/version.rb +1 -1
- data/lib/generators/active_fedora/config/fedora/templates/.fcrepo_wrapper +1 -1
- data/lib/generators/active_fedora/config/solr/templates/solr.yml +3 -3
- data/lib/generators/active_fedora/config/solr/templates/solr/config/schema.xml +34 -33
- data/spec/integration/base_spec.rb +39 -35
- data/spec/integration/indexing/descendant_fetcher_spec.rb +64 -0
- data/spec/integration/relation_spec.rb +1 -39
- data/spec/integration/scoping_spec.rb +17 -11
- data/spec/spec_helper.rb +1 -1
- data/spec/unit/active_fedora/indexing/inserter_spec.rb +30 -0
- data/spec/unit/attributes_spec.rb +3 -7
- data/spec/unit/fedora_spec.rb +12 -0
- data/spec/unit/file_configurator_spec.rb +0 -9
- data/spec/unit/file_io_spec.rb +137 -0
- data/spec/unit/file_spec.rb +14 -17
- metadata +26 -30
- data/.circleci/config.yml +0 -43
@@ -5,7 +5,6 @@ module ActiveFedora::RDF
|
|
5
5
|
# @see ActiveFedora::Indexing
|
6
6
|
# @see ActiveFedora::IndexingService
|
7
7
|
class IndexingService
|
8
|
-
include Solrizer::Common
|
9
8
|
attr_reader :object, :index_config
|
10
9
|
|
11
10
|
# @param [#resource, #rdf_subject] obj the object to build an solr document for. Its class must respond to 'properties'
|
@@ -43,13 +42,14 @@ module ActiveFedora::RDF
|
|
43
42
|
# Override this in order to allow one field to be expanded into more than one:
|
44
43
|
# example:
|
45
44
|
# def append_to_solr_doc(solr_doc, field_key, field_info, val)
|
46
|
-
#
|
47
|
-
#
|
45
|
+
# ActiveFedora.index_field_mapper.set_field(solr_doc, 'lcsh_subject_uri', val.to_uri, :symbol)
|
46
|
+
# ActiveFedora.index_field_mapper.set_field(solr_doc, 'lcsh_subject_label', val.to_label, :searchable)
|
48
47
|
# end
|
49
48
|
def append_to_solr_doc(solr_doc, solr_field_key, field_info, val)
|
50
|
-
|
51
|
-
|
52
|
-
|
49
|
+
ActiveFedora::Indexing::Inserter.create_and_insert_terms(solr_field_key,
|
50
|
+
solr_document_field_value(val),
|
51
|
+
field_info.behaviors,
|
52
|
+
solr_doc)
|
53
53
|
end
|
54
54
|
|
55
55
|
def solr_document_field_name(field_key, prefix_method)
|
@@ -144,20 +144,6 @@ 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
|
-
|
161
147
|
private
|
162
148
|
|
163
149
|
VALID_FIND_OPTIONS = [:order, :limit, :start, :conditions, :cast].freeze
|
@@ -13,8 +13,7 @@ module ActiveFedora
|
|
13
13
|
:keep_if, :pop, :shift, :delete_at, :select!
|
14
14
|
].to_set
|
15
15
|
|
16
|
-
delegate :length, :map, :to_ary, to: :to_a
|
17
|
-
delegate :any?, :all?, :collect, :include?, to: :each
|
16
|
+
delegate :length, :collect, :map, :each, :all?, :include?, :to_ary, to: :to_a
|
18
17
|
|
19
18
|
protected
|
20
19
|
|
@@ -1,7 +1,6 @@
|
|
1
1
|
module ActiveFedora
|
2
2
|
module FinderMethods
|
3
|
-
# Returns the first
|
4
|
-
#
|
3
|
+
# Returns the first record that was found.
|
5
4
|
# @example
|
6
5
|
# Person.where(name_t: 'Jones').first
|
7
6
|
# => #<Person @id="foo:123" @name='Jones' ... >
|
@@ -15,7 +14,6 @@ module ActiveFedora
|
|
15
14
|
|
16
15
|
# Returns the last record sorted by id. ID was chosen because this mimics
|
17
16
|
# how ActiveRecord would achieve the same behavior.
|
18
|
-
#
|
19
17
|
# @example
|
20
18
|
# Person.where(name_t: 'Jones').last
|
21
19
|
# => #<Person @id="foo:123" @name='Jones' ... >
|
@@ -27,12 +25,10 @@ module ActiveFedora
|
|
27
25
|
end
|
28
26
|
end
|
29
27
|
|
30
|
-
#
|
31
|
-
# called on
|
32
|
-
#
|
33
|
-
# @param[String,Hash] args either an id or a hash of conditions
|
28
|
+
# @param [String, Hash] args either an id or a hash of conditions
|
34
29
|
# @option args [Integer] :rows when :all is passed, the maximum number of rows to load from solr
|
35
30
|
# @option args [Boolean] :cast when true, examine the model and cast it to the first known cModel
|
31
|
+
# @return [Array] objects of the Class that +find+ is being called on
|
36
32
|
def find(*args)
|
37
33
|
return to_a.find { |*block_args| yield(*block_args) } if block_given?
|
38
34
|
options = args.extract_options!
|
@@ -71,10 +67,9 @@ module ActiveFedora
|
|
71
67
|
end
|
72
68
|
end
|
73
69
|
|
74
|
-
# Returns true if object having the id or matching the conditions exists in the repository
|
75
70
|
# Returns false if param is false (or nil)
|
76
|
-
# @param[ActiveFedora::Base, String, Hash] object, id or hash of conditions
|
77
|
-
# @return[
|
71
|
+
# @param [ActiveFedora::Base, String, Hash] object, id or hash of conditions
|
72
|
+
# @return [Boolean] true if object having the id or matching the conditions exists in the repository
|
78
73
|
def exists?(conditions)
|
79
74
|
conditions = conditions.id if Base === conditions
|
80
75
|
return false unless conditions
|
@@ -86,15 +81,13 @@ module ActiveFedora
|
|
86
81
|
else
|
87
82
|
raise ArgumentError, "`conditions' argument must be ActiveFedora::Base, String, or Hash: #{conditions.inspect}"
|
88
83
|
end
|
89
|
-
rescue ActiveFedora::ObjectNotFoundError, Ldp::Gone
|
84
|
+
rescue ActiveFedora::ObjectNotFoundError, ActiveFedora::ModelMismatch, Ldp::Gone
|
90
85
|
false
|
91
86
|
end
|
92
87
|
|
93
88
|
# Returns a solr result matching the supplied conditions
|
94
|
-
# @param[Hash,String] conditions
|
95
|
-
# hash
|
96
|
-
# provided, this method will generate conditions based simple equality
|
97
|
-
# combined using the boolean AND operator.
|
89
|
+
# @param [Hash, String] conditions represention of the query part of an solr statement.
|
90
|
+
# If a hash is provided, query will combine based on simple equality using the boolean AND operator.
|
98
91
|
# @param [Hash] options
|
99
92
|
# @option opts [Array] :sort a list of fields to sort by
|
100
93
|
# @option opts [Array] :rows number of rows to return
|
@@ -110,11 +103,9 @@ module ActiveFedora
|
|
110
103
|
def search_by_id(id, opts = {})
|
111
104
|
opts[:rows] = 1
|
112
105
|
result = search_with_conditions({ id: id }, opts)
|
113
|
-
|
114
106
|
if result.empty?
|
115
107
|
raise ActiveFedora::ObjectNotFoundError, "Object '#{id}' not found in solr"
|
116
108
|
end
|
117
|
-
|
118
109
|
result.first
|
119
110
|
end
|
120
111
|
|
@@ -129,7 +120,7 @@ module ActiveFedora
|
|
129
120
|
group.each do |hit|
|
130
121
|
begin
|
131
122
|
yield(load_from_fedora(hit[ActiveFedora.id_field], cast))
|
132
|
-
rescue Ldp::Gone
|
123
|
+
rescue Ldp::Gone, ActiveFedora::ObjectNotFoundError
|
133
124
|
ActiveFedora::Base.logger.error "Although #{hit[ActiveFedora.id_field]} was found in Solr, it doesn't seem to exist in Fedora. The index is out of synch."
|
134
125
|
end
|
135
126
|
end
|
@@ -141,14 +132,14 @@ module ActiveFedora
|
|
141
132
|
# option; the default is 1000.
|
142
133
|
#
|
143
134
|
# Returns a solr result matching the supplied conditions
|
144
|
-
# @param[Hash] conditions solr conditions to match
|
145
|
-
# @param[Hash] options
|
135
|
+
# @param [Hash] conditions solr conditions to match
|
136
|
+
# @param [Hash] options
|
146
137
|
# @option opts [Array] :sort a list of fields to sort by
|
147
138
|
# @option opts [Array] :rows number of rows to return
|
148
139
|
#
|
149
140
|
# @example
|
150
141
|
# Person.search_in_batches('age_t'=>'21', {:batch_size=>50}) do |group|
|
151
|
-
#
|
142
|
+
# group.each { |person| puts person['name_t'] }
|
152
143
|
# end
|
153
144
|
def search_in_batches(conditions, opts = {})
|
154
145
|
opts[:q] = create_query(conditions)
|
@@ -169,11 +160,10 @@ module ActiveFedora
|
|
169
160
|
end
|
170
161
|
end
|
171
162
|
|
172
|
-
# Retrieve the Fedora object with the given id
|
173
|
-
# Raises a ObjectNotFoundError if the object is not found.
|
163
|
+
# Retrieve the Fedora object with the given id
|
174
164
|
# @param [String] id of the object to load
|
175
165
|
# @param [Boolean] cast when true, cast the found object to the class of the first known model defined in it's RELS-EXT
|
176
|
-
#
|
166
|
+
# @raise [ObjectNotFoundError] if the object is not found
|
177
167
|
# @example because the object hydra:dataset1 asserts it is a Dataset (hasModel http://fedora.info/definitions/v4/model#Dataset), return a Dataset object (not a Book).
|
178
168
|
# Book.find_one("hydra:dataset1")
|
179
169
|
def find_one(id, cast = nil)
|
@@ -190,37 +180,27 @@ module ActiveFedora
|
|
190
180
|
|
191
181
|
def load_from_fedora(id, cast)
|
192
182
|
raise ActiveFedora::ObjectNotFoundError, "No ID provided for #{klass.name}." if id.empty?
|
193
|
-
|
194
183
|
resource = ActiveFedora.fedora.ldp_resource_service.build(klass, id)
|
195
184
|
raise_record_not_found_exception!(id) if resource.new?
|
196
185
|
class_to_load(resource, cast).allocate.init_with_resource(resource) # Triggers the find callback
|
197
186
|
end
|
198
187
|
|
199
188
|
def raise_record_not_found_exception!(id)
|
200
|
-
|
201
|
-
raise ActiveFedora::ObjectNotFoundError, "Couldn't find #{name} with 'id'=#{id}"
|
189
|
+
raise ActiveFedora::ObjectNotFoundError, "Couldn't find #{@klass.name} with 'id'=#{id}"
|
202
190
|
end
|
203
191
|
|
204
192
|
def class_to_load(resource, cast)
|
205
193
|
if @klass == ActiveFedora::Base && cast == false
|
206
194
|
ActiveFedora::Base
|
207
195
|
else
|
208
|
-
resource_class =
|
209
|
-
unless
|
210
|
-
raise ActiveFedora::
|
196
|
+
resource_class = ActiveFedora.model_mapper.classifier(resource).best_model
|
197
|
+
unless resource_class <= @klass
|
198
|
+
raise ActiveFedora::ModelMismatch, "Expected #{@klass}. Got: #{resource_class}"
|
211
199
|
end
|
212
200
|
resource_class
|
213
201
|
end
|
214
202
|
end
|
215
203
|
|
216
|
-
def has_model_value(resource)
|
217
|
-
ActiveFedora.model_mapper.classifier(resource).best_model
|
218
|
-
end
|
219
|
-
|
220
|
-
def equivalent_class?(other_class)
|
221
|
-
other_class <= @klass
|
222
|
-
end
|
223
|
-
|
224
204
|
def find_with_ids(ids, cast)
|
225
205
|
expects_array = ids.first.is_a?(Array)
|
226
206
|
return ids.first if expects_array && ids.first.empty?
|
@@ -245,7 +225,7 @@ module ActiveFedora
|
|
245
225
|
private
|
246
226
|
|
247
227
|
# Returns a solr query for the supplied conditions
|
248
|
-
# @param[Hash,String,Array] conditions solr conditions to match
|
228
|
+
# @param [Hash, String, Array] conditions solr conditions to match
|
249
229
|
# @return [String]
|
250
230
|
def create_query(conditions)
|
251
231
|
build_query(build_where(conditions))
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# This is a sample config file that points to a solr server for each environment
|
2
2
|
development:
|
3
|
-
url: http://127.0.0.1
|
3
|
+
url: <%= ENV['SOLR_URL'] || "http://127.0.0.1:#{ENV.fetch('SOLR_DEVELOPMENT_PORT', 8983)}/solr/hydra-development" %>
|
4
4
|
test:
|
5
|
-
url: http://127.0.0.1
|
5
|
+
url: <%= ENV['SOLR_URL'] || "http://127.0.0.1:#{ENV.fetch('SOLR_TEST_PORT', 8985)}/solr/hydra-test" %>
|
6
6
|
production:
|
7
|
-
url: http://your.production.server:8080/bl_solr/core0
|
7
|
+
url: <%= ENV['SOLR_URL'] || "http://your.production.server:8080/bl_solr/core0" %>
|
@@ -59,32 +59,32 @@
|
|
59
59
|
|
60
60
|
<types>
|
61
61
|
<fieldType name="string" class="solr.StrField" sortMissingLast="true" />
|
62
|
-
<fieldType name="boolean" class="solr.BoolField" sortMissingLast="true"/>
|
62
|
+
<fieldType name="boolean" class="solr.BoolField" sortMissingLast="true"/>
|
63
63
|
<fieldType name="rand" class="solr.RandomSortField" omitNorms="true"/>
|
64
|
-
|
64
|
+
|
65
65
|
<!-- Default numeric field types. -->
|
66
66
|
<fieldType name="int" class="solr.TrieIntField" precisionStep="0" positionIncrementGap="0"/>
|
67
67
|
<fieldType name="float" class="solr.TrieFloatField" precisionStep="0" positionIncrementGap="0"/>
|
68
68
|
<fieldType name="long" class="solr.TrieLongField" precisionStep="0" positionIncrementGap="0"/>
|
69
69
|
<fieldType name="double" class="solr.TrieDoubleField" precisionStep="0" positionIncrementGap="0"/>
|
70
|
-
|
70
|
+
|
71
71
|
<!-- trie numeric field types for faster range queries -->
|
72
72
|
<fieldType name="tint" class="solr.TrieIntField" precisionStep="8" positionIncrementGap="0"/>
|
73
73
|
<fieldType name="tfloat" class="solr.TrieFloatField" precisionStep="8" positionIncrementGap="0"/>
|
74
74
|
<fieldType name="tlong" class="solr.TrieLongField" precisionStep="8" positionIncrementGap="0"/>
|
75
75
|
<fieldType name="tdouble" class="solr.TrieDoubleField" precisionStep="8" positionIncrementGap="0"/>
|
76
|
-
|
76
|
+
|
77
77
|
<!-- The format for this date field is of the form 1995-12-31T23:59:59Z
|
78
78
|
Optional fractional seconds are allowed: 1995-12-31T23:59:59.999Z
|
79
79
|
-->
|
80
80
|
<fieldType name="date" class="solr.TrieDateField" precisionStep="0" positionIncrementGap="0"/>
|
81
81
|
<!-- A Trie based date field for faster date range queries and date faceting. -->
|
82
82
|
<fieldType name="tdate" class="solr.TrieDateField" precisionStep="6" positionIncrementGap="0"/>
|
83
|
-
|
84
|
-
|
83
|
+
|
84
|
+
|
85
85
|
<!-- This point type indexes the coordinates as separate fields (subFields)
|
86
86
|
If subFieldType is defined, it references a type, and a dynamic field
|
87
|
-
definition is created matching *___<typename>. Alternately, if
|
87
|
+
definition is created matching *___<typename>. Alternately, if
|
88
88
|
subFieldSuffix is defined, that is used to create the subFields.
|
89
89
|
Example: if subFieldType="double", then the coordinates would be
|
90
90
|
indexed in fields myloc_0___double,myloc_1___double.
|
@@ -94,17 +94,17 @@
|
|
94
94
|
users normally should not need to know about them.
|
95
95
|
-->
|
96
96
|
<fieldType name="point" class="solr.PointType" dimension="2" subFieldSuffix="_d"/>
|
97
|
-
|
97
|
+
|
98
98
|
<!-- A specialized field for geospatial search. If indexed, this fieldType must not be multivalued. -->
|
99
99
|
<fieldType name="location" class="solr.LatLonType" subFieldSuffix="_coordinate"/>
|
100
|
-
|
100
|
+
|
101
101
|
<!-- An alternative geospatial field type new to Solr 4. It supports multiValued and polygon shapes.
|
102
102
|
For more information about this and other Spatial fields new to Solr 4, see:
|
103
103
|
http://wiki.apache.org/solr/SolrAdaptersForLuceneSpatial4
|
104
104
|
-->
|
105
105
|
<fieldType name="location_rpt" class="solr.SpatialRecursivePrefixTreeFieldType"
|
106
106
|
geo="true" distErrPct="0.025" maxDistErr="0.000009" distanceUnits="degrees" />
|
107
|
-
|
107
|
+
|
108
108
|
<fieldType name="text" class="solr.TextField" omitNorms="false">
|
109
109
|
<analyzer>
|
110
110
|
<tokenizer class="solr.ICUTokenizerFactory"/>
|
@@ -112,7 +112,7 @@
|
|
112
112
|
<filter class="solr.TrimFilterFactory"/>
|
113
113
|
</analyzer>
|
114
114
|
</fieldType>
|
115
|
-
|
115
|
+
|
116
116
|
<!-- A text field that only splits on whitespace for exact matching of words -->
|
117
117
|
<fieldType name="text_ws" class="solr.TextField" positionIncrementGap="100">
|
118
118
|
<analyzer>
|
@@ -120,7 +120,7 @@
|
|
120
120
|
<filter class="solr.TrimFilterFactory"/>
|
121
121
|
</analyzer>
|
122
122
|
</fieldType>
|
123
|
-
|
123
|
+
|
124
124
|
<!-- single token analyzed text, for sorting. Punctuation is significant. -->
|
125
125
|
<fieldtype name="alphaSort" class="solr.TextField" sortMissingLast="true" omitNorms="true">
|
126
126
|
<analyzer>
|
@@ -129,7 +129,7 @@
|
|
129
129
|
<filter class="solr.TrimFilterFactory" />
|
130
130
|
</analyzer>
|
131
131
|
</fieldtype>
|
132
|
-
|
132
|
+
|
133
133
|
<!-- A text field with defaults appropriate for English -->
|
134
134
|
<fieldType name="text_en" class="solr.TextField" positionIncrementGap="100">
|
135
135
|
<analyzer>
|
@@ -144,7 +144,7 @@
|
|
144
144
|
<filter class="solr.TrimFilterFactory"/>
|
145
145
|
</analyzer>
|
146
146
|
</fieldType>
|
147
|
-
|
147
|
+
|
148
148
|
<!-- queries for paths match documents at that path, or in descendent paths -->
|
149
149
|
<fieldType name="descendent_path" class="solr.TextField">
|
150
150
|
<analyzer type="index">
|
@@ -154,7 +154,7 @@
|
|
154
154
|
<tokenizer class="solr.KeywordTokenizerFactory" />
|
155
155
|
</analyzer>
|
156
156
|
</fieldType>
|
157
|
-
|
157
|
+
|
158
158
|
<!-- queries for paths match documents at that path, or in ancestor paths -->
|
159
159
|
<fieldType name="ancestor_path" class="solr.TextField">
|
160
160
|
<analyzer type="index">
|
@@ -168,6 +168,7 @@
|
|
168
168
|
<fieldType class="solr.TextField" name="textSuggest" positionIncrementGap="100">
|
169
169
|
<analyzer>
|
170
170
|
<tokenizer class="solr.KeywordTokenizerFactory"/>
|
171
|
+
<filter class="solr.StandardFilterFactory"/>
|
171
172
|
<filter class="solr.LowerCaseFilterFactory"/>
|
172
173
|
<filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
|
173
174
|
</analyzer>
|
@@ -178,12 +179,12 @@
|
|
178
179
|
<fields>
|
179
180
|
<!-- If you remove this field, you must _also_ disable the update log in solrconfig.xml
|
180
181
|
or Solr won't start. _version_ and update log are required for SolrCloud
|
181
|
-
-->
|
182
|
+
-->
|
182
183
|
<field name="_version_" type="long" indexed="true" stored="true"/>
|
183
|
-
|
184
|
+
|
184
185
|
<field name="id" type="string" stored="true" indexed="true" multiValued="false" required="true"/>
|
185
186
|
<field name="timestamp" type="date" indexed="true" stored="true" default="NOW" multiValued="false"/>
|
186
|
-
|
187
|
+
|
187
188
|
<field name="lat" type="tdouble" stored="true" indexed="true" multiValued="false"/>
|
188
189
|
<field name="lng" type="tdouble" stored="true" indexed="true" multiValued="false"/>
|
189
190
|
|
@@ -200,7 +201,7 @@
|
|
200
201
|
<dynamicField name="*_timv" type="text" stored="false" indexed="true" multiValued="true" termVectors="true" termPositions="true" termOffsets="true"/>
|
201
202
|
<dynamicField name="*_tsiv" type="text" stored="true" indexed="true" multiValued="false" termVectors="true" termPositions="true" termOffsets="true"/>
|
202
203
|
<dynamicField name="*_tsimv" type="text" stored="true" indexed="true" multiValued="true" termVectors="true" termPositions="true" termOffsets="true"/>
|
203
|
-
|
204
|
+
|
204
205
|
<!-- English text (_te...) -->
|
205
206
|
<dynamicField name="*_tei" type="text_en" stored="false" indexed="true" multiValued="false"/>
|
206
207
|
<dynamicField name="*_teim" type="text_en" stored="false" indexed="true" multiValued="true"/>
|
@@ -212,7 +213,7 @@
|
|
212
213
|
<dynamicField name="*_teimv" type="text_en" stored="false" indexed="true" multiValued="true" termVectors="true" termPositions="true" termOffsets="true"/>
|
213
214
|
<dynamicField name="*_tesiv" type="text_en" stored="true" indexed="true" multiValued="false" termVectors="true" termPositions="true" termOffsets="true"/>
|
214
215
|
<dynamicField name="*_tesimv" type="text_en" stored="true" indexed="true" multiValued="true" termVectors="true" termPositions="true" termOffsets="true"/>
|
215
|
-
|
216
|
+
|
216
217
|
<!-- string (_s...) -->
|
217
218
|
<dynamicField name="*_si" type="string" stored="false" indexed="true" multiValued="false"/>
|
218
219
|
<dynamicField name="*_sim" type="string" stored="false" indexed="true" multiValued="true"/>
|
@@ -221,7 +222,7 @@
|
|
221
222
|
<dynamicField name="*_ssi" type="string" stored="true" indexed="true" multiValued="false"/>
|
222
223
|
<dynamicField name="*_ssim" type="string" stored="true" indexed="true" multiValued="true"/>
|
223
224
|
<dynamicField name="*_ssort" type="alphaSort" stored="false" indexed="true" multiValued="false"/>
|
224
|
-
|
225
|
+
|
225
226
|
<!-- integer (_i...) -->
|
226
227
|
<dynamicField name="*_ii" type="int" stored="false" indexed="true" multiValued="false"/>
|
227
228
|
<dynamicField name="*_iim" type="int" stored="false" indexed="true" multiValued="true"/>
|
@@ -229,7 +230,7 @@
|
|
229
230
|
<dynamicField name="*_ism" type="int" stored="true" indexed="false" multiValued="true"/>
|
230
231
|
<dynamicField name="*_isi" type="int" stored="true" indexed="true" multiValued="false"/>
|
231
232
|
<dynamicField name="*_isim" type="int" stored="true" indexed="true" multiValued="true"/>
|
232
|
-
|
233
|
+
|
233
234
|
<!-- trie integer (_it...) (for faster range queries) -->
|
234
235
|
<dynamicField name="*_iti" type="tint" stored="false" indexed="true" multiValued="false"/>
|
235
236
|
<dynamicField name="*_itim" type="tint" stored="false" indexed="true" multiValued="true"/>
|
@@ -237,7 +238,7 @@
|
|
237
238
|
<dynamicField name="*_itsm" type="tint" stored="true" indexed="false" multiValued="true"/>
|
238
239
|
<dynamicField name="*_itsi" type="tint" stored="true" indexed="true" multiValued="false"/>
|
239
240
|
<dynamicField name="*_itsim" type="tint" stored="true" indexed="true" multiValued="true"/>
|
240
|
-
|
241
|
+
|
241
242
|
<!-- date (_dt...) -->
|
242
243
|
<!-- The format for this date field is of the form 1995-12-31T23:59:59Z
|
243
244
|
Optional fractional seconds are allowed: 1995-12-31T23:59:59.999Z -->
|
@@ -247,7 +248,7 @@
|
|
247
248
|
<dynamicField name="*_dtsm" type="date" stored="true" indexed="false" multiValued="true"/>
|
248
249
|
<dynamicField name="*_dtsi" type="date" stored="true" indexed="true" multiValued="false"/>
|
249
250
|
<dynamicField name="*_dtsim" type="date" stored="true" indexed="true" multiValued="true"/>
|
250
|
-
|
251
|
+
|
251
252
|
<!-- trie date (_dtt...) (for faster range queries) -->
|
252
253
|
<dynamicField name="*_dtti" type="tdate" stored="false" indexed="true" multiValued="false"/>
|
253
254
|
<dynamicField name="*_dttim" type="tdate" stored="false" indexed="true" multiValued="true"/>
|
@@ -255,7 +256,7 @@
|
|
255
256
|
<dynamicField name="*_dttsm" type="tdate" stored="true" indexed="false" multiValued="true"/>
|
256
257
|
<dynamicField name="*_dttsi" type="tdate" stored="true" indexed="true" multiValued="false"/>
|
257
258
|
<dynamicField name="*_dttsim" type="tdate" stored="true" indexed="true" multiValued="true"/>
|
258
|
-
|
259
|
+
|
259
260
|
<!-- long (_l...) -->
|
260
261
|
<dynamicField name="*_li" type="long" stored="false" indexed="true" multiValued="false"/>
|
261
262
|
<dynamicField name="*_lim" type="long" stored="false" indexed="true" multiValued="true"/>
|
@@ -263,7 +264,7 @@
|
|
263
264
|
<dynamicField name="*_lsm" type="long" stored="true" indexed="false" multiValued="true"/>
|
264
265
|
<dynamicField name="*_lsi" type="long" stored="true" indexed="true" multiValued="false"/>
|
265
266
|
<dynamicField name="*_lsim" type="long" stored="true" indexed="true" multiValued="true"/>
|
266
|
-
|
267
|
+
|
267
268
|
<!-- trie long (_lt...) (for faster range queries) -->
|
268
269
|
<dynamicField name="*_lti" type="tlong" stored="false" indexed="true" multiValued="false"/>
|
269
270
|
<dynamicField name="*_ltim" type="tlong" stored="false" indexed="true" multiValued="true"/>
|
@@ -271,7 +272,7 @@
|
|
271
272
|
<dynamicField name="*_ltsm" type="tlong" stored="true" indexed="false" multiValued="true"/>
|
272
273
|
<dynamicField name="*_ltsi" type="tlong" stored="true" indexed="true" multiValued="false"/>
|
273
274
|
<dynamicField name="*_ltsim" type="tlong" stored="true" indexed="true" multiValued="true"/>
|
274
|
-
|
275
|
+
|
275
276
|
<!-- double (_db...) -->
|
276
277
|
<dynamicField name="*_dbi" type="double" stored="false" indexed="true" multiValued="false"/>
|
277
278
|
<dynamicField name="*_dbim" type="double" stored="false" indexed="true" multiValued="true"/>
|
@@ -279,7 +280,7 @@
|
|
279
280
|
<dynamicField name="*_dbsm" type="double" stored="true" indexed="false" multiValued="true"/>
|
280
281
|
<dynamicField name="*_dbsi" type="double" stored="true" indexed="true" multiValued="false"/>
|
281
282
|
<dynamicField name="*_dbsim" type="double" stored="true" indexed="true" multiValued="true"/>
|
282
|
-
|
283
|
+
|
283
284
|
<!-- trie double (_dbt...) (for faster range queries) -->
|
284
285
|
<dynamicField name="*_dbti" type="tdouble" stored="false" indexed="true" multiValued="false"/>
|
285
286
|
<dynamicField name="*_dbtim" type="tdouble" stored="false" indexed="true" multiValued="true"/>
|
@@ -287,7 +288,7 @@
|
|
287
288
|
<dynamicField name="*_dbtsm" type="tdouble" stored="true" indexed="false" multiValued="true"/>
|
288
289
|
<dynamicField name="*_dbtsi" type="tdouble" stored="true" indexed="true" multiValued="false"/>
|
289
290
|
<dynamicField name="*_dbtsim" type="tdouble" stored="true" indexed="true" multiValued="true"/>
|
290
|
-
|
291
|
+
|
291
292
|
<!-- float (_f...) -->
|
292
293
|
<dynamicField name="*_fi" type="float" stored="false" indexed="true" multiValued="false"/>
|
293
294
|
<dynamicField name="*_fim" type="float" stored="false" indexed="true" multiValued="true"/>
|
@@ -295,7 +296,7 @@
|
|
295
296
|
<dynamicField name="*_fsm" type="float" stored="true" indexed="false" multiValued="true"/>
|
296
297
|
<dynamicField name="*_fsi" type="float" stored="true" indexed="true" multiValued="false"/>
|
297
298
|
<dynamicField name="*_fsim" type="float" stored="true" indexed="true" multiValued="true"/>
|
298
|
-
|
299
|
+
|
299
300
|
<!-- trie float (_ft...) (for faster range queries) -->
|
300
301
|
<dynamicField name="*_fti" type="tfloat" stored="false" indexed="true" multiValued="false"/>
|
301
302
|
<dynamicField name="*_ftim" type="tfloat" stored="false" indexed="true" multiValued="true"/>
|
@@ -303,12 +304,12 @@
|
|
303
304
|
<dynamicField name="*_ftsm" type="tfloat" stored="true" indexed="false" multiValued="true"/>
|
304
305
|
<dynamicField name="*_ftsi" type="tfloat" stored="true" indexed="true" multiValued="false"/>
|
305
306
|
<dynamicField name="*_ftsim" type="tfloat" stored="true" indexed="true" multiValued="true"/>
|
306
|
-
|
307
|
+
|
307
308
|
<!-- boolean (_b...) -->
|
308
309
|
<dynamicField name="*_bi" type="boolean" stored="false" indexed="true" multiValued="false"/>
|
309
310
|
<dynamicField name="*_bs" type="boolean" stored="true" indexed="false" multiValued="false"/>
|
310
311
|
<dynamicField name="*_bsi" type="boolean" stored="true" indexed="true" multiValued="false"/>
|
311
|
-
|
312
|
+
|
312
313
|
<!-- Type used to index the lat and lon components for the "location" FieldType -->
|
313
314
|
<dynamicField name="*_coordinate" type="tdouble" indexed="true" stored="false" />
|
314
315
|
|
@@ -328,7 +329,7 @@
|
|
328
329
|
|
329
330
|
</fields>
|
330
331
|
|
331
|
-
<!-- Field to use to determine and enforce document uniqueness.
|
332
|
+
<!-- Field to use to determine and enforce document uniqueness.
|
332
333
|
Unless this field is marked with required="false", it will be a required field
|
333
334
|
-->
|
334
335
|
<uniqueKey>id</uniqueKey>
|