blacklight-access_controls 6.0.0 → 6.1.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.
Files changed (82) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/main.yml +31 -0
  3. data/.rubocop.yml +1 -4
  4. data/.rubocop_todo.yml +1 -1
  5. data/.solr_wrapper.yml +2 -0
  6. data/README.textile +3 -5
  7. data/Rakefile +2 -0
  8. data/VERSION +1 -1
  9. data/blacklight-access_controls.gemspec +4 -4
  10. data/lib/blacklight/access_controls/enforcement.rb +3 -2
  11. data/solr_conf/conf/_rest_managed.json +3 -0
  12. data/solr_conf/conf/admin-extra.html +12 -5
  13. data/solr_conf/conf/elevate.xml +1 -3
  14. data/solr_conf/conf/mapping-ISOLatin1Accent.txt +76 -76
  15. data/solr_conf/conf/schema.xml +257 -238
  16. data/solr_conf/conf/scripts.conf +24 -0
  17. data/solr_conf/conf/solrconfig.xml +104 -154
  18. data/solr_conf/conf/stopwords.txt +44 -0
  19. data/solr_conf/conf/{lang/stopwords_en.txt → stopwords_en.txt} +5 -1
  20. data/solr_conf/conf/synonyms.txt +5 -3
  21. data/solr_conf/conf/xslt/example.xsl +1 -1
  22. data/solr_conf/conf/xslt/example_atom.xsl +1 -1
  23. data/solr_conf/conf/xslt/example_rss.xsl +1 -1
  24. data/solr_conf/conf/xslt/luke.xsl +3 -3
  25. data/spec/factories/user.rb +1 -1
  26. data/spec/test_app_templates/lib/generators/test_app_generator.rb +1 -1
  27. data/spec/unit/blacklight/access_controls/search_builder_spec.rb +3 -5
  28. metadata +15 -70
  29. data/.travis.yml +0 -18
  30. data/solr_conf/conf/abc123 +0 -0
  31. data/solr_conf/conf/admin-extra.menu-bottom.html +0 -25
  32. data/solr_conf/conf/admin-extra.menu-top.html +0 -25
  33. data/solr_conf/conf/clustering/carrot2/kmeans-attributes.xml +0 -19
  34. data/solr_conf/conf/clustering/carrot2/lingo-attributes.xml +0 -24
  35. data/solr_conf/conf/clustering/carrot2/stc-attributes.xml +0 -19
  36. data/solr_conf/conf/currency.xml +0 -67
  37. data/solr_conf/conf/dataimport.properties +0 -3
  38. data/solr_conf/conf/db-data-config.xml +0 -93
  39. data/solr_conf/conf/lang/contractions_ca.txt +0 -8
  40. data/solr_conf/conf/lang/contractions_fr.txt +0 -15
  41. data/solr_conf/conf/lang/contractions_ga.txt +0 -5
  42. data/solr_conf/conf/lang/contractions_it.txt +0 -23
  43. data/solr_conf/conf/lang/hyphenations_ga.txt +0 -5
  44. data/solr_conf/conf/lang/stemdict_nl.txt +0 -6
  45. data/solr_conf/conf/lang/stoptags_ja.txt +0 -420
  46. data/solr_conf/conf/lang/stopwords_ar.txt +0 -125
  47. data/solr_conf/conf/lang/stopwords_bg.txt +0 -193
  48. data/solr_conf/conf/lang/stopwords_ca.txt +0 -220
  49. data/solr_conf/conf/lang/stopwords_ckb.txt +0 -136
  50. data/solr_conf/conf/lang/stopwords_cz.txt +0 -172
  51. data/solr_conf/conf/lang/stopwords_da.txt +0 -110
  52. data/solr_conf/conf/lang/stopwords_de.txt +0 -294
  53. data/solr_conf/conf/lang/stopwords_el.txt +0 -78
  54. data/solr_conf/conf/lang/stopwords_es.txt +0 -356
  55. data/solr_conf/conf/lang/stopwords_eu.txt +0 -99
  56. data/solr_conf/conf/lang/stopwords_fa.txt +0 -313
  57. data/solr_conf/conf/lang/stopwords_fi.txt +0 -97
  58. data/solr_conf/conf/lang/stopwords_fr.txt +0 -186
  59. data/solr_conf/conf/lang/stopwords_ga.txt +0 -110
  60. data/solr_conf/conf/lang/stopwords_gl.txt +0 -161
  61. data/solr_conf/conf/lang/stopwords_hi.txt +0 -235
  62. data/solr_conf/conf/lang/stopwords_hu.txt +0 -211
  63. data/solr_conf/conf/lang/stopwords_hy.txt +0 -46
  64. data/solr_conf/conf/lang/stopwords_id.txt +0 -359
  65. data/solr_conf/conf/lang/stopwords_it.txt +0 -303
  66. data/solr_conf/conf/lang/stopwords_ja.txt +0 -127
  67. data/solr_conf/conf/lang/stopwords_lv.txt +0 -172
  68. data/solr_conf/conf/lang/stopwords_nl.txt +0 -119
  69. data/solr_conf/conf/lang/stopwords_no.txt +0 -194
  70. data/solr_conf/conf/lang/stopwords_pt.txt +0 -253
  71. data/solr_conf/conf/lang/stopwords_ro.txt +0 -233
  72. data/solr_conf/conf/lang/stopwords_ru.txt +0 -243
  73. data/solr_conf/conf/lang/stopwords_sv.txt +0 -133
  74. data/solr_conf/conf/lang/stopwords_th.txt +0 -119
  75. data/solr_conf/conf/lang/stopwords_tr.txt +0 -212
  76. data/solr_conf/conf/lang/userdict_ja.txt +0 -29
  77. data/solr_conf/conf/mapping-FoldToASCII.txt +0 -3813
  78. data/solr_conf/conf/solrconfig.adams.xml +0 -1903
  79. data/solr_conf/conf/solrconfig.old.xml +0 -1634
  80. data/solr_conf/conf/solrconfig.xml.orig +0 -3531
  81. data/solr_conf/conf/update-script.js +0 -53
  82. data/solr_conf/conf/xslt/updateXml.xsl +0 -70
