hydra-ezid 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (50) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +46 -0
  3. data/.gitmodules +4 -0
  4. data/.travis.yml +17 -0
  5. data/CONTRIBUTING.md +111 -0
  6. data/CONTRIBUTORS.md +3 -0
  7. data/Gemfile +17 -0
  8. data/History.md +5 -0
  9. data/LICENSE +191 -0
  10. data/README.md +72 -0
  11. data/Rakefile +16 -0
  12. data/app/assets/images/hydra_ezid/.keep +0 -0
  13. data/app/assets/javascripts/hydra_ezid/.keep +0 -0
  14. data/app/assets/stylesheets/hydra_ezid/.keep +0 -0
  15. data/app/controllers/.keep +0 -0
  16. data/app/controllers/ezid_controller.rb +3 -0
  17. data/app/helpers/.keep +0 -0
  18. data/app/helpers/ezid_helper.rb +3 -0
  19. data/app/mailers/.keep +0 -0
  20. data/app/models/.keep +0 -0
  21. data/app/views/.keep +0 -0
  22. data/app/views/ezid/_button_to_mint_ezid.html.erb +1 -0
  23. data/config/routes.rb +3 -0
  24. data/fedora_conf/conf/development/fedora.fcfg +946 -0
  25. data/fedora_conf/conf/test/fedora.fcfg +946 -0
  26. data/gemfiles/rails3.gemfile +6 -0
  27. data/gemfiles/rails4.gemfile +6 -0
  28. data/hydra-ezid.gemspec +29 -0
  29. data/lib/hydra-ezid.rb +6 -0
  30. data/lib/hydra/ezid.rb +11 -0
  31. data/lib/hydra/ezid/controller_behavior.rb +27 -0
  32. data/lib/hydra/ezid/model_methods.rb +10 -0
  33. data/lib/hydra/ezid/version.rb +5 -0
  34. data/solr_conf/conf/schema.xml +372 -0
  35. data/solr_conf/conf/solrconfig.xml +164 -0
  36. data/solr_conf/solr.xml +35 -0
  37. data/spec/controllers/ezid_controller_spec.rb +4 -0
  38. data/spec/factories.rb +3 -0
  39. data/spec/factories/.keep +0 -0
  40. data/spec/helpers/ezid_helper_spec.rb +6 -0
  41. data/spec/models/ezid_spec.rb +4 -0
  42. data/spec/spec_helper.rb +30 -0
  43. data/spec/support/app/models/sample.rb +36 -0
  44. data/spec/support/app/views/catalog/_sort_and_per_page.html.erb +10 -0
  45. data/spec/support/db/migrate/20111101221803_create_searches.rb +16 -0
  46. data/spec/support/lib/generators/test_app_generator.rb +56 -0
  47. data/spec/support/lib/tasks/rspec.rake +8 -0
  48. data/tasks/hydra-ezid-dev.rake +68 -0
  49. data/tasks/jetty.rake +40 -0
  50. metadata +207 -0
