hydra-pcdm 0.4.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 34be4330f2d67658ff23d0ca81d507a8148cd017
4
- data.tar.gz: 8a99d7df6d98e0b3d065c808da63b90dcc99fc81
3
+ metadata.gz: 4f5cafbc7a34aee391cc86e7df1d8e0d8a1ff6b6
4
+ data.tar.gz: fb1e8456ae3c899a1b48fb79bf6d787becc0e571
5
5
  SHA512:
6
- metadata.gz: e0a70541608c6409dd236b136b1c0441200866887f5161d89132e52eb7c373a62ab9d296d8a243a8836515bb2dcc32d3571e5a4d92d1b7b3c8d01fc55d2bcdf0
7
- data.tar.gz: 71ee5d660565ff2accb6f69f7342d9399f9f64c44ec1766a0d8d8d1129c4ff9ca68e5f470a48029ff825367f286c6aded5488a79418179efea17b0cc43c10509
6
+ metadata.gz: e1c4e5cae84a32c3464f3922fe2de541491b6508b43eaed9b83b08f9ef0adcda912ff3c29040e9d09f1c09dd155cbf3cdeb4191e70d99df204a4e8e7d3521e0b
7
+ data.tar.gz: 72aa2a31ba96aef2dcabd1237d7558a18e1b8ffadae7cfe8f266ac56235d0eedc9ff531539d3cd47c12c7629ec5c75e4bc7c4777267eb3b18b96ac660ae54e35
data/.gitignore CHANGED
@@ -23,4 +23,5 @@ mkmf.log
23
23
  .idea
24
24
  .ruby-gemset
25
25
  .ruby-version
26
- jetty
26
+ fcrepo4-data
27
+ jetty
data/Gemfile CHANGED
@@ -1,9 +1,9 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
3
  group :development, :test do
4
- gem 'rubocop', require: false
5
4
  gem 'haml-lint', require: false
6
- gem 'rubocop-rspec', require: false
5
+ gem 'rubocop', '~> 0.37.0', require: false
6
+ gem 'rubocop-rspec', '~> 1.3.1', require: false
7
7
  gem 'pry' unless ENV['CI']
8
8
  gem 'pry-byebug' unless ENV['CI']
9
9
  end
data/Rakefile CHANGED
@@ -1,8 +1,9 @@
1
1
  require 'bundler/gem_tasks'
2
- require 'jettywrapper'
3
2
  require 'rspec/core'
4
3
  require 'rspec/core/rake_task'
5
4
  require 'rubocop/rake_task'
5
+ require 'fcrepo_wrapper'
6
+ require 'solr_wrapper'
6
7
 
7
8
  desc 'Run style checker'
8
9
  RuboCop::RakeTask.new(:rubocop) do |task|
@@ -16,15 +17,17 @@ task :spec do
16
17
  RSpec::Core::RakeTask.new(:spec)
17
18
  end
18
19
 
19
- desc 'Spin up hydra-jetty and run specs'
20
- task ci: ['jetty:clean'] do
21
- puts 'running continuous integration'
22
- jetty_params = Jettywrapper.load_config
23
- jetty_params[:startup_wait] = 90
24
- error = Jettywrapper.wrap(jetty_params) do
25
- Rake::Task['spec'].invoke
20
+ desc 'Spin up Solr & Fedora and run the test suite'
21
+ task :ci do
22
+ solr_params = { port: 8985, verbose: true, managed: true }
23
+ fcrepo_params = { port: 8986, verbose: true, managed: true }
24
+ SolrWrapper.wrap(solr_params) do |solr|
25
+ solr.with_collection(name: 'hydra-test', dir: File.join(File.expand_path('.', File.dirname(__FILE__)), 'solr', 'config')) do
26
+ FcrepoWrapper.wrap(fcrepo_params) do
27
+ Rake::Task['spec'].invoke
28
+ end
29
+ end
26
30
  end
27
- raise "test failures: #{error}" if error
28
31
  end
29
32
 
30
33
  task default: :ci
data/hydra-pcdm.gemspec CHANGED
@@ -20,11 +20,12 @@ Gem::Specification.new do |spec|
20
20
  spec.require_paths = ['lib']
21
21
 
22
22
  spec.add_dependency 'active-fedora', '~> 9.6'
23
- spec.add_dependency 'activefedora-aggregation', '~> 0.6'
23
+ spec.add_dependency 'activefedora-aggregation', '~> 0.10'
24
24
  spec.add_dependency 'mime-types', '>= 1'
25
25
 
26
26
  spec.add_development_dependency 'bundler', '~> 1.6'
27
- spec.add_development_dependency 'jettywrapper', '>= 2.0.0'
27
+ spec.add_development_dependency 'fcrepo_wrapper', '~> 0.1'
28
+ spec.add_development_dependency 'solr_wrapper', '~> 0.4'
28
29
  spec.add_development_dependency 'rake'
29
30
  spec.add_development_dependency 'coveralls'
30
31
  spec.add_development_dependency 'rspec'
@@ -1,5 +1,5 @@
1
1
  module Hydra
