active-fedora 12.0.2 → 12.2.2
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/.circleci/config.yml +63 -0
- 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 -0
- data/History.txt +29 -29
- data/LICENSE +16 -14
- data/README.md +40 -29
- data/SUPPORT.md +5 -0
- data/active-fedora.gemspec +7 -7
- data/lib/active_fedora.rb +1 -1
- data/lib/active_fedora/aggregation/list_source.rb +3 -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 +5 -7
- 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 +11 -9
- 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/file_spec.rb +17 -0
- data/spec/unit/validations_spec.rb +18 -0
- metadata +56 -54
- data/.travis.yml +0 -15
|
@@ -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>
|