@@ -1,326 +1,196 @@
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" distanceUnits="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>
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <schema name="Hydra" version="1.5">
3
+ <!-- NOTE: various comments and unused configuration possibilities have been purged
4
+ from this file. Please refer to http://wiki.apache.org/solr/SchemaXml,
5
+ as well as the default schema file included with Solr -->
177
6
 
7
+ <uniqueKey>id</uniqueKey>
178
8
 
179
9
  <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
10
  <field name="id" type="string" stored="true" indexed="true" multiValued="false" required="true"/>
11
+ <field name="format" type="string" stored="true" indexed="true" multiValued="true" />
12
+ <field name="_version_" type="long" indexed="true" stored="true"/>
186
13
  <field name="timestamp" type="date" indexed="true" stored="true" default="NOW" multiValued="false"/>
187
-
14
+
188
15
  <field name="lat" type="tdouble" stored="true" indexed="true" multiValued="false"/>
189
16
  <field name="lng" type="tdouble" stored="true" indexed="true" multiValued="false"/>
190
-
191
17
  <!-- NOTE: not all possible Solr field types are represented in the dynamic fields -->
192
18
 
193
19
  <!-- text (_t...) -->
20
+
194
21
  <dynamicField name="*_ti" type="text" stored="false" indexed="true" multiValued="false"/>
195
22
  <dynamicField name="*_tim" type="text" stored="false" indexed="true" multiValued="true"/>
23
+
196
24
  <dynamicField name="*_ts" type="text" stored="true" indexed="false" multiValued="false"/>
197
25
  <dynamicField name="*_tsm" type="text" stored="true" indexed="false" multiValued="true"/>
198
26
  <dynamicField name="*_tsi" type="text" stored="true" indexed="true" multiValued="false"/>
199
27
  <dynamicField name="*_tsim" type="text" stored="true" indexed="true" multiValued="true"/>
28
+
200
29
  <dynamicField name="*_tiv" type="text" stored="false" indexed="true" multiValued="false" termVectors="true" termPositions="true" termOffsets="true"/>
201
30
  <dynamicField name="*_timv" type="text" stored="false" indexed="true" multiValued="true" termVectors="true" termPositions="true" termOffsets="true"/>