2
2
  module PCDM
3
- VERSION = '0.4.0'.freeze
3
+ VERSION = '0.5.0'.freeze
4
4
  end
5
5
  end
@@ -0,0 +1,3 @@
1
+ {
2
+ "initArgs":{},
3
+ "managedList":[]}
@@ -0,0 +1,31 @@
1
+ <!--
2
+ Licensed to the Apache Software Foundation (ASF) under one or more
3
+ contributor license agreements. See the NOTICE file distributed with
4
+ this work for additional information regarding copyright ownership.
5
+ The ASF licenses this file to You under the Apache License, Version 2.0
6
+ (the "License"); you may not use this file except in compliance with
7
+ the License. You may obtain a copy of the License at
8
+
9
+ http://www.apache.org/licenses/LICENSE-2.0
10
+
11
+ Unless required by applicable law or agreed to in writing, software
12
+ distributed under the License is distributed on an "AS IS" BASIS,
13
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ See the License for the specific language governing permissions and
15
+ limitations under the License.
16
+ -->
17
+
18
+ <!-- The content of this page will be statically included into the top
19
+ of the admin page. Uncomment this as an example to see there the content
20
+ will show up.
21
+
22
+ <hr>
23
+ <i>This line will appear before the first table</i>
24
+ <tr>
25
+ <td colspan="2">
26
+ This row will be appended to the end of the first table
27
+ </td>
28
+ </tr>
29
+ <hr>
30
+
31
+ -->
@@ -0,0 +1,36 @@
1
+ <?xml version="1.0" encoding="UTF-8" ?>
2
+ <!--
3
+ Licensed to the Apache Software Foundation (ASF) under one or more
4
+ contributor license agreements. See the NOTICE file distributed with
5
+ this work for additional information regarding copyright ownership.
6
+ The ASF licenses this file to You under the Apache License, Version 2.0
7
+ (the "License"); you may not use this file except in compliance with
8
+ the License. You may obtain a copy of the License at
9
+
10
+ http://www.apache.org/licenses/LICENSE-2.0
11
+
12
+ Unless required by applicable law or agreed to in writing, software
13
+ distributed under the License is distributed on an "AS IS" BASIS,
14
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ See the License for the specific language governing permissions and
16
+ limitations under the License.
17
+ -->
18
+
19
+ <!-- If this file is found in the config directory, it will only be
20
+ loaded once at startup. If it is found in Solr's data
21
+ directory, it will be re-loaded every commit.
22
+ -->
23
+
24
+ <elevate>
25
+ <query text="foo bar">
26
+ <doc id="1" />
27
+ <doc id="2" />
28
+ <doc id="3" />
29
+ </query>
30
+
31
+ <query text="ipod">
32
+ <doc id="MA147LL/A" /> <!-- put the actual ipod at the top -->
33
+ <doc id="IW-02" exclude="true" /> <!-- exclude this cable -->
34
+ </query>
35
+
36
+ </elevate>
@@ -0,0 +1,246 @@
1
+ # The ASF licenses this file to You under the Apache License, Version 2.0
2
+ # (the "License"); you may not use this file except in compliance with
3
+ # the License. You may obtain a copy of the License at
4
+ #
5
+ # http://www.apache.org/licenses/LICENSE-2.0
6
+ #
7
+ # Unless required by applicable law or agreed to in writing, software
8
+ # distributed under the License is distributed on an "AS IS" BASIS,
9
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
10
+ # See the License for the specific language governing permissions and
11
+ # limitations under the License.
12
+
13
+ # Syntax:
14
+ # "source" => "target"
15
+ # "source".length() > 0 (source cannot be empty.)
16
+ # "target".length() >= 0 (target can be empty.)
17
+
18
+ # example:
19
+ # "??" => "A"
20
+ # "\u00C0" => "A"
21
+ # "\u00C0" => "\u0041"
22
+ # "??" => "ss"
23
+ # "\t" => " "
24
+ # "\n" => ""
25
+
26
+ # ?? => A
27
+ "\u00C0" => "A"
28
+
29
+ # ?? => A
30
+ "\u00C1" => "A"
31
+
32
+ # ?? => A
33
+ "\u00C2" => "A"
34
+
35
+ # ?? => A
36
+ "\u00C3" => "A"
37
+
38
+ # ?? => A
39
+ "\u00C4" => "A"
40
+
41
+ # ?? => A
42
+ "\u00C5" => "A"
43
+
44
+ # ?? => AE
45
+ "\u00C6" => "AE"
46
+
47
+ # ?? => C
48
+ "\u00C7" => "C"
49
+
50
+ # ?? => E
51
+ "\u00C8" => "E"
52
+
53
+ # ?? => E
54
+ "\u00C9" => "E"
55
+
56
+ # ?? => E
57
+ "\u00CA" => "E"
58
+
59
+ # ?? => E
60
+ "\u00CB" => "E"
61
+
62
+ # ?? => I
63
+ "\u00CC" => "I"
64
+
65
+ # ?? => I
66
+ "\u00CD" => "I"
67
+
68
+ # ?? => I
69
+ "\u00CE" => "I"
70
+
71
+ # ?? => I
72
+ "\u00CF" => "I"
73
+
74
+ # ?? => IJ
75
+ "\u0132" => "IJ"
76
+
77
+ # ?? => D
78
+ "\u00D0" => "D"
79
+
80
+ # ?? => N
81
+ "\u00D1" => "N"
82
+
83
+ # ?? => O
84
+ "\u00D2" => "O"
85
+
86
+ # ?? => O
87
+ "\u00D3" => "O"
88
+
89
+ # ?? => O
90
+ "\u00D4" => "O"
91
+
92
+ # ?? => O
93
+ "\u00D5" => "O"
94
+
95
+ # ?? => O
96
+ "\u00D6" => "O"
97
+
98
+ # ?? => O
99
+ "\u00D8" => "O"
100
+
101
+ # ?? => OE
102
+ "\u0152" => "OE"
103
+
104
+ # ??
105
+ "\u00DE" => "TH"
106
+
107
+ # ?? => U
108
+ "\u00D9" => "U"
109
+
110
+ # ?? => U
111
+ "\u00DA" => "U"
112
+
113
+ # ?? => U
114
+ "\u00DB" => "U"
115
+
116
+ # ?? => U
117
+ "\u00DC" => "U"
118
+
119
+ # ?? => Y
120
+ "\u00DD" => "Y"
121
+
122
+ # ?? => Y
123
+ "\u0178" => "Y"
124
+
125
+ # ?? => a
126
+ "\u00E0" => "a"
127
+
128
+ # ?? => a
129
+ "\u00E1" => "a"
130
+
131
+ # ?? => a
132
+ "\u00E2" => "a"
133
+
134
+ # ?? => a
135
+ "\u00E3" => "a"
136
+
137
+ # ?? => a
138
+ "\u00E4" => "a"
139
+
140
+ # ?? => a
141
+ "\u00E5" => "a"
142
+
143
+ # ?? => ae
144
+ "\u00E6" => "ae"
145
+
146
+ # ?? => c
147
+ "\u00E7" => "c"
148
+
149
+ # ?? => e
150
+ "\u00E8" => "e"
151
+
152
+ # ?? => e
153
+ "\u00E9" => "e"
154
+
155
+ # ?? => e
156
+ "\u00EA" => "e"
157
+
158
+ # ?? => e
159
+ "\u00EB" => "e"
160
+
161
+ # ?? => i
162
+ "\u00EC" => "i"
163
+
164
+ # ?? => i
165
+ "\u00ED" => "i"
166
+
167
+ # ?? => i
168
+ "\u00EE" => "i"
169
+
170
+ # ?? => i
171
+ "\u00EF" => "i"
172
+
173
+ # ?? => ij
174
+ "\u0133" => "ij"
175
+
176
+ # ?? => d
177
+ "\u00F0" => "d"
178
+
179
+ # ?? => n
180
+ "\u00F1" => "n"
181
+
182
+ # ?? => o
183
+ "\u00F2" => "o"
184
+
185
+ # ?? => o
186
+ "\u00F3" => "o"
187
+
188
+ # ?? => o
189
+ "\u00F4" => "o"
190
+
191
+ # ?? => o
192
+ "\u00F5" => "o"
193
+
194
+ # ?? => o
195
+ "\u00F6" => "o"
196
+
197
+ # ?? => o
198
+ "\u00F8" => "o"
199
+
200
+ # ?? => oe
201
+ "\u0153" => "oe"
202
+
203
+ # ?? => ss
204
+ "\u00DF" => "ss"
205
+
206
+ # ?? => th
207
+ "\u00FE" => "th"
208
+
209
+ # ?? => u
210
+ "\u00F9" => "u"
211
+
212
+ # ?? => u
213
+ "\u00FA" => "u"
214
+
215
+ # ?? => u
216
+ "\u00FB" => "u"
217
+
218
+ # ?? => u
219
+ "\u00FC" => "u"
220
+
221
+ # ?? => y
222
+ "\u00FD" => "y"
223
+
224
+ # ?? => y
225
+ "\u00FF" => "y"
226
+
227
+ # ??? => ff
228
+ "\uFB00" => "ff"
229
+
230
+ # ??? => fi
231
+ "\uFB01" => "fi"
232
+
233
+ # ??? => fl
234
+ "\uFB02" => "fl"
235
+
236
+ # ??? => ffi
237
+ "\uFB03" => "ffi"
238
+
239
+ # ??? => ffl
240
+ "\uFB04" => "ffl"
241
+
242
+ # ??? => ft
243
+ "\uFB05" => "ft"
244
+
245
+ # ??? => st
246
+ "\uFB06" => "st"
@@ -0,0 +1,21 @@
1
+ # The ASF licenses this file to You under the Apache License, Version 2.0
2
+ # (the "License"); you may not use this file except in compliance with
3
+ # the License. You may obtain a copy of the License at
4
+ #
5
+ # http://www.apache.org/licenses/LICENSE-2.0
6
+ #
7
+ # Unless required by applicable law or agreed to in writing, software
8
+ # distributed under the License is distributed on an "AS IS" BASIS,
9
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
10
+ # See the License for the specific language governing permissions and
11
+ # limitations under the License.
12
+
13
+ #-----------------------------------------------------------------------
14
+ # Use a protected word file to protect against the stemmer reducing two
15
+ # unrelated words to the same base word.
16
+
17
+ # Some non-words that normally won't be encountered,
18
+ # just to test that they won't be stemmed.
19
+ dontstems
20
+ zwhacky
21
+
@@ -0,0 +1,372 @@
1
+ <?xml version="1.0" encoding="UTF-8" ?>
2
+ <!--
3
+ Licensed to the Apache Software Foundation (ASF) under one or more
4
+ contributor license agreements. See the NOTICE file distributed with
5
+ this work for additional information regarding copyright ownership.
6
+ The ASF licenses this file to You under the Apache License, Version 2.0
7
+ (the "License"); you may not use this file except in compliance with
8
+ the License. You may obtain a copy of the License at
9
+
10
+ http://www.apache.org/licenses/LICENSE-2.0
11
+
12
+ Unless required by applicable law or agreed to in writing, software
13
+ distributed under the License is distributed on an "AS IS" BASIS,
14
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ See the License for the specific language governing permissions and
16
+ limitations under the License.
17
+ -->
18
+
19
+ <!--
20
+ This is the Solr schema file. This file should be named "schema.xml" and
21
+ should be in the conf directory under the solr home
22
+ (i.e. ./solr/conf/schema.xml by default)
23
+ or located where the classloader for the Solr webapp can find it.
24
+
25
+ This example schema is the recommended starting point for users.
26
+ It should be kept correct and concise, usable out-of-the-box.
27
+
28
+ For more information, on how to customize this file, please see
29
+ http://wiki.apache.org/solr/SchemaXml
30
+
31
+ PERFORMANCE NOTE: this schema includes many optional features and should not
32
+ be used for benchmarking. To improve performance one could
33
+ - set stored="false" for all fields possible (esp large fields) when you
34
+ only need to search on the field but don't need to return the original
35
+ value.
36
+ - set indexed="false" if you don't need to search on the field, but only
37
+ return the field as a result of searching on other indexed fields.
38
+ - remove all unneeded copyField statements
39
+ - for best index size and searching performance, set "index" to false
40
+ for all general text fields, use copyField to copy them to the
41
+ catchall "text" field, and use that for searching.
42
+ - For maximum indexing performance, use the StreamingUpdateSolrServer
43
+ java client.
44
+ - Remember to run the JVM in server mode, and use a higher logging level
45
+ that avoids logging every request
46
+ -->
47
+
48
+ <schema name="Hydra Demo Index" version="1.5">
49
+ <!-- attribute "name" is the name of this schema and is only used for display purposes.
50
+ Applications should change this to reflect the nature of the search collection.
51
+ version="1.4" is Solr's version number for the schema syntax and semantics. It should
52
+ not normally be changed by applications.
53
+ 1.0: multiValued attribute did not exist, all fields are multiValued by nature
54
+ 1.1: multiValued attribute introduced, false by default
55
+ 1.2: omitTermFreqAndPositions attribute introduced, true by default except for text fields.
56
+ 1.3: removed optional field compress feature
57
+ 1.4: default auto-phrase (QueryParser feature) to off
58
+ -->
59
+
60
+ <types>
61
+ <fieldType name="string" class="solr.StrField" sortMissingLast="true" />
62
+ <fieldType name="boolean" class="solr.BoolField" sortMissingLast="true"/>
63
+ <fieldType name="rand" class="solr.RandomSortField" omitNorms="true"/>
64
+
65
+ <!-- Default numeric field types. -->
66
+ <fieldType name="int" class="solr.TrieIntField" precisionStep="0" positionIncrementGap="0"/>
67
+ <fieldType name="float" class="solr.TrieFloatField" precisionStep="0" positionIncrementGap="0"/>
68
+ <fieldType name="long" class="solr.TrieLongField" precisionStep="0" positionIncrementGap="0"/>
69
+ <fieldType name="double" class="solr.TrieDoubleField" precisionStep="0" positionIncrementGap="0"/>
70
+
71
+ <!-- trie numeric field types for faster range queries -->
72
+ <fieldType name="tint" class="solr.TrieIntField" precisionStep="8" positionIncrementGap="0"/>
73
+ <fieldType name="tfloat" class="solr.TrieFloatField" precisionStep="8" positionIncrementGap="0"/>
74
+ <fieldType name="tlong" class="solr.TrieLongField" precisionStep="8" positionIncrementGap="0"/>
75
+ <fieldType name="tdouble" class="solr.TrieDoubleField" precisionStep="8" positionIncrementGap="0"/>
76
+
77
+ <!-- The format for this date field is of the form 1995-12-31T23:59:59Z
78
+ Optional fractional seconds are allowed: 1995-12-31T23:59:59.999Z
79
+ -->
80
+ <fieldType name="date" class="solr.TrieDateField" precisionStep="0" positionIncrementGap="0"/>
81
+ <!-- A Trie based date field for faster date range queries and date faceting. -->
82
+ <fieldType name="tdate" class="solr.TrieDateField" precisionStep="6" positionIncrementGap="0"/>
83
+
84
+
85
+ <!-- This point type indexes the coordinates as separate fields (subFields)
86
+ If subFieldType is defined, it references a type, and a dynamic field
87
+ definition is created matching *___<typename>. Alternately, if
88
+ subFieldSuffix is defined, that is used to create the subFields.
89
+ Example: if subFieldType="double", then the coordinates would be
90
+ indexed in fields myloc_0___double,myloc_1___double.
91
+ Example: if subFieldSuffix="_d" then the coordinates would be indexed
92
+ in fields myloc_0_d,myloc_1_d
93
+ The subFields are an implementation detail of the fieldType, and end
94
+ users normally should not need to know about them.
95
+ -->
96
+ <fieldType name="point" class="solr.PointType" dimension="2" subFieldSuffix="_d"/>
97
+
98
+ <!-- A specialized field for geospatial search. If indexed, this fieldType must not be multivalued. -->
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.
102
+ For more information about this and other Spatial fields new to Solr 4, see:
103
+ http://wiki.apache.org/solr/SolrAdaptersForLuceneSpatial4
104
+ -->
105
+ <fieldType name="location_rpt" class="solr.SpatialRecursivePrefixTreeFieldType"
106
+ geo="true" distErrPct="0.025" maxDistErr="0.000009" units="degrees" />
107
+
108
+ <fieldType name="text" class="solr.TextField" omitNorms="false">
109
+ <analyzer>
110
+ <tokenizer class="solr.ICUTokenizerFactory"/>
111
+ <filter class="solr.ICUFoldingFilterFactory"/> <!-- NFKC, case folding, diacritics removed -->
112
+ <filter class="solr.TrimFilterFactory"/>
113
+ </analyzer>
114
+ </fieldType>
115
+
116
+ <!-- A text field that only splits on whitespace for exact matching of words -->
117
+ <fieldType name="text_ws" class="solr.TextField" positionIncrementGap="100">
118
+ <analyzer>
119
+ <tokenizer class="solr.WhitespaceTokenizerFactory"/>
120
+ <filter class="solr.TrimFilterFactory"/>
121
+ </analyzer>
122
+ </fieldType>
123
+
124
+ <!-- single token analyzed text, for sorting. Punctuation is significant. -->
125
+ <fieldtype name="alphaSort" class="solr.TextField" sortMissingLast="true" omitNorms="true">
126
+ <analyzer>
127
+ <tokenizer class="solr.KeywordTokenizerFactory" />
128
+ <filter class="solr.ICUFoldingFilterFactory"/>
129
+ <filter class="solr.TrimFilterFactory" />
130
+ </analyzer>
131
+ </fieldtype>
132
+
133
+ <!-- A text field with defaults appropriate for English -->
134
+ <fieldType name="text_en" class="solr.TextField" positionIncrementGap="100">
135
+ <analyzer>
136
+ <tokenizer class="solr.ICUTokenizerFactory"/>
137
+ <filter class="solr.ICUFoldingFilterFactory"/> <!-- NFKC, case folding, diacritics removed -->
138
+ <filter class="solr.EnglishPossessiveFilterFactory"/>
139
+ <!-- EnglishMinimalStemFilterFactory is less aggressive than PorterStemFilterFactory: -->
140
+ <filter class="solr.EnglishMinimalStemFilterFactory"/>
141
+ <!--
142
+ <filter class="solr.PorterStemFilterFactory"/>
143
+ -->
144
+ <filter class="solr.TrimFilterFactory"/>
145
+ </analyzer>
146
+ </fieldType>
147
+
148
+ <!-- queries for paths match documents at that path, or in descendent paths -->
149
+ <fieldType name="descendent_path" class="solr.TextField">
150
+ <analyzer type="index">
151
+ <tokenizer class="solr.PathHierarchyTokenizerFactory" delimiter="/" />
152
+ </analyzer>
153
+ <analyzer type="query">
154
+ <tokenizer class="solr.KeywordTokenizerFactory" />
155
+ </analyzer>
156
+ </fieldType>
157
+
158
+ <!-- queries for paths match documents at that path, or in ancestor paths -->
159
+ <fieldType name="ancestor_path" class="solr.TextField">
160
+ <analyzer type="index">
161
+ <tokenizer class="solr.KeywordTokenizerFactory" />
162
+ </analyzer>
163
+ <analyzer type="query">
164
+ <tokenizer class="solr.PathHierarchyTokenizerFactory" delimiter="/" />
165
+ </analyzer>
166
+ </fieldType>
167
+
168
+ <fieldType class="solr.TextField" name="textSuggest" positionIncrementGap="100">
169
+ <analyzer>
170
+ <tokenizer class="solr.KeywordTokenizerFactory"/>
171
+ <filter class="solr.StandardFilterFactory"/>
172
+ <filter class="solr.LowerCaseFilterFactory"/>
173
+ <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
174
+ </analyzer>
175
+ </fieldType>
176
+ </types>
177
+
178
+
179
+ <fields>
180
+ <!-- If you remove this field, you must _also_ disable the update log in solrconfig.xml
181
+ or Solr won't start. _version_ and update log are required for SolrCloud
182
+ -->
183
+ <field name="_version_" type="long" indexed="true" stored="true"/>
184
+
185
+ <field name="id" type="string" stored="true" indexed="true" multiValued="false" required="true"/>
186
+ <field name="timestamp" type="date" indexed="true" stored="true" default="NOW" multiValued="false"/>
187
+
188
+ <field name="lat" type="tdouble" stored="true" indexed="true" multiValued="false"/>
189
+ <field name="lng" type="tdouble" stored="true" indexed="true" multiValued="false"/>
190
+
191
+ <!-- NOTE: not all possible Solr field types are represented in the dynamic fields -->
192
+
193
+ <!-- text (_t...) -->
194
+ <dynamicField name="*_ti" type="text" stored="false" indexed="true" multiValued="false"/>
195
+ <dynamicField name="*_tim" type="text" stored="false" indexed="true" multiValued="true"/>
196
+ <dynamicField name="*_ts" type="text" stored="true" indexed="false" multiValued="false"/>
197
+ <dynamicField name="*_tsm" type="text" stored="true" indexed="false" multiValued="true"/>
198
+ <dynamicField name="*_tsi" type="text" stored="true" indexed="true" multiValued="false"/>
199
+ <dynamicField name="*_tsim" type="text" stored="true" indexed="true" multiValued="true"/>
200
+ <dynamicField name="*_tiv" type="text" stored="false" indexed="true" multiValued="false" termVectors="true" termPositions="true" termOffsets="true"/>
201
+ <dynamicField name="*_timv" type="text" stored="false" indexed="true" multiValued="true" termVectors="true" termPositions="true" termOffsets="true"/>
202
+ <dynamicField name="*_tsiv" type="text" stored="true" indexed="true" multiValued="false" termVectors="true" termPositions="true" termOffsets="true"/>
203
+ <dynamicField name="*_tsimv" type="text" stored="true" indexed="true" multiValued="true" termVectors="true" termPositions="true" termOffsets="true"/>
204
+
205
+ <!-- English text (_te...) -->
206
+ <dynamicField name="*_tei" type="text_en" stored="false" indexed="true" multiValued="false"/>
207
+ <dynamicField name="*_teim" type="text_en" stored="false" indexed="true" multiValued="true"/>
208
+ <dynamicField name="*_tes" type="text_en" stored="true" indexed="false" multiValued="false"/>
209
+ <dynamicField name="*_tesm" type="text_en" stored="true" indexed="false" multiValued="true"/>
210
+ <dynamicField name="*_tesi" type="text_en" stored="true" indexed="true" multiValued="false"/>
211
+ <dynamicField name="*_tesim" type="text_en" stored="true" indexed="true" multiValued="true"/>
212
+ <dynamicField name="*_teiv" type="text_en" stored="false" indexed="true" multiValued="false" termVectors="true" termPositions="true" termOffsets="true"/>
213
+ <dynamicField name="*_teimv" type="text_en" stored="false" indexed="true" multiValued="true" termVectors="true" termPositions="true" termOffsets="true"/>
214
+ <dynamicField name="*_tesiv" type="text_en" stored="true" indexed="true" multiValued="false" termVectors="true" termPositions="true" termOffsets="true"/>
215
+ <dynamicField name="*_tesimv" type="text_en" stored="true" indexed="true" multiValued="true" termVectors="true" termPositions="true" termOffsets="true"/>
216
+
217
+ <!-- string (_s...) -->
218
+ <dynamicField name="*_si" type="string" stored="false" indexed="true" multiValued="false"/>
219
+ <dynamicField name="*_sim" type="string" stored="false" indexed="true" multiValued="true"/>
220
+ <dynamicField name="*_ss" type="string" stored="true" indexed="false" multiValued="false"/>
221
+ <dynamicField name="*_ssm" type="string" stored="true" indexed="false" multiValued="true"/>
222
+ <dynamicField name="*_ssi" type="string" stored="true" indexed="true" multiValued="false"/>
223
+ <dynamicField name="*_ssim" type="string" stored="true" indexed="true" multiValued="true"/>
224
+ <dynamicField name="*_ssort" type="alphaSort" stored="false" indexed="true" multiValued="false"/>
225
+
226
+ <!-- integer (_i...) -->
227
+ <dynamicField name="*_ii" type="int" stored="false" indexed="true" multiValued="false"/>
228
+ <dynamicField name="*_iim" type="int" stored="false" indexed="true" multiValued="true"/>
229
+ <dynamicField name="*_is" type="int" stored="true" indexed="false" multiValued="false"/>
230
+ <dynamicField name="*_ism" type="int" stored="true" indexed="false" multiValued="true"/>
231
+ <dynamicField name="*_isi" type="int" stored="true" indexed="true" multiValued="false"/>
232
+ <dynamicField name="*_isim" type="int" stored="true" indexed="true" multiValued="true"/>
233
+
234
+ <!-- trie integer (_it...) (for faster range queries) -->
235
+ <dynamicField name="*_iti" type="tint" stored="false" indexed="true" multiValued="false"/>
236
+ <dynamicField name="*_itim" type="tint" stored="false" indexed="true" multiValued="true"/>
237
+ <dynamicField name="*_its" type="tint" stored="true" indexed="false" multiValued="false"/>
238
+ <dynamicField name="*_itsm" type="tint" stored="true" indexed="false" multiValued="true"/>
239
+ <dynamicField name="*_itsi" type="tint" stored="true" indexed="true" multiValued="false"/>
240
+ <dynamicField name="*_itsim" type="tint" stored="true" indexed="true" multiValued="true"/>
241
+
242
+ <!-- date (_dt...) -->
243
+ <!-- The format for this date field is of the form 1995-12-31T23:59:59Z
244
+ Optional fractional seconds are allowed: 1995-12-31T23:59:59.999Z -->
245
+ <dynamicField name="*_dti" type="date" stored="false" indexed="true" multiValued="false"/>
246
+ <dynamicField name="*_dtim" type="date" stored="false" indexed="true" multiValued="true"/>
247
+ <dynamicField name="*_dts" type="date" stored="true" indexed="false" multiValued="false"/>
248
+ <dynamicField name="*_dtsm" type="date" stored="true" indexed="false" multiValued="true"/>
249
+ <dynamicField name="*_dtsi" type="date" stored="true" indexed="true" multiValued="false"/>
250
+ <dynamicField name="*_dtsim" type="date" stored="true" indexed="true" multiValued="true"/>
251
+
252
+ <!-- trie date (_dtt...) (for faster range queries) -->
253
+ <dynamicField name="*_dtti" type="tdate" stored="false" indexed="true" multiValued="false"/>
254
+ <dynamicField name="*_dttim" type="tdate" stored="false" indexed="true" multiValued="true"/>
255
+ <dynamicField name="*_dtts" type="tdate" stored="true" indexed="false" multiValued="false"/>
256
+ <dynamicField name="*_dttsm" type="tdate" stored="true" indexed="false" multiValued="true"/>
257
+ <dynamicField name="*_dttsi" type="tdate" stored="true" indexed="true" multiValued="false"/>
258
+ <dynamicField name="*_dttsim" type="tdate" stored="true" indexed="true" multiValued="true"/>
259
+
260
+ <!-- long (_l...) -->
261
+ <dynamicField name="*_li" type="long" stored="false" indexed="true" multiValued="false"/>
262
+ <dynamicField name="*_lim" type="long" stored="false" indexed="true" multiValued="true"/>
263
+ <dynamicField name="*_ls" type="long" stored="true" indexed="false" multiValued="false"/>
264
+ <dynamicField name="*_lsm" type="long" stored="true" indexed="false" multiValued="true"/>
265
+ <dynamicField name="*_lsi" type="long" stored="true" indexed="true" multiValued="false"/>
266
+ <dynamicField name="*_lsim" type="long" stored="true" indexed="true" multiValued="true"/>
267
+
268
+ <!-- trie long (_lt...) (for faster range queries) -->
269
+ <dynamicField name="*_lti" type="tlong" stored="false" indexed="true" multiValued="false"/>
270
+ <dynamicField name="*_ltim" type="tlong" stored="false" indexed="true" multiValued="true"/>
271
+ <dynamicField name="*_lts" type="tlong" stored="true" indexed="false" multiValued="false"/>
272
+ <dynamicField name="*_ltsm" type="tlong" stored="true" indexed="false" multiValued="true"/>
273
+ <dynamicField name="*_ltsi" type="tlong" stored="true" indexed="true" multiValued="false"/>
274
+ <dynamicField name="*_ltsim" type="tlong" stored="true" indexed="true" multiValued="true"/>
275
+
276
+ <!-- double (_db...) -->
277
+ <dynamicField name="*_dbi" type="double" stored="false" indexed="true" multiValued="false"/>
278
+ <dynamicField name="*_dbim" type="double" stored="false" indexed="true" multiValued="true"/>
279
+ <dynamicField name="*_dbs" type="double" stored="true" indexed="false" multiValued="false"/>
280
+ <dynamicField name="*_dbsm" type="double" stored="true" indexed="false" multiValued="true"/>
281
+ <dynamicField name="*_dbsi" type="double" stored="true" indexed="true" multiValued="false"/>
282
+ <dynamicField name="*_dbsim" type="double" stored="true" indexed="true" multiValued="true"/>
283
+
284
+ <!-- trie double (_dbt...) (for faster range queries) -->
285
+ <dynamicField name="*_dbti" type="tdouble" stored="false" indexed="true" multiValued="false"/>
286
+ <dynamicField name="*_dbtim" type="tdouble" stored="false" indexed="true" multiValued="true"/>
287
+ <dynamicField name="*_dbts" type="tdouble" stored="true" indexed="false" multiValued="false"/>
288
+ <dynamicField name="*_dbtsm" type="tdouble" stored="true" indexed="false" multiValued="true"/>
289
+ <dynamicField name="*_dbtsi" type="tdouble" stored="true" indexed="true" multiValued="false"/>
290
+ <dynamicField name="*_dbtsim" type="tdouble" stored="true" indexed="true" multiValued="true"/>
291
+
292
+ <!-- float (_f...) -->
293
+ <dynamicField name="*_fi" type="float" stored="false" indexed="true" multiValued="false"/>
294
+ <dynamicField name="*_fim" type="float" stored="false" indexed="true" multiValued="true"/>
295
+ <dynamicField name="*_fs" type="float" stored="true" indexed="false" multiValued="false"/>
296
+ <dynamicField name="*_fsm" type="float" stored="true" indexed="false" multiValued="true"/>
297
+ <dynamicField name="*_fsi" type="float" stored="true" indexed="true" multiValued="false"/>
298
+ <dynamicField name="*_fsim" type="float" stored="true" indexed="true" multiValued="true"/>
299
+
300
+ <!-- trie float (_ft...) (for faster range queries) -->
301
+ <dynamicField name="*_fti" type="tfloat" stored="false" indexed="true" multiValued="false"/>
302
+ <dynamicField name="*_ftim" type="tfloat" stored="false" indexed="true" multiValued="true"/>
303
+ <dynamicField name="*_fts" type="tfloat" stored="true" indexed="false" multiValued="false"/>
304
+ <dynamicField name="*_ftsm" type="tfloat" stored="true" indexed="false" multiValued="true"/>
305
+ <dynamicField name="*_ftsi" type="tfloat" stored="true" indexed="true" multiValued="false"/>
306
+ <dynamicField name="*_ftsim" type="tfloat" stored="true" indexed="true" multiValued="true"/>
307
+
308
+ <!-- boolean (_b...) -->
309
+ <dynamicField name="*_bi" type="boolean" stored="false" indexed="true" multiValued="false"/>
310
+ <dynamicField name="*_bs" type="boolean" stored="true" indexed="false" multiValued="false"/>
311
+ <dynamicField name="*_bsi" type="boolean" stored="true" indexed="true" multiValued="false"/>
312
+
313
+ <!-- Type used to index the lat and lon components for the "location" FieldType -->
314
+ <dynamicField name="*_coordinate" type="tdouble" indexed="true" stored="false" />
315
+
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
+ <dynamicField name="*suggest" type="textSuggest" indexed="true" stored="false" multiValued="true" />
325
+
326
+ <!-- you must define copyField source and dest fields explicity or schemaBrowser doesn't work -->
327
+ <field name="all_text_timv" type="text" stored="false" indexed="true" multiValued="true" termVectors="true" termPositions="true" termOffsets="true"/>
328
+
329
+
330
+ </fields>
331
+
332
+ <!-- Field to use to determine and enforce document uniqueness.
333
+ Unless this field is marked with required="false", it will be a required field
334
+ -->
335
+ <uniqueKey>id</uniqueKey>
336
+
337
+ <!-- field for the QueryParser to use when an explicit fieldname is absent -->
338
+ <!-- <defaultSearchField>text</defaultSearchField> -->
339
+
340
+ <!-- SolrQueryParser configuration: defaultOperator="AND|OR" -->
341
+ <solrQueryParser defaultOperator="OR"/>
342
+
343
+ <!-- copyField commands copy one field to another at the time a document
344
+ is added to the index. It's used either to index the same field differently,
345
+ or to add multiple fields to the same field for easier/faster searching. -->
346
+ <!-- Copy Fields -->
347
+
348
+ <!-- Above, multiple source fields are copied to the [text] field.
349
+ Another way to map multiple source fields to the same
350
+ destination field is to use the dynamic field syntax.
351
+ copyField also supports a maxChars to copy setting. -->
352
+
353
+ <!-- <copyField source="*_tesim" dest="all_text_timv" maxChars="3000"/> -->
354
+ <!-- for suggestions -->
355
+ <copyField source="*_tesim" dest="suggest"/>
356
+ <copyField source="*_ssim" dest="suggest"/>
357
+
358
+ <!-- Similarity is the scoring routine for each document vs. a query.
359
+ A custom similarity may be specified here, but the default is fine
360
+ for most applications. -->
361
+ <!-- <similarity class="org.apache.lucene.search.DefaultSimilarity"/> -->
362
+ <!-- ... OR ...
363
+ Specify a SimilarityFactory class name implementation
364
+ allowing parameters to be used.
365
+ -->
366
+ <!--
367
+ <similarity class="com.example.solr.CustomSimilarityFactory">
368
+ <str name="paramkey">param value</str>
369
+ </similarity>
370
+ -->
371
+
372
+ </schema>