@@ -0,0 +1,6 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Please see hydra-ezid.gemspec for dependency information.
4
+ gemspec :path => '../'
5
+
6
+ gem 'rails', '~> 3.2'
@@ -0,0 +1,6 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Please see hydra-ezid.gemspec for dependency information.
4
+ gemspec :path => '../'
5
+
6
+ gem 'rails', '~> 4.0.0'
@@ -0,0 +1,29 @@
1
+ lib = File.expand_path('../lib', __FILE__)
2
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
+
4
+ require 'hydra/ezid/version'
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = 'hydra-ezid'
8
+ s.version = Hydra::Ezid::VERSION
9
+ s.authors = ['Michael J. Giarlo']
10
+ s.email = ['leftwing@alumni.rutgers.edu']
11
+ s.summary = 'A Rails engine providing EZID services for Hydra applications'
12
+ s.description = 'A Rails engine providing EZID services for Hydra applications'
13
+ s.homepage = 'https://github.com/psu-stewardship/hydra-ezid'
14
+ s.license = 'APACHE2'
15
+
16
+ s.files = `git ls-files`.split($/)
17
+ s.executables = s.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ s.test_files = s.files.grep(%r{^(test|spec|features)/})
19
+ s.require_paths = ['lib']
20
+
21
+ s.add_dependency 'blacklight'
22
+ s.add_dependency 'hydra-head'
23
+ s.add_dependency 'ezid'
24
+
25
+ s.add_development_dependency 'bundler', '~> 1.3'
26
+ s.add_development_dependency 'rake'
27
+ s.add_development_dependency 'rspec-rails'
28
+ s.add_development_dependency 'sass-rails', '< 5', '>= 3.2'
29
+ end
data/lib/hydra-ezid.rb ADDED
@@ -0,0 +1,6 @@
1
+ require 'hydra/ezid'
2
+ require 'hydra/ezid/controller_behavior'
3
+ require 'hydra/ezid/model_methods'
4
+ require "blacklight"
5
+ require "hydra/head"
6
+ require "active_fedora"
data/lib/hydra/ezid.rb ADDED
@@ -0,0 +1,11 @@
1
+ module Hydra
2
+ module Ezid
3
+ extend ActiveSupport::Autoload
4
+ autoload :Version
5
+ autoload :ControllerBehavior
6
+ autoload :ModelMethods
7
+ class Engine < ::Rails::Engine
8
+ engine_name 'ezid'
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,27 @@
1
+ module Hydra
2
+ module EzidControllerBehavior
3
+ extend ActiveSupport::Concern
4
+
5
+ include do
6
+ # other includes
7
+ end
8
+
9
+ def new
10
+ end
11
+
12
+ def show
13
+ end
14
+
15
+ def edit
16
+ end
17
+
18
+ def create
19
+ end
20
+
21
+ def update
22
+ end
23
+
24
+ def destroy
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,10 @@
1
+ module Hydra
2
+ module Ezid
3
+ module ModelMethods
4
+ extend ActiveSupport::Concern
5
+ include do
6
+ # include stuff
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,5 @@
1
+ module Hydra
2
+ module Ezid
3
+ VERSION = '0.0.1'
4
+ end
5
+ end
@@ -0,0 +1,372 @@
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 -->
6
+
7
+ <uniqueKey>id</uniqueKey>
8
+
9
+ <fields>
10
+ <field name="id" type="string" stored="true" indexed="true" multiValued="false" required="true"/>
11
+ <field name="timestamp" type="date" indexed="true" stored="true" default="NOW" multiValued="false"/>
12
+
13
+ <field name="lat" type="tdouble" stored="true" indexed="true" multiValued="false"/>
14
+ <field name="lng" type="tdouble" stored="true" indexed="true" multiValued="false"/>
15
+
16
+ <!--these fields are hard coded in places in hydra-head -->
17
+ <field name="active_fedora_model_s" type="string" stored="true" indexed="true"/>
18
+ <field name="object_profile_display" type="string" stored="true" indexed="true"/>
19
+ <field name="has_model_s" type="string" stored="true" indexed="true"/>
20
+ <field name="is_governed_by_s" type="string" stored="true" indexed="true"/>
21
+
22
+
23
+ <!--
24
+ These are hard coded in places in hydra-head, but we hope to fix that.
25
+
26
+ <field name="inheritable_discover_access_person_t" type="string" stored="true" indexed="true" multiValued="true"/>
27
+ <field name="inheritable_read_access_person_t" type="string" stored="true" indexed="true" multiValued="true"/>
28
+ <field name="inheritable_edit_access_person_t" type="string" stored="true" indexed="true" multiValued="true"/>
29
+ <field name="inheritable_discover_access_group_t" type="string" stored="true" indexed="true" multiValued="true"/>
30
+ <field name="inheritable_read_access_group_t" type="string" stored="true" indexed="true" multiValued="true"/>
31
+ <field name="inheritable_edit_access_group_t" type="string" stored="true" indexed="true" multiValued="true"/>
32
+ <field name="read_access_person_t" type="string" stored="true" indexed="true" multiValued="true"/>
33
+ <field name="discover_access_person_t" type="string" stored="true" indexed="true" multiValued="true"/>
34
+ <field name="edit_access_person_t" type="string" stored="true" indexed="true" multiValued="true"/>
35
+ <field name="read_access_group_t" type="string" stored="true" indexed="true" multiValued="true"/>
36
+ <field name="edit_access_group_t" type="string" stored="true" indexed="true" multiValued="true"/>
37
+ <field name="discover_access_group_t" type="string" stored="true" indexed="true" multiValued="true"/>
38
+ -->
39
+
40
+
41
+ <!-- NOTE: not all possible Solr field types are represented in the dynamic fields -->
42
+
43
+ <!-- text (_t...) -->
44
+ <dynamicField name="*_ti" type="text" stored="false" indexed="true" multiValued="false"/>
45
+ <dynamicField name="*_tim" type="text" stored="false" indexed="true" multiValued="true"/>
46
+ <dynamicField name="*_ts" type="text" stored="true" indexed="false" multiValued="false"/>
47
+ <dynamicField name="*_tsm" type="text" stored="true" indexed="false" multiValued="true"/>
48
+ <dynamicField name="*_tsi" type="text" stored="true" indexed="true" multiValued="false"/>
49
+ <dynamicField name="*_tsim" type="text" stored="true" indexed="true" multiValued="true"/>
50
+ <dynamicField name="*_tiv" type="text" stored="false" indexed="true" multiValued="false" termVectors="true" termPositions="true" termOffsets="true"/>
51
+ <dynamicField name="*_timv" type="text" stored="false" indexed="true" multiValued="true" termVectors="true" termPositions="true" termOffsets="true"/>
52
+ <dynamicField name="*_tsiv" type="text" stored="true" indexed="true" multiValued="false" termVectors="true" termPositions="true" termOffsets="true"/>
53
+ <dynamicField name="*_tsimv" type="text" stored="true" indexed="true" multiValued="true" termVectors="true" termPositions="true" termOffsets="true"/>
54
+
55
+ <!-- English text (_te...) -->
56
+ <dynamicField name="*_tei" type="text_en" stored="false" indexed="true" multiValued="false"/>
57
+ <dynamicField name="*_teim" type="text_en" stored="false" indexed="true" multiValued="true"/>
58
+ <dynamicField name="*_tes" type="text_en" stored="true" indexed="false" multiValued="false"/>
59
+ <dynamicField name="*_tesm" type="text_en" stored="true" indexed="false" multiValued="true"/>
60
+ <dynamicField name="*_tesi" type="text_en" stored="true" indexed="true" multiValued="false"/>
61
+ <dynamicField name="*_tesim" type="text_en" stored="true" indexed="true" multiValued="true"/>
62
+ <dynamicField name="*_teiv" type="text_en" stored="false" indexed="true" multiValued="false" termVectors="true" termPositions="true" termOffsets="true"/>
63
+ <dynamicField name="*_teimv" type="text_en" stored="false" indexed="true" multiValued="true" termVectors="true" termPositions="true" termOffsets="true"/>
64
+ <dynamicField name="*_tesiv" type="text_en" stored="true" indexed="true" multiValued="false" termVectors="true" termPositions="true" termOffsets="true"/>
65
+ <dynamicField name="*_tesimv" type="text_en" stored="true" indexed="true" multiValued="true" termVectors="true" termPositions="true" termOffsets="true"/>
66
+
67
+ <!-- string (_s...) -->
68
+ <dynamicField name="*_si" type="string" stored="false" indexed="true" multiValued="false"/>
69
+ <dynamicField name="*_sim" type="string" stored="false" indexed="true" multiValued="true"/>
70
+ <dynamicField name="*_ss" type="string" stored="true" indexed="false" multiValued="false"/>
71
+ <dynamicField name="*_ssm" type="string" stored="true" indexed="false" multiValued="true"/>
72
+ <dynamicField name="*_ssi" type="string" stored="true" indexed="true" multiValued="false"/>
73
+ <dynamicField name="*_ssim" type="string" stored="true" indexed="true" multiValued="true"/>
74
+ <dynamicField name="*_ssort" type="alphaSort" stored="false" indexed="true" multiValued="false"/>
75
+
76
+ <!-- integer (_i...) -->
77
+ <dynamicField name="*_ii" type="int" stored="false" indexed="true" multiValued="false"/>
78
+ <dynamicField name="*_iim" type="int" stored="false" indexed="true" multiValued="true"/>
79
+ <dynamicField name="*_is" type="int" stored="true" indexed="false" multiValued="false"/>
80
+ <dynamicField name="*_ism" type="int" stored="true" indexed="false" multiValued="true"/>
81
+ <dynamicField name="*_isi" type="int" stored="true" indexed="true" multiValued="false"/>
82
+ <dynamicField name="*_isim" type="int" stored="true" indexed="true" multiValued="true"/>
83
+
84
+ <!-- trie integer (_it...) (for faster range queries) -->
85
+ <dynamicField name="*_iti" type="tint" stored="false" indexed="true" multiValued="false"/>
86
+ <dynamicField name="*_itim" type="tint" stored="false" indexed="true" multiValued="true"/>
87
+ <dynamicField name="*_its" type="tint" stored="true" indexed="false" multiValued="false"/>
88
+ <dynamicField name="*_itsm" type="tint" stored="true" indexed="false" multiValued="true"/>
89
+ <dynamicField name="*_itsi" type="tint" stored="true" indexed="true" multiValued="false"/>
90
+ <dynamicField name="*_itsim" type="tint" stored="true" indexed="true" multiValued="true"/>
91
+
92
+ <!-- date (_dt...) -->
93
+ <!-- The format for this date field is of the form 1995-12-31T23:59:59Z
94
+ Optional fractional seconds are allowed: 1995-12-31T23:59:59.999Z -->
95
+ <dynamicField name="*_dti" type="date" stored="false" indexed="true" multiValued="false"/>
96
+ <dynamicField name="*_dtim" type="date" stored="false" indexed="true" multiValued="true"/>
97
+ <dynamicField name="*_dts" type="date" stored="true" indexed="false" multiValued="false"/>
98
+ <dynamicField name="*_dtsm" type="date" stored="true" indexed="false" multiValued="true"/>
99
+ <dynamicField name="*_dtsi" type="date" stored="true" indexed="true" multiValued="false"/>
100
+ <dynamicField name="*_dtsim" type="date" stored="true" indexed="true" multiValued="true"/>
101
+
102
+ <!-- trie date (_dtt...) (for faster range queries) -->
103
+ <dynamicField name="*_dtti" type="tdate" stored="false" indexed="true" multiValued="false"/>
104
+ <dynamicField name="*_dttim" type="tdate" stored="false" indexed="true" multiValued="true"/>
105
+ <dynamicField name="*_dtts" type="tdate" stored="true" indexed="false" multiValued="false"/>
106
+ <dynamicField name="*_dttsm" type="tdate" stored="true" indexed="false" multiValued="true"/>
107
+ <dynamicField name="*_dttsi" type="tdate" stored="true" indexed="true" multiValued="false"/>
108
+ <dynamicField name="*_dttsim" type="tdate" stored="true" indexed="true" multiValued="true"/>
109
+
110
+ <!-- long (_l...) -->
111
+ <dynamicField name="*_li" type="long" stored="false" indexed="true" multiValued="false"/>
112
+ <dynamicField name="*_lim" type="long" stored="false" indexed="true" multiValued="true"/>
113
+ <dynamicField name="*_ls" type="long" stored="true" indexed="false" multiValued="false"/>
114
+ <dynamicField name="*_lsm" type="long" stored="true" indexed="false" multiValued="true"/>
115
+ <dynamicField name="*_lsi" type="long" stored="true" indexed="true" multiValued="false"/>
116
+ <dynamicField name="*_lsim" type="long" stored="true" indexed="true" multiValued="true"/>
117
+
118
+ <!-- trie long (_lt...) (for faster range queries) -->
119
+ <dynamicField name="*_lti" type="tlong" stored="false" indexed="true" multiValued="false"/>
120
+ <dynamicField name="*_ltim" type="tlong" stored="false" indexed="true" multiValued="true"/>
121
+ <dynamicField name="*_lts" type="tlong" stored="true" indexed="false" multiValued="false"/>
122
+ <dynamicField name="*_ltsm" type="tlong" stored="true" indexed="false" multiValued="true"/>
123
+ <dynamicField name="*_ltsi" type="tlong" stored="true" indexed="true" multiValued="false"/>
124
+ <dynamicField name="*_ltsim" type="tlong" stored="true" indexed="true" multiValued="true"/>
125
+
126
+ <!-- double (_db...) -->
127
+ <dynamicField name="*_dbi" type="double" stored="false" indexed="true" multiValued="false"/>
128
+ <dynamicField name="*_dbim" type="double" stored="false" indexed="true" multiValued="true"/>
129
+ <dynamicField name="*_dbs" type="double" stored="true" indexed="false" multiValued="false"/>
130
+ <dynamicField name="*_dbsm" type="double" stored="true" indexed="false" multiValued="true"/>
131
+ <dynamicField name="*_dbsi" type="double" stored="true" indexed="true" multiValued="false"/>
132
+ <dynamicField name="*_dbsim" type="double" stored="true" indexed="true" multiValued="true"/>
133
+
134
+ <!-- trie double (_dbt...) (for faster range queries) -->
135
+ <dynamicField name="*_dbti" type="tdouble" stored="false" indexed="true" multiValued="false"/>
136
+ <dynamicField name="*_dbtim" type="tdouble" stored="false" indexed="true" multiValued="true"/>
137
+ <dynamicField name="*_dbts" type="tdouble" stored="true" indexed="false" multiValued="false"/>
138
+ <dynamicField name="*_dbtsm" type="tdouble" stored="true" indexed="false" multiValued="true"/>
139
+ <dynamicField name="*_dbtsi" type="tdouble" stored="true" indexed="true" multiValued="false"/>
140
+ <dynamicField name="*_dbtsim" type="tdouble" stored="true" indexed="true" multiValued="true"/>
141
+
142
+ <!-- float (_f...) -->
143
+ <dynamicField name="*_fi" type="float" stored="false" indexed="true" multiValued="false"/>
144
+ <dynamicField name="*_fim" type="float" stored="false" indexed="true" multiValued="true"/>
145
+ <dynamicField name="*_fs" type="float" stored="true" indexed="false" multiValued="false"/>
146
+ <dynamicField name="*_fsm" type="float" stored="true" indexed="false" multiValued="true"/>
147
+ <dynamicField name="*_fsi" type="float" stored="true" indexed="true" multiValued="false"/>
148
+ <dynamicField name="*_fsim" type="float" stored="true" indexed="true" multiValued="true"/>
149
+
150
+ <!-- trie float (_ft...) (for faster range queries) -->
151
+ <dynamicField name="*_fti" type="tfloat" stored="false" indexed="true" multiValued="false"/>
152
+ <dynamicField name="*_ftim" type="tfloat" stored="false" indexed="true" multiValued="true"/>
153
+ <dynamicField name="*_fts" type="tfloat" stored="true" indexed="false" multiValued="false"/>
154
+ <dynamicField name="*_ftsm" type="tfloat" stored="true" indexed="false" multiValued="true"/>
155
+ <dynamicField name="*_ftsi" type="tfloat" stored="true" indexed="true" multiValued="false"/>
156
+ <dynamicField name="*_ftsim" type="tfloat" stored="true" indexed="true" multiValued="true"/>
157
+
158
+ <!-- boolean (_b...) -->
159
+ <dynamicField name="*_bi" type="boolean" stored="false" indexed="true" multiValued="false"/>
160
+ <dynamicField name="*_bs" type="boolean" stored="true" indexed="false" multiValued="false"/>
161
+ <dynamicField name="*_bsi" type="boolean" stored="true" indexed="true" multiValued="false"/>
162
+
163
+ <!-- Type used to index the lat and lon components for the "location" FieldType -->
164
+ <dynamicField name="*_coordinate" type="tdouble" indexed="true" stored="false" />
165
+
166
+ <!-- location (_ll...) -->
167
+ <dynamicField name="*_lli" type="location" stored="false" indexed="true" multiValued="false"/>
168
+ <dynamicField name="*_llim" type="location" stored="false" indexed="true" multiValued="true"/>
169
+ <dynamicField name="*_lls" type="location" stored="true" indexed="false" multiValued="false"/>
170
+ <dynamicField name="*_llsm" type="location" stored="true" indexed="false" multiValued="true"/>
171
+ <dynamicField name="*_llsi" type="location" stored="true" indexed="true" multiValued="false"/>
172
+ <dynamicField name="*_llsim" type="location" stored="true" indexed="true" multiValued="true"/>
173
+
174
+ <!-- you must define copyField source and dest fields explicity or schemaBrowser doesn't work -->
175
+ <field name="all_text_timv" type="text" stored="false" indexed="true" multiValued="true" termVectors="true" termPositions="true" termOffsets="true"/>
176
+
177
+ </fields>
178
+
179
+ <!-- START hydra deprecated items -->
180
+ <!-- SolrQueryParser configuration: defaultOperator="AND|OR" -->
181
+ <!--
182
+ <solrQueryParser defaultOperator="AND"/>
183
+
184
+ <copyField source="title_t" dest="title_unstem_search"/>
185
+ <copyField source="subtitle_t" dest="subtitle_unstem_search"/>
186
+ <copyField source="title_addl_t" dest="title_addl_unstem_search"/>
187
+ <copyField source="title_added_entry_t" dest="title_added_entry_unstem_search"/>
188
+ <copyField source="title_series_t" dest="title_series_unstem_search"/>
189
+ <copyField source="author_t" dest="author_unstem_search"/>
190
+ <copyField source="author_addl_t" dest="author_addl_unstem_search"/>
191
+ <copyField source="subject_t" dest="subject_unstem_search"/>
192
+ <copyField source="subject_addl_t" dest="subject_addl_unstem_search"/>
193
+ <copyField source="subject_topic_facet" dest="subject_topic_unstem_search"/>
194
+ -->
195
+ <!-- sort fields -->
196
+ <!--
197
+ <copyField source="pub_date" dest="pub_date_sort"/>
198
+ -->
199
+
200
+ <!-- spellcheck fields -->
201
+ <!-- default spell check; should match fields for default request handler -->
202
+ <!-- it won't work with a copy of a copy field -->
203
+ <!--
204
+ <copyField source="*_t" dest="spell"/>
205
+ <copyField source="*_facet" dest="spell"/>
206
+ -->
207
+ <!-- title spell check; should match fields for title request handler -->
208
+ <!--
209
+ <copyField source="title_t" dest="title_spell"/>
210
+ <copyField source="subtitle_t" dest="title_spell"/>
211
+ <copyField source="addl_titles_t" dest="title_spell"/>
212
+ <copyField source="title_added_entry_t" dest="title_spell"/>
213
+ <copyField source="title_series_t" dest="title_spell"/>
214
+ -->
215
+ <!-- author spell check; should match fields for author request handler -->
216
+ <!--
217
+ <copyField source="author_t" dest="author_spell"/>
218
+ <copyField source="author_addl_t" dest="author_spell"/>
219
+ -->
220
+ <!-- subject spell check; should match fields for subject request handler -->
221
+ <!--
222
+ <copyField source="subject_topic_facet" dest="subject_spell"/>
223
+ <copyField source="subject_t" dest="subject_spell"/>
224
+ <copyField source="subject_addl_t" dest="subject_spell"/>
225
+ -->
226
+
227
+ <!-- OpenSearch query field should match request handler search fields -->
228
+ <!--
229
+ <copyField source="title_t" dest="opensearch_display"/>
230
+ <copyField source="subtitle_t" dest="opensearch_display"/>
231
+ <copyField source="addl_titles_t" dest="opensearch_display"/>
232
+ <copyField source="title_added_entry_t" dest="opensearch_display"/>
233
+ <copyField source="title_series_t" dest="opensearch_display"/>
234
+ <copyField source="author_t" dest="opensearch_display"/>
235
+ <copyField source="author_addl_t" dest="opensearch_display"/>
236
+ <copyField source="subject_topic_facet" dest="opensearch_display"/>
237
+ <copyField source="subject_t" dest="opensearch_display"/>
238
+ <copyField source="subject_addl_t" dest="opensearch_display"/>
239
+ -->
240
+
241
+ <!-- Above, multiple source fields are copied to the [text] field.
242
+ Another way to map multiple source fields to the same
243
+ destination field is to use the dynamic field syntax.
244
+ copyField also supports a maxChars to copy setting. -->
245
+
246
+ <!-- <copyField source="*_t" dest="text" maxChars="3000"/> -->
247
+ <!--
248
+ <copyField source="*_s" dest="text"/>
249
+ <copyField source="*_t" dest="text"/>
250
+ <copyField source="*_facet" dest="text"/>
251
+ -->
252
+ <!-- copy name to alphaNameSort, a field designed for sorting by name -->
253
+ <!-- <copyField source="name" dest="alphaNameSort"/> -->
254
+
255
+ <!-- END hydra deprecated items -->
256
+
257
+ <!-- copy fields; note that you must define copyField source and dest fields explicity or schemaBrowser doesn't work -->
258
+ <!--
259
+ <copyField source="some_field" dest="all_text_timv" />
260
+ -->
261
+
262
+ <types>
263
+ <fieldType name="string" class="solr.StrField" sortMissingLast="true" />
264
+ <fieldType name="boolean" class="solr.BoolField" sortMissingLast="true"/>
265
+ <fieldType name="rand" class="solr.RandomSortField" omitNorms="true"/>
266
+
267
+ <!-- Default numeric field types. -->
268
+ <fieldType name="int" class="solr.TrieIntField" precisionStep="0" positionIncrementGap="0"/>
269
+ <fieldType name="float" class="solr.TrieFloatField" precisionStep="0" positionIncrementGap="0"/>
270
+ <fieldType name="long" class="solr.TrieLongField" precisionStep="0" positionIncrementGap="0"/>
271
+ <fieldType name="double" class="solr.TrieDoubleField" precisionStep="0" positionIncrementGap="0"/>
272
+
273
+ <!-- trie numeric field types for faster range queries -->
274
+ <fieldType name="tint" class="solr.TrieIntField" precisionStep="8" positionIncrementGap="0"/>
275
+ <fieldType name="tfloat" class="solr.TrieFloatField" precisionStep="8" positionIncrementGap="0"/>
276
+ <fieldType name="tlong" class="solr.TrieLongField" precisionStep="8" positionIncrementGap="0"/>
277
+ <fieldType name="tdouble" class="solr.TrieDoubleField" precisionStep="8" positionIncrementGap="0"/>
278
+
279
+ <!-- The format for this date field is of the form 1995-12-31T23:59:59Z
280
+ Optional fractional seconds are allowed: 1995-12-31T23:59:59.999Z
281
+ -->
282
+ <fieldType name="date" class="solr.TrieDateField" precisionStep="0" positionIncrementGap="0"/>
283
+ <!-- A Trie based date field for faster date range queries and date faceting. -->
284
+ <fieldType name="tdate" class="solr.TrieDateField" precisionStep="6" positionIncrementGap="0"/>
285
+
286
+
287
+ <!-- This point type indexes the coordinates as separate fields (subFields)
288
+ If subFieldType is defined, it references a type, and a dynamic field
289
+ definition is created matching *___<typename>. Alternately, if
290
+ subFieldSuffix is defined, that is used to create the subFields.
291
+ Example: if subFieldType="double", then the coordinates would be
292
+ indexed in fields myloc_0___double,myloc_1___double.
293
+ Example: if subFieldSuffix="_d" then the coordinates would be indexed
294
+ in fields myloc_0_d,myloc_1_d
295
+ The subFields are an implementation detail of the fieldType, and end
296
+ users normally should not need to know about them.
297
+ -->
298
+ <fieldType name="point" class="solr.PointType" dimension="2" subFieldSuffix="_d"/>
299
+
300
+ <!-- A specialized field for geospatial search. If indexed, this fieldType must not be multivalued. -->
301
+ <fieldType name="location" class="solr.LatLonType" subFieldSuffix="_coordinate"/>
302
+
303
+ <!-- An alternative geospatial field type new to Solr 4. It supports multiValued and polygon shapes.
304
+ For more information about this and other Spatial fields new to Solr 4, see:
305
+ http://wiki.apache.org/solr/SolrAdaptersForLuceneSpatial4
306
+ -->
307
+ <fieldType name="location_rpt" class="solr.SpatialRecursivePrefixTreeFieldType"
308
+ geo="true" distErrPct="0.025" maxDistErr="0.000009" units="degrees" />
309
+
310
+ <fieldType name="text" class="solr.TextField" omitNorms="false">
311
+ <analyzer>
312
+ <tokenizer class="solr.ICUTokenizerFactory"/>
313
+ <filter class="solr.ICUFoldingFilterFactory"/> <!-- NFKC, case folding, diacritics removed -->
314
+ <filter class="solr.TrimFilterFactory"/>
315
+ </analyzer>
316
+ </fieldType>
317
+
318
+ <!-- A text field that only splits on whitespace for exact matching of words -->
319
+ <fieldType name="text_ws" class="solr.TextField" positionIncrementGap="100">
320
+ <analyzer>
321
+ <tokenizer class="solr.WhitespaceTokenizerFactory"/>
322
+ <filter class="solr.TrimFilterFactory"/>
323
+ </analyzer>
324
+ </fieldType>
325
+
326
+ <!-- single token analyzed text, for sorting. Punctuation is significant. -->
327
+ <fieldtype name="alphaSort" class="solr.TextField" sortMissingLast="true" omitNorms="true">
328
+ <analyzer>
329
+ <tokenizer class="solr.KeywordTokenizerFactory" />
330
+ <filter class="solr.ICUFoldingFilterFactory"/>
331
+ <filter class="solr.TrimFilterFactory" />
332
+ </analyzer>
333
+ </fieldtype>
334
+
335
+ <!-- A text field with defaults appropriate for English -->
336
+ <fieldType name="text_en" class="solr.TextField" positionIncrementGap="100">
337
+ <analyzer>
338
+ <tokenizer class="solr.ICUTokenizerFactory"/>
339
+ <filter class="solr.ICUFoldingFilterFactory"/> <!-- NFKC, case folding, diacritics removed -->
340
+ <filter class="solr.EnglishPossessiveFilterFactory"/>
341
+ <!-- EnglishMinimalStemFilterFactory is less aggressive than PorterStemFilterFactory: -->
342
+ <filter class="solr.EnglishMinimalStemFilterFactory"/>
343
+ <!--
344
+ <filter class="solr.PorterStemFilterFactory"/>
345
+ -->
346
+ <filter class="solr.TrimFilterFactory"/>
347
+ </analyzer>
348
+ </fieldType>
349
+
350
+ <!-- queries for paths match documents at that path, or in descendent paths -->
351
+ <fieldType name="descendent_path" class="solr.TextField">
352
+ <analyzer type="index">
353
+ <tokenizer class="solr.PathHierarchyTokenizerFactory" delimiter="/" />
354
+ </analyzer>
355
+ <analyzer type="query">
356
+ <tokenizer class="solr.KeywordTokenizerFactory" />
357
+ </analyzer>
358
+ </fieldType>
359
+
360
+ <!-- queries for paths match documents at that path, or in ancestor paths -->
361
+ <fieldType name="ancestor_path" class="solr.TextField">
362
+ <analyzer type="index">
363
+ <tokenizer class="solr.KeywordTokenizerFactory" />
364
+ </analyzer>
365
+ <analyzer type="query">
366
+ <tokenizer class="solr.PathHierarchyTokenizerFactory" delimiter="/" />
367
+ </analyzer>
368
+ </fieldType>
369
+
370
+ </types>
371
+
372
+ </schema>