active-fedora 12.0.3 → 12.2.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.circleci/config.yml +23 -7
- data/.rubocop.yml +7 -7
- data/.rubocop_todo.yml +10 -100
- data/.solr_wrapper +1 -1
- data/CODE_OF_CONDUCT.md +36 -0
- data/CONTRIBUTING.md +23 -21
- data/Gemfile +1 -1
- data/History.txt +29 -29
- data/LICENSE +16 -14
- data/README.md +40 -29
- data/SUPPORT.md +5 -0
- data/active-fedora.gemspec +8 -8
- data/lib/active_fedora.rb +1 -1
- data/lib/active_fedora/aggregation/list_source.rb +13 -2
- data/lib/active_fedora/associations/builder/collection_association.rb +1 -0
- data/lib/active_fedora/associations/collection_association.rb +3 -0
- data/lib/active_fedora/associations/collection_proxy.rb +2 -0
- data/lib/active_fedora/associations/directly_contains_one_association.rb +1 -0
- data/lib/active_fedora/associations/indirectly_contains_association.rb +2 -0
- data/lib/active_fedora/associations/singular_association.rb +1 -0
- data/lib/active_fedora/attribute_methods.rb +1 -1
- data/lib/active_fedora/attribute_methods/read.rb +1 -1
- data/lib/active_fedora/attribute_methods/write.rb +1 -1
- data/lib/active_fedora/attributes.rb +1 -1
- data/lib/active_fedora/attributes/property_builder.rb +1 -0
- data/lib/active_fedora/callbacks.rb +7 -2
- data/lib/active_fedora/fedora.rb +8 -0
- data/lib/active_fedora/file.rb +4 -4
- data/lib/active_fedora/indexing.rb +3 -0
- data/lib/active_fedora/indexing/descendant_fetcher.rb +1 -1
- data/lib/active_fedora/indexing/descriptor.rb +1 -1
- data/lib/active_fedora/indexing/field_mapper.rb +4 -2
- data/lib/active_fedora/indexing/suffix.rb +7 -3
- data/lib/active_fedora/inheritable_accessors.rb +1 -0
- data/lib/active_fedora/loadable_from_json.rb +1 -0
- data/lib/active_fedora/nested_attributes.rb +1 -0
- data/lib/active_fedora/persistence.rb +14 -1
- data/lib/active_fedora/persistence/null_identifier_service.rb +11 -0
- data/lib/active_fedora/rake_support.rb +2 -2
- data/lib/active_fedora/reflection.rb +1 -1
- data/lib/active_fedora/relation.rb +14 -0
- data/lib/active_fedora/relation/delegation.rb +2 -1
- data/lib/active_fedora/relation/finder_methods.rb +1 -0
- data/lib/active_fedora/relation/merger.rb +1 -0
- data/lib/active_fedora/validations.rb +7 -0
- data/lib/active_fedora/version.rb +1 -1
- data/lib/active_fedora/with_metadata.rb +1 -0
- data/lib/active_fedora/with_metadata/metadata_node.rb +2 -1
- data/lib/generators/active_fedora/config/solr/templates/.solr_wrapper.yml +1 -1
- data/lib/generators/active_fedora/config/solr/templates/solr/{config → conf}/_rest_managed.json +0 -0
- data/lib/generators/active_fedora/config/solr/templates/solr/{config → conf}/admin-extra.html +0 -0
- data/lib/generators/active_fedora/config/solr/templates/solr/{config → conf}/elevate.xml +0 -0
- data/lib/generators/active_fedora/config/solr/templates/solr/{config → conf}/mapping-ISOLatin1Accent.txt +0 -0
- data/lib/generators/active_fedora/config/solr/templates/solr/{config → conf}/protwords.txt +0 -0
- data/lib/generators/active_fedora/config/solr/templates/solr/{config → conf}/schema.xml +64 -63
- data/lib/generators/active_fedora/config/solr/templates/solr/{config → conf}/scripts.conf +0 -0
- data/lib/generators/active_fedora/config/solr/templates/solr/{config → conf}/solrconfig.xml +4 -1
- data/lib/generators/active_fedora/config/solr/templates/solr/{config → conf}/spellings.txt +0 -0
- data/lib/generators/active_fedora/config/solr/templates/solr/{config → conf}/stopwords.txt +0 -0
- data/lib/generators/active_fedora/config/solr/templates/solr/{config → conf}/stopwords_en.txt +0 -0
- data/lib/generators/active_fedora/config/solr/templates/solr/{config → conf}/synonyms.txt +0 -0
- data/lib/generators/active_fedora/config/solr/templates/solr/{config → conf}/xslt/example.xsl +0 -0
- data/lib/generators/active_fedora/config/solr/templates/solr/{config → conf}/xslt/example_atom.xsl +0 -0
- data/lib/generators/active_fedora/config/solr/templates/solr/{config → conf}/xslt/example_rss.xsl +0 -0
- data/lib/generators/active_fedora/config/solr/templates/solr/{config → conf}/xslt/luke.xsl +0 -0
- data/lib/generators/active_fedora/config/solr/templates/solr_wrapper_test.yml +1 -1
- data/lib/generators/active_fedora/model/templates/datastream.rb.erb +1 -1
- data/spec/integration/file_spec.rb +1 -1
- data/spec/integration/relation_spec.rb +43 -0
- data/spec/spec_helper.rb +10 -8
- data/spec/support/an_active_model.rb +4 -0
- data/spec/unit/active_fedora/indexing/inserter_spec.rb +5 -0
- data/spec/unit/callback_spec.rb +8 -1
- data/spec/unit/validations_spec.rb +18 -0
- metadata +57 -60
@@ -77,7 +77,7 @@ module ActiveFedora
|
|
77
77
|
protected
|
78
78
|
|
79
79
|
def rdf_resource
|
80
|
-
@rdf_resource ||= Ldp::Resource::RdfSource.new(ActiveFedora.fedora.
|
80
|
+
@rdf_resource ||= Ldp::Resource::RdfSource.new(ActiveFedora.fedora.build_ntriples_connection, uri)
|
81
81
|
end
|
82
82
|
|
83
83
|
def rdf_graph
|
@@ -9,7 +9,7 @@ module ActiveFedora
|
|
9
9
|
@type_required = opts[:requires_type]
|
10
10
|
end
|
11
11
|
@index_type = args
|
12
|
-
raise
|
12
|
+
raise InvalidIndexDescriptor, "Invalid index type passed. It should be an array like [:string, :indexed, :stored, :multivalued]. You provided: `#{@index_type}'" unless index_type.is_a? Array
|
13
13
|
end
|
14
14
|
|
15
15
|
def name_and_converter(field_name, args = nil)
|
@@ -22,6 +22,7 @@ module ActiveFedora
|
|
22
22
|
# @api
|
23
23
|
# Given a field name, index_type, etc., returns the corresponding Solr name.
|
24
24
|
# TODO field type is the input format, maybe we could just detect that?
|
25
|
+
# See https://github.com/samvera/active_fedora/issues/1338
|
25
26
|
# @param [String] field_name the ruby (term) name which will get a suffix appended to become a Solr field name
|
26
27
|
# @param opts - index_type is only needed if the FieldDescriptor requires it (e.g. :searcahble)
|
27
28
|
# @return [String] name of the solr field, based on the params
|
@@ -69,6 +70,7 @@ module ActiveFedora
|
|
69
70
|
|
70
71
|
# Is there a custom converter?
|
71
72
|
# TODO instead of a custom converter, look for input data type and output data type. Create a few methods that can do that cast.
|
73
|
+
# See https://github.com/samvera/active_fedora/issues/1339
|
72
74
|
|
73
75
|
value = if converter
|
74
76
|
if converter.arity == 1
|
@@ -87,7 +89,7 @@ module ActiveFedora
|
|
87
89
|
values = (results[name] ||= [])
|
88
90
|
values << value unless value.nil? || values.include?(value)
|
89
91
|
else
|
90
|
-
|
92
|
+
Rails.logger.warn "Setting #{name} to `#{value}', but it already had `#{results[name]}'" if results[name]
|
91
93
|
results[name] = value
|
92
94
|
end
|
93
95
|
end
|
@@ -109,7 +111,7 @@ module ActiveFedora
|
|
109
111
|
when Descriptor
|
110
112
|
index_type
|
111
113
|
else
|
112
|
-
raise
|
114
|
+
raise InvalidIndexDescriptor, "#{index_type.class} is not a valid indexer_type. Use a String, Symbol or Descriptor."
|
113
115
|
end
|
114
116
|
|
115
117
|
raise InvalidIndexDescriptor, "index type should be an Descriptor, you passed: #{index_type.class}" unless index_type.is_a? Descriptor
|
@@ -28,7 +28,7 @@ module ActiveFedora
|
|
28
28
|
end
|
29
29
|
|
30
30
|
def to_s
|
31
|
-
raise
|
31
|
+
raise InvalidIndexDescriptor, "Missing datatype for #{@fields}" unless data_type
|
32
32
|
|
33
33
|
field_suffix = [config.suffix_delimiter]
|
34
34
|
|
@@ -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
|
55
|
+
when :string, :symbol
|
54
56
|
's'
|
55
57
|
when :text
|
56
58
|
't'
|
@@ -64,8 +66,10 @@ module ActiveFedora
|
|
64
66
|
'b'
|
65
67
|
when :long
|
66
68
|
'lt'
|
69
|
+
when :float, :big_decimal
|
70
|
+
'f'
|
67
71
|
else
|
68
|
-
raise
|
72
|
+
raise InvalidIndexDescriptor, "Invalid datatype `#{type.inspect}'. Must be one of: :date, :time, :text, :text_en, :string, :symbol, :integer, :boolean"
|
69
73
|
end
|
70
74
|
end),
|
71
75
|
stored_suffix: 's',
|
@@ -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
|
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
|
@@ -16,12 +16,12 @@ def with_server(environment)
|
|
16
16
|
|
17
17
|
SolrWrapper.wrap(load_config(:solr, environment, solr_defaults)) do |solr|
|
18
18
|
ENV["SOLR_#{environment.upcase}_PORT"] = solr.port.to_s
|
19
|
-
solr_config_path = File.join('solr', '
|
19
|
+
solr_config_path = File.join('solr', 'conf')
|
20
20
|
# Check to see if configs exist in a path relative to the working directory
|
21
21
|
unless Dir.exist?(solr_config_path)
|
22
22
|
$stderr.puts "Solr configuration not found at #{solr_config_path}. Using ActiveFedora defaults"
|
23
23
|
# Otherwise use the configs delivered with ActiveFedora.
|
24
|
-
solr_config_path = File.join(File.expand_path("../..", File.dirname(__FILE__)), 'lib', 'generators', 'active_fedora', 'config', 'solr', 'templates', 'solr', '
|
24
|
+
solr_config_path = File.join(File.expand_path("../..", File.dirname(__FILE__)), 'lib', 'generators', 'active_fedora', 'config', 'solr', 'templates', 'solr', 'conf')
|
25
25
|
end
|
26
26
|
solr.with_collection(name: "hydra-#{environment}", dir: solr_config_path) do
|
27
27
|
FcrepoWrapper.wrap(load_config(:fcrepo, environment, fcrepo_defaults)) do |fcrepo|
|
@@ -314,7 +314,7 @@ module ActiveFedora
|
|
314
314
|
def collect_join_chain
|
315
315
|
[self]
|
316
316
|
end
|
317
|
-
alias chain collect_join_chain #
|
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, :
|
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
|
@@ -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
|
@@ -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
|
58
|
+
changed.merge('type' => true) if type.present? && new_record?
|
58
59
|
end
|
59
60
|
end
|
60
61
|
|
data/lib/generators/active_fedora/config/solr/templates/solr/{config → conf}/_rest_managed.json
RENAMED
File without changes
|
data/lib/generators/active_fedora/config/solr/templates/solr/{config → conf}/admin-extra.html
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -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.
|
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.
|
67
|
-
<fieldType name="float" class="solr.
|
68
|
-
<fieldType name="long" class="solr.
|
69
|
-
<fieldType name="double" class="solr.
|
70
|
-
|
71
|
-
<!--
|
72
|
-
<fieldType name="tint" class="solr.
|
73
|
-
<fieldType name="tfloat" class="solr.
|
74
|
-
<fieldType name="tlong" class="solr.
|
75
|
-
<fieldType name="tdouble" class="solr.
|
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.
|
81
|
-
<!-- A
|
82
|
-
<fieldType name="tdate" class="solr.
|
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,14 @@
|
|
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
|
-
|
98
|
-
<!-- A
|
99
|
-
<fieldType name="location" class="solr.LatLonType" subFieldSuffix="_coordinate"/>
|
100
|
-
|
101
|
-
<!-- An alternative geospatial field type new to Solr 4. It supports multiValued and polygon shapes.
|
101
|
+
|
102
|
+
<!-- A geospatial field type new to Solr 4. It supports multiValued and polygon shapes.
|
102
103
|
For more information about this and other Spatial fields new to Solr 4, see:
|
103
104
|
http://wiki.apache.org/solr/SolrAdaptersForLuceneSpatial4
|
104
105
|
-->
|
105
106
|
<fieldType name="location_rpt" class="solr.SpatialRecursivePrefixTreeFieldType"
|
106
107
|
geo="true" distErrPct="0.025" maxDistErr="0.000009" distanceUnits="degrees" />
|
107
|
-
|
108
|
+
|
108
109
|
<fieldType name="text" class="solr.TextField" omitNorms="false">
|
109
110
|
<analyzer>
|
110
111
|
<tokenizer class="solr.ICUTokenizerFactory"/>
|
@@ -112,7 +113,7 @@
|
|
112
113
|
<filter class="solr.TrimFilterFactory"/>
|
113
114
|
</analyzer>
|
114
115
|
</fieldType>
|
115
|
-
|
116
|
+
|
116
117
|
<!-- A text field that only splits on whitespace for exact matching of words -->
|
117
118
|
<fieldType name="text_ws" class="solr.TextField" positionIncrementGap="100">
|
118
119
|
<analyzer>
|
@@ -120,7 +121,7 @@
|
|
120
121
|
<filter class="solr.TrimFilterFactory"/>
|
121
122
|
</analyzer>
|
122
123
|
</fieldType>
|
123
|
-
|
124
|
+
|
124
125
|
<!-- single token analyzed text, for sorting. Punctuation is significant. -->
|
125
126
|
<fieldtype name="alphaSort" class="solr.TextField" sortMissingLast="true" omitNorms="true">
|
126
127
|
<analyzer>
|
@@ -129,7 +130,7 @@
|
|
129
130
|
<filter class="solr.TrimFilterFactory" />
|
130
131
|
</analyzer>
|
131
132
|
</fieldtype>
|
132
|
-
|
133
|
+
|
133
134
|
<!-- A text field with defaults appropriate for English -->
|
134
135
|
<fieldType name="text_en" class="solr.TextField" positionIncrementGap="100">
|
135
136
|
<analyzer>
|
@@ -144,7 +145,7 @@
|
|
144
145
|
<filter class="solr.TrimFilterFactory"/>
|
145
146
|
</analyzer>
|
146
147
|
</fieldType>
|
147
|
-
|
148
|
+
|
148
149
|
<!-- queries for paths match documents at that path, or in descendent paths -->
|
149
150
|
<fieldType name="descendent_path" class="solr.TextField">
|
150
151
|
<analyzer type="index">
|
@@ -154,7 +155,7 @@
|
|
154
155
|
<tokenizer class="solr.KeywordTokenizerFactory" />
|
155
156
|
</analyzer>
|
156
157
|
</fieldType>
|
157
|
-
|
158
|
+
|
158
159
|
<!-- queries for paths match documents at that path, or in ancestor paths -->
|
159
160
|
<fieldType name="ancestor_path" class="solr.TextField">
|
160
161
|
<analyzer type="index">
|
@@ -168,7 +169,6 @@
|
|
168
169
|
<fieldType class="solr.TextField" name="textSuggest" positionIncrementGap="100">
|
169
170
|
<analyzer>
|
170
171
|
<tokenizer class="solr.KeywordTokenizerFactory"/>
|
171
|
-
<filter class="solr.StandardFilterFactory"/>
|
172
172
|
<filter class="solr.LowerCaseFilterFactory"/>
|
173
173
|
<filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
|
174
174
|
</analyzer>
|
@@ -179,12 +179,12 @@
|
|
179
179
|
<fields>
|
180
180
|
<!-- If you remove this field, you must _also_ disable the update log in solrconfig.xml
|
181
181
|
or Solr won't start. _version_ and update log are required for SolrCloud
|
182
|
-
-->
|
182
|
+
-->
|
183
183
|
<field name="_version_" type="long" indexed="true" stored="true"/>
|
184
|
-
|
184
|
+
|
185
185
|
<field name="id" type="string" stored="true" indexed="true" multiValued="false" required="true"/>
|
186
186
|
<field name="timestamp" type="date" indexed="true" stored="true" default="NOW" multiValued="false"/>
|
187
|
-
|
187
|
+
|
188
188
|
<field name="lat" type="tdouble" stored="true" indexed="true" multiValued="false"/>
|
189
189
|
<field name="lng" type="tdouble" stored="true" indexed="true" multiValued="false"/>
|
190
190
|
|
@@ -201,7 +201,7 @@
|
|
201
201
|
<dynamicField name="*_timv" type="text" stored="false" indexed="true" multiValued="true" termVectors="true" termPositions="true" termOffsets="true"/>
|
202
202
|
<dynamicField name="*_tsiv" type="text" stored="true" indexed="true" multiValued="false" termVectors="true" termPositions="true" termOffsets="true"/>
|
203
203
|
<dynamicField name="*_tsimv" type="text" stored="true" indexed="true" multiValued="true" termVectors="true" termPositions="true" termOffsets="true"/>
|
204
|
-
|
204
|
+
|
205
205
|
<!-- English text (_te...) -->
|
206
206
|
<dynamicField name="*_tei" type="text_en" stored="false" indexed="true" multiValued="false"/>
|
207
207
|
<dynamicField name="*_teim" type="text_en" stored="false" indexed="true" multiValued="true"/>
|
@@ -213,7 +213,7 @@
|
|
213
213
|
<dynamicField name="*_teimv" type="text_en" stored="false" indexed="true" multiValued="true" termVectors="true" termPositions="true" termOffsets="true"/>
|
214
214
|
<dynamicField name="*_tesiv" type="text_en" stored="true" indexed="true" multiValued="false" termVectors="true" termPositions="true" termOffsets="true"/>
|
215
215
|
<dynamicField name="*_tesimv" type="text_en" stored="true" indexed="true" multiValued="true" termVectors="true" termPositions="true" termOffsets="true"/>
|
216
|
-
|
216
|
+
|
217
217
|
<!-- string (_s...) -->
|
218
218
|
<dynamicField name="*_si" type="string" stored="false" indexed="true" multiValued="false"/>
|
219
219
|
<dynamicField name="*_sim" type="string" stored="false" indexed="true" multiValued="true"/>
|
@@ -222,7 +222,7 @@
|
|
222
222
|
<dynamicField name="*_ssi" type="string" stored="true" indexed="true" multiValued="false"/>
|
223
223
|
<dynamicField name="*_ssim" type="string" stored="true" indexed="true" multiValued="true"/>
|
224
224
|
<dynamicField name="*_ssort" type="alphaSort" stored="false" indexed="true" multiValued="false"/>
|
225
|
-
|
225
|
+
|
226
226
|
<!-- integer (_i...) -->
|
227
227
|
<dynamicField name="*_ii" type="int" stored="false" indexed="true" multiValued="false"/>
|
228
228
|
<dynamicField name="*_iim" type="int" stored="false" indexed="true" multiValued="true"/>
|
@@ -230,15 +230,15 @@
|
|
230
230
|
<dynamicField name="*_ism" type="int" stored="true" indexed="false" multiValued="true"/>
|
231
231
|
<dynamicField name="*_isi" type="int" stored="true" indexed="true" multiValued="false"/>
|
232
232
|
<dynamicField name="*_isim" type="int" stored="true" indexed="true" multiValued="true"/>
|
233
|
-
|
234
|
-
<!--
|
233
|
+
|
234
|
+
<!-- IntegerPointField (_it...) (for faster range queries) -->
|
235
235
|
<dynamicField name="*_iti" type="tint" stored="false" indexed="true" multiValued="false"/>
|
236
236
|
<dynamicField name="*_itim" type="tint" stored="false" indexed="true" multiValued="true"/>
|
237
237
|
<dynamicField name="*_its" type="tint" stored="true" indexed="false" multiValued="false"/>
|
238
238
|
<dynamicField name="*_itsm" type="tint" stored="true" indexed="false" multiValued="true"/>
|
239
239
|
<dynamicField name="*_itsi" type="tint" stored="true" indexed="true" multiValued="false"/>
|
240
240
|
<dynamicField name="*_itsim" type="tint" stored="true" indexed="true" multiValued="true"/>
|
241
|
-
|
241
|
+
|
242
242
|
<!-- date (_dt...) -->
|
243
243
|
<!-- The format for this date field is of the form 1995-12-31T23:59:59Z
|
244
244
|
Optional fractional seconds are allowed: 1995-12-31T23:59:59.999Z -->
|
@@ -248,15 +248,24 @@
|
|
248
248
|
<dynamicField name="*_dtsm" type="date" stored="true" indexed="false" multiValued="true"/>
|
249
249
|
<dynamicField name="*_dtsi" type="date" stored="true" indexed="true" multiValued="false"/>
|
250
250
|
<dynamicField name="*_dtsim" type="date" stored="true" indexed="true" multiValued="true"/>
|
251
|
-
|
252
|
-
<!--
|
251
|
+
|
252
|
+
<!-- DatePointField (_dtt...) (for faster range queries) -->
|
253
253
|
<dynamicField name="*_dtti" type="tdate" stored="false" indexed="true" multiValued="false"/>
|
254
254
|
<dynamicField name="*_dttim" type="tdate" stored="false" indexed="true" multiValued="true"/>
|
255
255
|
<dynamicField name="*_dtts" type="tdate" stored="true" indexed="false" multiValued="false"/>
|
256
256
|
<dynamicField name="*_dttsm" type="tdate" stored="true" indexed="false" multiValued="true"/>
|
257
257
|
<dynamicField name="*_dttsi" type="tdate" stored="true" indexed="true" multiValued="false"/>
|
258
258
|
<dynamicField name="*_dttsim" type="tdate" stored="true" indexed="true" multiValued="true"/>
|
259
|
-
|
259
|
+
|
260
|
+
|
261
|
+
<!-- date range (_dr...) (for faster AND better range queries) -->
|
262
|
+
<dynamicField name="*_dri" type="dateRange" stored="false" indexed="true" multiValued="false"/>
|
263
|
+
<dynamicField name="*_drim" type="dateRange" stored="false" indexed="true" multiValued="true"/>
|
264
|
+
<dynamicField name="*_drs" type="dateRange" stored="true" indexed="false" multiValued="false"/>
|
265
|
+
<dynamicField name="*_drsm" type="dateRange" stored="true" indexed="false" multiValued="true"/>
|
266
|
+
<dynamicField name="*_drsi" type="dateRange" stored="true" indexed="true" multiValued="false"/>
|
267
|
+
<dynamicField name="*_drsim" type="dateRange" stored="true" indexed="true" multiValued="true"/>
|
268
|
+
|
260
269
|
<!-- long (_l...) -->
|
261
270
|
<dynamicField name="*_li" type="long" stored="false" indexed="true" multiValued="false"/>
|
262
271
|
<dynamicField name="*_lim" type="long" stored="false" indexed="true" multiValued="true"/>
|
@@ -264,15 +273,15 @@
|
|
264
273
|
<dynamicField name="*_lsm" type="long" stored="true" indexed="false" multiValued="true"/>
|
265
274
|
<dynamicField name="*_lsi" type="long" stored="true" indexed="true" multiValued="false"/>
|
266
275
|
<dynamicField name="*_lsim" type="long" stored="true" indexed="true" multiValued="true"/>
|
267
|
-
|
268
|
-
<!--
|
276
|
+
|
277
|
+
<!-- LongPointField (_lt...) (for faster range queries) -->
|
269
278
|
<dynamicField name="*_lti" type="tlong" stored="false" indexed="true" multiValued="false"/>
|
270
279
|
<dynamicField name="*_ltim" type="tlong" stored="false" indexed="true" multiValued="true"/>
|
271
280
|
<dynamicField name="*_lts" type="tlong" stored="true" indexed="false" multiValued="false"/>
|
272
281
|
<dynamicField name="*_ltsm" type="tlong" stored="true" indexed="false" multiValued="true"/>
|
273
282
|
<dynamicField name="*_ltsi" type="tlong" stored="true" indexed="true" multiValued="false"/>
|
274
283
|
<dynamicField name="*_ltsim" type="tlong" stored="true" indexed="true" multiValued="true"/>
|
275
|
-
|
284
|
+
|
276
285
|
<!-- double (_db...) -->
|
277
286
|
<dynamicField name="*_dbi" type="double" stored="false" indexed="true" multiValued="false"/>
|
278
287
|
<dynamicField name="*_dbim" type="double" stored="false" indexed="true" multiValued="true"/>
|
@@ -280,15 +289,15 @@
|
|
280
289
|
<dynamicField name="*_dbsm" type="double" stored="true" indexed="false" multiValued="true"/>
|
281
290
|
<dynamicField name="*_dbsi" type="double" stored="true" indexed="true" multiValued="false"/>
|
282
291
|
<dynamicField name="*_dbsim" type="double" stored="true" indexed="true" multiValued="true"/>
|
283
|
-
|
284
|
-
<!--
|
292
|
+
|
293
|
+
<!-- DoublePointField (_dbt...) (for faster range queries) -->
|
285
294
|
<dynamicField name="*_dbti" type="tdouble" stored="false" indexed="true" multiValued="false"/>
|
286
295
|
<dynamicField name="*_dbtim" type="tdouble" stored="false" indexed="true" multiValued="true"/>
|
287
296
|
<dynamicField name="*_dbts" type="tdouble" stored="true" indexed="false" multiValued="false"/>
|
288
297
|
<dynamicField name="*_dbtsm" type="tdouble" stored="true" indexed="false" multiValued="true"/>
|
289
298
|
<dynamicField name="*_dbtsi" type="tdouble" stored="true" indexed="true" multiValued="false"/>
|
290
299
|
<dynamicField name="*_dbtsim" type="tdouble" stored="true" indexed="true" multiValued="true"/>
|
291
|
-
|
300
|
+
|
292
301
|
<!-- float (_f...) -->
|
293
302
|
<dynamicField name="*_fi" type="float" stored="false" indexed="true" multiValued="false"/>
|
294
303
|
<dynamicField name="*_fim" type="float" stored="false" indexed="true" multiValued="true"/>
|
@@ -296,31 +305,23 @@
|
|
296
305
|
<dynamicField name="*_fsm" type="float" stored="true" indexed="false" multiValued="true"/>
|
297
306
|
<dynamicField name="*_fsi" type="float" stored="true" indexed="true" multiValued="false"/>
|
298
307
|
<dynamicField name="*_fsim" type="float" stored="true" indexed="true" multiValued="true"/>
|
299
|
-
|
300
|
-
<!--
|
308
|
+
|
309
|
+
<!-- FloatPointField (_ft...) (for faster range queries) -->
|
301
310
|
<dynamicField name="*_fti" type="tfloat" stored="false" indexed="true" multiValued="false"/>
|
302
311
|
<dynamicField name="*_ftim" type="tfloat" stored="false" indexed="true" multiValued="true"/>
|
303
312
|
<dynamicField name="*_fts" type="tfloat" stored="true" indexed="false" multiValued="false"/>
|
304
313
|
<dynamicField name="*_ftsm" type="tfloat" stored="true" indexed="false" multiValued="true"/>
|
305
314
|
<dynamicField name="*_ftsi" type="tfloat" stored="true" indexed="true" multiValued="false"/>
|
306
315
|
<dynamicField name="*_ftsim" type="tfloat" stored="true" indexed="true" multiValued="true"/>
|
307
|
-
|
316
|
+
|
308
317
|
<!-- boolean (_b...) -->
|
309
318
|
<dynamicField name="*_bi" type="boolean" stored="false" indexed="true" multiValued="false"/>
|
310
319
|
<dynamicField name="*_bs" type="boolean" stored="true" indexed="false" multiValued="false"/>
|
311
320
|
<dynamicField name="*_bsi" type="boolean" stored="true" indexed="true" multiValued="false"/>
|
312
|
-
|
321
|
+
|
313
322
|
<!-- Type used to index the lat and lon components for the "location" FieldType -->
|
314
323
|
<dynamicField name="*_coordinate" type="tdouble" indexed="true" stored="false" />
|
315
324
|
|
316
|
-
<!-- location (_ll...) -->
|
317
|
-
<dynamicField name="*_lli" type="location" stored="false" indexed="true" multiValued="false"/>
|
318
|
-
<dynamicField name="*_llim" type="location" stored="false" indexed="true" multiValued="true"/>
|
319
|
-
<dynamicField name="*_lls" type="location" stored="true" indexed="false" multiValued="false"/>
|
320
|
-
<dynamicField name="*_llsm" type="location" stored="true" indexed="false" multiValued="true"/>
|
321
|
-
<dynamicField name="*_llsi" type="location" stored="true" indexed="true" multiValued="false"/>
|
322
|
-
<dynamicField name="*_llsim" type="location" stored="true" indexed="true" multiValued="true"/>
|
323
|
-
|
324
325
|
<dynamicField name="*suggest" type="textSuggest" indexed="true" stored="false" multiValued="true" />
|
325
326
|
|
326
327
|
<!-- you must define copyField source and dest fields explicity or schemaBrowser doesn't work -->
|
@@ -329,7 +330,7 @@
|
|
329
330
|
|
330
331
|
</fields>
|
331
332
|
|
332
|
-
<!-- Field to use to determine and enforce document uniqueness.
|
333
|
+
<!-- Field to use to determine and enforce document uniqueness.
|
333
334
|
Unless this field is marked with required="false", it will be a required field
|
334
335
|
-->
|
335
336
|
<uniqueKey>id</uniqueKey>
|