31
+
202
32
  <dynamicField name="*_tsiv" type="text" stored="true" indexed="true" multiValued="false" termVectors="true" termPositions="true" termOffsets="true"/>
203
33
  <dynamicField name="*_tsimv" type="text" stored="true" indexed="true" multiValued="true" termVectors="true" termPositions="true" termOffsets="true"/>
204
-
34
+
205
35
  <!-- English text (_te...) -->
36
+
206
37
  <dynamicField name="*_tei" type="text_en" stored="false" indexed="true" multiValued="false"/>
207
38
  <dynamicField name="*_teim" type="text_en" stored="false" indexed="true" multiValued="true"/>
39
+
208
40
  <dynamicField name="*_tes" type="text_en" stored="true" indexed="false" multiValued="false"/>
209
41
  <dynamicField name="*_tesm" type="text_en" stored="true" indexed="false" multiValued="true"/>
210
42
  <dynamicField name="*_tesi" type="text_en" stored="true" indexed="true" multiValued="false"/>
211
43
  <dynamicField name="*_tesim" type="text_en" stored="true" indexed="true" multiValued="true"/>
44
+
212
45
  <dynamicField name="*_teiv" type="text_en" stored="false" indexed="true" multiValued="false" termVectors="true" termPositions="true" termOffsets="true"/>
213
46
  <dynamicField name="*_teimv" type="text_en" stored="false" indexed="true" multiValued="true" termVectors="true" termPositions="true" termOffsets="true"/>
47
+
214
48
  <dynamicField name="*_tesiv" type="text_en" stored="true" indexed="true" multiValued="false" termVectors="true" termPositions="true" termOffsets="true"/>
215
49
  <dynamicField name="*_tesimv" type="text_en" stored="true" indexed="true" multiValued="true" termVectors="true" termPositions="true" termOffsets="true"/>
216
-
50
+
217
51
  <!-- string (_s...) -->
52
+
218
53
  <dynamicField name="*_si" type="string" stored="false" indexed="true" multiValued="false"/>
219
54
  <dynamicField name="*_sim" type="string" stored="false" indexed="true" multiValued="true"/>
55
+
220
56
  <dynamicField name="*_ss" type="string" stored="true" indexed="false" multiValued="false"/>
221
57
  <dynamicField name="*_ssm" type="string" stored="true" indexed="false" multiValued="true"/>
222
58
  <dynamicField name="*_ssi" type="string" stored="true" indexed="true" multiValued="false"/>
223
59
  <dynamicField name="*_ssim" type="string" stored="true" indexed="true" multiValued="true"/>
60
+
224
61
  <dynamicField name="*_ssort" type="alphaSort" stored="false" indexed="true" multiValued="false"/>
225
-
62
+
63
+
226
64
  <!-- integer (_i...) -->
65
+
227
66
  <dynamicField name="*_ii" type="int" stored="false" indexed="true" multiValued="false"/>
228
67
  <dynamicField name="*_iim" type="int" stored="false" indexed="true" multiValued="true"/>
68
+
229
69
  <dynamicField name="*_is" type="int" stored="true" indexed="false" multiValued="false"/>
230
70
  <dynamicField name="*_ism" type="int" stored="true" indexed="false" multiValued="true"/>
231
71
  <dynamicField name="*_isi" type="int" stored="true" indexed="true" multiValued="false"/>
232
72
  <dynamicField name="*_isim" type="int" stored="true" indexed="true" multiValued="true"/>
233
-
234
- <!-- trie integer (_it...) (for faster range queries) -->
73
+
74
+ <!-- IntegerPointField (_it...) (for faster range queries) -->
75
+
235
76
  <dynamicField name="*_iti" type="tint" stored="false" indexed="true" multiValued="false"/>
236
77
  <dynamicField name="*_itim" type="tint" stored="false" indexed="true" multiValued="true"/>
78
+
237
79
  <dynamicField name="*_its" type="tint" stored="true" indexed="false" multiValued="false"/>
238
80
  <dynamicField name="*_itsm" type="tint" stored="true" indexed="false" multiValued="true"/>
239
81
  <dynamicField name="*_itsi" type="tint" stored="true" indexed="true" multiValued="false"/>
