active-fedora 11.5.6 → 12.0.0
Sign up to get free protection for your applications and to get access to all the features.
- 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>
|