240
82
  <dynamicField name="*_itsim" type="tint" stored="true" indexed="true" multiValued="true"/>
241
-
83
+
242
84
  <!-- date (_dt...) -->
243
85
  <!-- The format for this date field is of the form 1995-12-31T23:59:59Z
244
86
  Optional fractional seconds are allowed: 1995-12-31T23:59:59.999Z -->
87
+
245
88
  <dynamicField name="*_dti" type="date" stored="false" indexed="true" multiValued="false"/>
246
89
  <dynamicField name="*_dtim" type="date" stored="false" indexed="true" multiValued="true"/>
90
+
247
91
  <dynamicField name="*_dts" type="date" stored="true" indexed="false" multiValued="false"/>
248
92
  <dynamicField name="*_dtsm" type="date" stored="true" indexed="false" multiValued="true"/>
249
93
  <dynamicField name="*_dtsi" type="date" stored="true" indexed="true" multiValued="false"/>
250
94
  <dynamicField name="*_dtsim" type="date" stored="true" indexed="true" multiValued="true"/>
251
-
252
- <!-- trie date (_dtt...) (for faster range queries) -->
95
+
96
+ <!-- DatePointField (_dtt...) (for faster range queries) -->
97
+
253
98
  <dynamicField name="*_dtti" type="tdate" stored="false" indexed="true" multiValued="false"/>
254
99
  <dynamicField name="*_dttim" type="tdate" stored="false" indexed="true" multiValued="true"/>
100
+
255
101
  <dynamicField name="*_dtts" type="tdate" stored="true" indexed="false" multiValued="false"/>
256
102
  <dynamicField name="*_dttsm" type="tdate" stored="true" indexed="false" multiValued="true"/>
257
103
  <dynamicField name="*_dttsi" type="tdate" stored="true" indexed="true" multiValued="false"/>
258
104
  <dynamicField name="*_dttsim" type="tdate" stored="true" indexed="true" multiValued="true"/>
259
-
105
+
260
106
  <!-- long (_l...) -->
107
+
261
108
  <dynamicField name="*_li" type="long" stored="false" indexed="true" multiValued="false"/>
262
109
  <dynamicField name="*_lim" type="long" stored="false" indexed="true" multiValued="true"/>
110
+
263
111
  <dynamicField name="*_ls" type="long" stored="true" indexed="false" multiValued="false"/>
264
112
  <dynamicField name="*_lsm" type="long" stored="true" indexed="false" multiValued="true"/>
265
113
  <dynamicField name="*_lsi" type="long" stored="true" indexed="true" multiValued="false"/>
266
114
  <dynamicField name="*_lsim" type="long" stored="true" indexed="true" multiValued="true"/>
267
-
268
- <!-- trie long (_lt...) (for faster range queries) -->
115
+
116
+ <!-- LongPointField (_lt...) (for faster range queries) -->
117
+
269
118
  <dynamicField name="*_lti" type="tlong" stored="false" indexed="true" multiValued="false"/>
270
119
  <dynamicField name="*_ltim" type="tlong" stored="false" indexed="true" multiValued="true"/>
120
+
271
121
  <dynamicField name="*_lts" type="tlong" stored="true" indexed="false" multiValued="false"/>
272
122
  <dynamicField name="*_ltsm" type="tlong" stored="true" indexed="false" multiValued="true"/>
273
123
  <dynamicField name="*_ltsi" type="tlong" stored="true" indexed="true" multiValued="false"/>
274
124
  <dynamicField name="*_ltsim" type="tlong" stored="true" indexed="true" multiValued="true"/>
275
-
125
+
276
126
  <!-- double (_db...) -->
127
+
277
128
  <dynamicField name="*_dbi" type="double" stored="false" indexed="true" multiValued="false"/>
278
129
  <dynamicField name="*_dbim" type="double" stored="false" indexed="true" multiValued="true"/>
130
+
279
131
  <dynamicField name="*_dbs" type="double" stored="true" indexed="false" multiValued="false"/>
280
132
  <dynamicField name="*_dbsm" type="double" stored="true" indexed="false" multiValued="true"/>
281
133
  <dynamicField name="*_dbsi" type="double" stored="true" indexed="true" multiValued="false"/>
282
134
  <dynamicField name="*_dbsim" type="double" stored="true" indexed="true" multiValued="true"/>
283
-
284
- <!-- trie double (_dbt...) (for faster range queries) -->
135
+
136
+ <!-- DoublePointField (_dbt...) (for faster range queries) -->
137
+
285
138
  <dynamicField name="*_dbti" type="tdouble" stored="false" indexed="true" multiValued="false"/>
286
139
  <dynamicField name="*_dbtim" type="tdouble" stored="false" indexed="true" multiValued="true"/>
140
+
287
141
  <dynamicField name="*_dbts" type="tdouble" stored="true" indexed="false" multiValued="false"/>
288
142
  <dynamicField name="*_dbtsm" type="tdouble" stored="true" indexed="false" multiValued="true"/>
289
143
  <dynamicField name="*_dbtsi" type="tdouble" stored="true" indexed="true" multiValued="false"/>
290
144
  <dynamicField name="*_dbtsim" type="tdouble" stored="true" indexed="true" multiValued="true"/>
291
-
145
+
292
146
  <!-- float (_f...) -->
147
+
293
148
  <dynamicField name="*_fi" type="float" stored="false" indexed="true" multiValued="false"/>
294
149
  <dynamicField name="*_fim" type="float" stored="false" indexed="true" multiValued="true"/>
150
+
295
151
  <dynamicField name="*_fs" type="float" stored="true" indexed="false" multiValued="false"/>
296
152
  <dynamicField name="*_fsm" type="float" stored="true" indexed="false" multiValued="true"/>
297
153
  <dynamicField name="*_fsi" type="float" stored="true" indexed="true" multiValued="false"/>
298
154
  <dynamicField name="*_fsim" type="float" stored="true" indexed="true" multiValued="true"/>
299
-
300
- <!-- trie float (_ft...) (for faster range queries) -->
155
+
156
+ <!-- FloatPointField (_ft...) (for faster range queries) -->
157
+
301
158
  <dynamicField name="*_fti" type="tfloat" stored="false" indexed="true" multiValued="false"/>
302
159
  <dynamicField name="*_ftim" type="tfloat" stored="false" indexed="true" multiValued="true"/>
160
+
303
161
  <dynamicField name="*_fts" type="tfloat" stored="true" indexed="false" multiValued="false"/>
304
162
  <dynamicField name="*_ftsm" type="tfloat" stored="true" indexed="false" multiValued="true"/>
305
163
  <dynamicField name="*_ftsi" type="tfloat" stored="true" indexed="true" multiValued="false"/>
306
164
  <dynamicField name="*_ftsim" type="tfloat" stored="true" indexed="true" multiValued="true"/>
307
-
165
+
308
166
  <!-- boolean (_b...) -->
167
+
309
168
  <dynamicField name="*_bi" type="boolean" stored="false" indexed="true" multiValued="false"/>
169
+
310
170
  <dynamicField name="*_bs" type="boolean" stored="true" indexed="false" multiValued="false"/>
311
171
  <dynamicField name="*_bsi" type="boolean" stored="true" indexed="true" multiValued="false"/>
312
-
172
+
313
173
  <!-- Type used to index the lat and lon components for the "location" FieldType -->
174
+
314
175
  <dynamicField name="*_coordinate" type="tdouble" indexed="true" stored="false" />
315
176
 
177
+
316
178
  <!-- location (_ll...) -->
179
+
317
180
  <dynamicField name="*_lli" type="location" stored="false" indexed="true" multiValued="false"/>
318
181
  <dynamicField name="*_llim" type="location" stored="false" indexed="true" multiValued="true"/>
182
+
319
183
  <dynamicField name="*_lls" type="location" stored="true" indexed="false" multiValued="false"/>
320
184
  <dynamicField name="*_llsm" type="location" stored="true" indexed="false" multiValued="true"/>
321
185
  <dynamicField name="*_llsi" type="location" stored="true" indexed="true" multiValued="false"/>
322
186
  <dynamicField name="*_llsim" type="location" stored="true" indexed="true" multiValued="true"/>
323
187
 
188
+ <dynamicField name="*_srpt" type="location_rpt" stored="true" indexed="true" multiValued="true" />
189
+ <dynamicField name="*_bbox" type="bbox" stored="true" indexed="true" />
190
+
191
+
192
+ <!-- suggest and spelling -->
193
+ <dynamicField name="*spell" type="textSpell" indexed="true" stored="false" multiValued="true" />
324
194
  <dynamicField name="*suggest" type="textSuggest" indexed="true" stored="false" multiValued="true" />
325
195
 
326
196
  <!-- you must define copyField source and dest fields explicity or schemaBrowser doesn't work -->
@@ -329,41 +199,190 @@
329
199
 
330
200
  </fields>
331
201
 
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
- <!-- copyField commands copy one field to another at the time a document
341
- is added to the index. It's used either to index the same field differently,
342
- or to add multiple fields to the same field for easier/faster searching. -->
343
- <!-- Copy Fields -->
344
-
345
- <!-- Above, multiple source fields are copied to the [text] field.
346
- Another way to map multiple source fields to the same
347
- destination field is to use the dynamic field syntax.
348
- copyField also supports a maxChars to copy setting. -->
349
-
350
- <!-- <copyField source="*_tesim" dest="all_text_timv" maxChars="3000"/> -->
351
- <!-- for suggestions -->
352
- <copyField source="*_tesim" dest="suggest"/>
353
- <copyField source="*_ssim" dest="suggest"/>
354
-
355
- <!-- Similarity is the scoring routine for each document vs. a query.
356
- A custom similarity may be specified here, but the default is fine
357
- for most applications. -->
358
- <!-- <similarity class="org.apache.lucene.search.DefaultSimilarity"/> -->
359
- <!-- ... OR ...
360
- Specify a SimilarityFactory class name implementation
361
- allowing parameters to be used.
362
- -->
363
- <!--
364
- <similarity class="com.example.solr.CustomSimilarityFactory">
365
- <str name="paramkey">param value</str>
366
- </similarity>
367
- -->
202
+
203
+ <!-- Above, multiple source fields are copied to the [text] field.
204
+ Another way to map multiple source fields to the same
205
+ destination field is to use the dynamic field syntax.
206
+ copyField also supports a maxChars to copy setting. -->
207
+
208
+ <copyField source="*_tsim" dest="all_text_timv" maxChars="3000"/>
209
+ <copyField source="*_tesim" dest="all_text_timv" maxChars="3000"/>
210
+ <copyField source="*_ssim" dest="all_text_timv" maxChars="3000"/>
211
+ <copyField source="*_si" dest="all_text_timv" maxChars="3000"/>
212
+
213
+ <copyField source="*_tsim" dest="suggest"/>
214
+ <copyField source="*_tesim" dest="suggest"/>
215
+ <copyField source="*_ssim" dest="suggest"/>
216
+ <copyField source="*_si" dest="suggest"/>
217
+
218
+ <!-- TODO: Look into if these are actually being used. -->
219
+ <copyField source="*_tsim" dest="spell"/>
220
+ <copyField source="*_tesim" dest="spell"/>
221
+ <copyField source="*_ssim" dest="spell"/>
222
+ <copyField source="*_si" dest="spell"/>
223
+
224
+ <copyField source="author_tsim" dest="author_spell"/>
225
+ <copyField source="subject_ssim" dest="subject_spell"/>
226
+ <copyField source="title_tsim" dest="title_spell"/>
227
+
228
+ <types>
229
+ <fieldType name="string" class="solr.StrField" sortMissingLast="true" />
230
+ <fieldType name="boolean" class="solr.BoolField" sortMissingLast="true"/>
231
+ <fieldType name="rand" class="solr.RandomSortField" omitNorms="true"/>
232
+
233
+ <!-- Default numeric field types. -->
234
+ <fieldType name="int" class="solr.IntPointField" docValues="true"/>
235
+ <fieldType name="float" class="solr.FloatPointField" docValues="true"/>
236
+ <fieldType name="long" class="solr.LongPointField" docValues="true"/>
237
+ <fieldType name="double" class="solr.DoublePointField" docValues="true"/>
238
+
239
+ <!-- PointField numeric field types for faster range queries -->
240
+ <fieldType name="tint" class="solr.IntPointField" docValues="true"/>
241
+ <fieldType name="tfloat" class="solr.FloatPointField" docValues="true"/>
242
+ <fieldType name="tlong" class="solr.LongPointField" docValues="true"/>
243
+ <fieldType name="tdouble" class="solr.DoublePointField" docValues="true"/>
244
+
245
+ <!-- The format for this date field is of the form 1995-12-31T23:59:59Z
246
+ Optional fractional seconds are allowed: 1995-12-31T23:59:59.999Z
247
+ -->
248
+ <fieldType name="date" class="solr.DatePointField" docValues="true"/>
249
+ <!-- A PointField based date field for faster date range queries and date faceting. -->
250
+ <fieldType name="tdate" class="solr.DatePointField" docValues="true"/>
251
+
252
+
253
+ <!-- This point type indexes the coordinates as separate fields (subFields)
254
+ If subFieldType is defined, it references a type, and a dynamic field
255
+ definition is created matching *___<typename>. Alternately, if
256
+ subFieldSuffix is defined, that is used to create the subFields.
257
+ Example: if subFieldType="double", then the coordinates would be
258
+ indexed in fields myloc_0___double,myloc_1___double.
259
+ Example: if subFieldSuffix="_d" then the coordinates would be indexed
260
+ in fields myloc_0_d,myloc_1_d
261
+ The subFields are an implementation detail of the fieldType, and end
262
+ users normally should not need to know about them.
263
+ -->
264
+ <fieldType name="point" class="solr.PointType" dimension="2" subFieldSuffix="_d"/>
265
+
266
+ <!-- A specialized field for geospatial search filters and distance sorting. -->
267
+ <fieldType name="location" class="solr.LatLonPointSpatialField" docValues="true"/>
268
+
269
+ <!-- An alternative geospatial field type new to Solr 4. It supports multiValued and polygon shapes.
270
+ For more information about this and other Spatial fields new to Solr 4, see:
271
+ http://wiki.apache.org/solr/SolrAdaptersForLuceneSpatial4
272
+ -->
273
+ <fieldType name="location_rpt" class="solr.SpatialRecursivePrefixTreeFieldType"
274
+ geo="true" distErrPct="0.025" maxDistErr="0.001" distanceUnits="kilometers"/>
275
+
276
+ <field name="bbox" type="bbox" />
277
+ <fieldType name="bbox" class="solr.BBoxField"
278
+ geo="true" distanceUnits="kilometers" numberType="_bbox_coord" storeSubFields="false"/>
279
+ <fieldType name="_bbox_coord" class="solr.DoublePointField" docValues="true" stored="false"/>
280
+
281
+ <fieldType name="text" class="solr.TextField" omitNorms="false">
282
+ <analyzer>
283
+ <tokenizer class="solr.ICUTokenizerFactory"/>
284
+ <filter class="solr.ICUFoldingFilterFactory"/> <!-- NFKC, case folding, diacritics removed -->
285
+ <filter class="solr.TrimFilterFactory"/>
286
+ </analyzer>
287
+ </fieldType>
288
+
289
+ <!-- A text field that only splits on whitespace for exact matching of words -->
290
+ <fieldType name="text_ws" class="solr.TextField" positionIncrementGap="100">
291
+ <analyzer>
292
+ <tokenizer class="solr.WhitespaceTokenizerFactory"/>
293
+ <filter class="solr.TrimFilterFactory"/>
294
+ </analyzer>
295
+ </fieldType>
296
+
297
+ <!-- single token analyzed text, for sorting. Punctuation is significant. -->
298
+ <fieldtype name="alphaSort" class="solr.TextField" sortMissingLast="true" omitNorms="true">
299
+ <analyzer>
300
+ <tokenizer class="solr.KeywordTokenizerFactory" />
301
+ <filter class="solr.ICUFoldingFilterFactory"/>
302
+ <filter class="solr.TrimFilterFactory" />
303
+ </analyzer>
304
+ </fieldtype>
305
+
306
+ <!-- A text field with defaults appropriate for English -->
307
+ <fieldType name="text_en" class="solr.TextField" positionIncrementGap="100">
308
+ <analyzer>
309
+ <tokenizer class="solr.ICUTokenizerFactory"/>
310
+ <filter class="solr.ICUFoldingFilterFactory"/> <!-- NFKC, case folding, diacritics removed -->
311
+ <filter class="solr.EnglishPossessiveFilterFactory"/>
312
+ <!-- EnglishMinimalStemFilterFactory is less aggressive than PorterStemFilterFactory: -->
313
+ <filter class="solr.EnglishMinimalStemFilterFactory"/>
314
+ <!--
315
+ <filter class="solr.PorterStemFilterFactory"/>
316
+ -->
317
+ <filter class="solr.TrimFilterFactory"/>
318
+ </analyzer>
319
+ </fieldType>
320
+
321
+ <!-- A text field with defaults appropriate for English an NGrams -->
322
+ <fieldType name="text_en_ng" class="solr.TextField" positionIncrementGap="100">
323
+ <analyzer type="index">
324
+ <tokenizer class="solr.ICUTokenizerFactory"/>
325
+ <filter class="solr.ICUFoldingFilterFactory"/> <!-- NFKC, case folding, diacritics removed -->
326
+ <filter class="solr.EnglishPossessiveFilterFactory"/>
327
+ <!-- EnglishMinimalStemFilterFactory is less aggressive than PorterStemFilterFactory: -->
328
+ <filter class="solr.EnglishMinimalStemFilterFactory"/>
329
+ <filter class="solr.TrimFilterFactory"/>
330
+ <filter class="solr.EdgeNGramFilterFactory" minGramSize="3" maxGramSize="15" />
331
+ </analyzer>
332
+
333
+ <analyzer type="index">
334
+ <tokenizer class="solr.ICUTokenizerFactory"/>
335
+ <filter class="solr.ICUFoldingFilterFactory"/> <!-- NFKC, case folding, diacritics removed -->
336
+ <filter class="solr.EnglishPossessiveFilterFactory"/>
337
+ <!-- EnglishMinimalStemFilterFactory is less aggressive than PorterStemFilterFactory: -->
338
+ <filter class="solr.EnglishMinimalStemFilterFactory"/>
339
+ <filter class="solr.TrimFilterFactory"/>
340
+ </analyzer>
341
+ </fieldType>
342
+
343
+ <fieldType name="pid_text" class="solr.TextField" positionIncrementGap="100">
344
+ <analyzer>
345
+ <tokenizer class="solr.KeywordTokenizerFactory"/>
346
+ </analyzer>
347
+ </fieldType>
348
+
349
+ <fieldType name="textSpell" class="solr.TextField" positionIncrementGap="100" >
350
+ <analyzer>
351
+ <tokenizer class="solr.StandardTokenizerFactory"/>
352
+ <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
353
+ <filter class="solr.LowerCaseFilterFactory"/>
354
+ <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
355
+ </analyzer>
356
+ </fieldType>
357
+
358
+ <fieldType name="textSuggest" class="solr.TextField" positionIncrementGap="100">
359
+ <analyzer>
360
+ <tokenizer class="solr.KeywordTokenizerFactory"/>
361
+ <filter class="solr.LowerCaseFilterFactory"/>
362
+ <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
363
+ </analyzer>
364
+ </fieldType>
365
+
366
+ <!-- queries for paths match documents at that path, or in descendent paths -->
367
+ <fieldType name="descendent_path" class="solr.TextField">
368
+ <analyzer type="index">
369
+ <tokenizer class="solr.PathHierarchyTokenizerFactory" delimiter="/" />
370
+ </analyzer>
371
+ <analyzer type="query">
372
+ <tokenizer class="solr.KeywordTokenizerFactory" />
373
+ </analyzer>
374
+ </fieldType>
375
+
376
+ <!-- queries for paths match documents at that path, or in ancestor paths -->
377
+ <fieldType name="ancestor_path" class="solr.TextField">
378
+ <analyzer type="index">
379
+ <tokenizer class="solr.KeywordTokenizerFactory" />
380
+ </analyzer>
381
+ <analyzer type="query">
382
+ <tokenizer class="solr.PathHierarchyTokenizerFactory" delimiter="/" />
383
+ </analyzer>
384
+ </fieldType>
385
+
386
+ </types>
368
387
 
369
388
  </schema>