valkyrie 3.5.1 → 3.6.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 +4 -4
- data/.circleci/config.yml +35 -58
- data/.lando.yml +7 -4
- data/Appraisals +3 -9
- data/CHANGELOG.md +6 -0
- data/gemfiles/{activerecord_7_1.gemfile → activerecord_8_1.gemfile} +1 -1
- data/lib/valkyrie/persistence/fedora/persister/model_converter.rb +7 -1
- data/lib/valkyrie/specs/shared_specs/storage_adapter.rb +1 -1
- data/lib/valkyrie/storage/fedora.rb +7 -20
- data/lib/valkyrie/version.rb +1 -1
- data/solr/config/schema.xml +64 -62
- data/solr/config/solrconfig.xml +14 -7
- data/valkyrie.gemspec +1 -1
- metadata +3 -10
- data/gemfiles/faraday_1.gemfile +0 -12
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: dd992e314f4262841181b047c1069253b9ae74131fe5e88760ff266ee934d7b4
|
|
4
|
+
data.tar.gz: 0b9d0d17a2853fb2eda435a3afc2a6202af17b19a4d5d0ad4ecfbeaea0e34de5
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: a00872e00399a98d2435b846b6742af2095624e1054c80079e98b94b8ca8fe92d0f114d13f67668b348dfd0d3ab972c00abeef33f58cc5caab90fcc7b94ba76a
|
|
7
|
+
data.tar.gz: f8c7dcce4c7e2513d272e53a4c187eba830c16d37483dd0678f60921660b6d8b22f3dc051d9e459b6c7d6363b0c4b518c7be6cccec0c8ef854512075e8c2fbea
|
data/.circleci/config.yml
CHANGED
|
@@ -9,13 +9,13 @@ jobs:
|
|
|
9
9
|
type: "string"
|
|
10
10
|
ruby:
|
|
11
11
|
description: "Ruby version"
|
|
12
|
-
default: "3.
|
|
12
|
+
default: "3.3.11"
|
|
13
13
|
type: "string"
|
|
14
14
|
docker:
|
|
15
15
|
- image: cimg/ruby:<< parameters.ruby >>
|
|
16
16
|
environment:
|
|
17
17
|
RAILS_ENV: test
|
|
18
|
-
- image: postgres:
|
|
18
|
+
- image: postgres:15.2
|
|
19
19
|
environment:
|
|
20
20
|
POSTGRES_USER: postgres
|
|
21
21
|
POSTGRES_DB: Valkyrie_gem_test
|
|
@@ -24,12 +24,14 @@ jobs:
|
|
|
24
24
|
environment:
|
|
25
25
|
CATALINA_OPTS: "-Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xms512m -Xmx1024m -XX:NewSize=256m -XX:MaxNewSize=256m -XX:PermSize=256m -XX:MaxPermSize=256m -XX:+DisableExplicitGC"
|
|
26
26
|
JAVA_OPTIONS: "-Djetty.http.port=8988"
|
|
27
|
-
- image: fcrepo/fcrepo:6.5
|
|
27
|
+
- image: fcrepo/fcrepo:6.5-tomcat9
|
|
28
28
|
environment:
|
|
29
29
|
CATALINA_OPTS: "-Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xms512m -Xmx1024m -XX:NewSize=256m -XX:MaxNewSize=256m -XX:PermSize=256m -XX:MaxPermSize=256m -XX:+DisableExplicitGC -Dorg.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true"
|
|
30
30
|
JAVA_OPTS: "-Djetty.http.port=8978 -Dfcrepo.dynamic.jms.port=61619 -Dfcrepo.dynamic.stomp.port=61615 -Dorg.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true"
|
|
31
|
-
- image: solr:
|
|
31
|
+
- image: solr:9.9.0
|
|
32
32
|
command: bin/solr -cloud -noprompt -f -p 8994
|
|
33
|
+
environment:
|
|
34
|
+
SOLR_MODULES: "analysis-extras,extraction"
|
|
33
35
|
environment:
|
|
34
36
|
BUNDLE_GEMFILE: << parameters.gemfile >>
|
|
35
37
|
POSTGRES_PORT: 5432
|
|
@@ -56,7 +58,7 @@ jobs:
|
|
|
56
58
|
cd solr/config
|
|
57
59
|
zip -1 -r solr_config.zip ./*
|
|
58
60
|
curl -H "Content-type:application/octet-stream" --data-binary @solr_config.zip "http://localhost:8994/solr/admin/configs?action=UPLOAD&name=valkyrie"
|
|
59
|
-
curl -H 'Content-type: application/json' http://localhost:8994/api/collections/ -d '{
|
|
61
|
+
curl -H 'Content-type: application/json' http://localhost:8994/api/collections/ -d '{"name": "valkyrie-core-test", "config": "valkyrie", "numShards": 1}'
|
|
60
62
|
# Install Bundler
|
|
61
63
|
- run: gem install bundler -v '~> 2.0'
|
|
62
64
|
- restore_cache:
|
|
@@ -67,9 +69,8 @@ jobs:
|
|
|
67
69
|
name: Set BUNDLE_GEMFILE
|
|
68
70
|
command: |
|
|
69
71
|
export BUNDLE_GEMFILE=~/project/<< parameters.gemfile >>
|
|
70
|
-
- run:
|
|
71
|
-
|
|
72
|
-
command: bundle install --path=vendor/bundle --jobs 4 --retry 3
|
|
72
|
+
- run: bundle config set path 'vendor/bundle'
|
|
73
|
+
- run: bundle install
|
|
73
74
|
- save_cache:
|
|
74
75
|
key: bundle-{{ checksum "<< parameters.gemfile >>" }}-{{ checksum "valkyrie.gemspec" }}-<< parameters.ruby >>-7
|
|
75
76
|
paths:
|
|
@@ -93,32 +94,24 @@ workflows:
|
|
|
93
94
|
jobs:
|
|
94
95
|
- build:
|
|
95
96
|
gemfile: "gemfiles/activerecord_7_2.gemfile"
|
|
96
|
-
ruby: 3.3.
|
|
97
|
+
ruby: 3.3.11
|
|
97
98
|
name: "Ruby3-3_rails7-2"
|
|
98
99
|
- build:
|
|
99
|
-
gemfile: "gemfiles/
|
|
100
|
-
ruby: 3.3.
|
|
101
|
-
name: "Ruby3-
|
|
102
|
-
- build:
|
|
103
|
-
gemfile: "gemfiles/activerecord_7_2.gemfile"
|
|
104
|
-
ruby: 3.2.5
|
|
105
|
-
name: "Ruby3-2_rails7-2"
|
|
106
|
-
- build:
|
|
107
|
-
gemfile: "gemfiles/activerecord_7_1.gemfile"
|
|
108
|
-
ruby: 3.2.5
|
|
109
|
-
name: "Ruby3-2_rails7-1"
|
|
100
|
+
gemfile: "gemfiles/activerecord_8_0.gemfile"
|
|
101
|
+
ruby: 3.3.11
|
|
102
|
+
name: "Ruby3-3_rails8-0"
|
|
110
103
|
- build:
|
|
111
|
-
gemfile: "gemfiles/
|
|
112
|
-
ruby: 3.
|
|
113
|
-
name: "Ruby3-
|
|
104
|
+
gemfile: "gemfiles/activerecord_8_1.gemfile"
|
|
105
|
+
ruby: 3.3.11
|
|
106
|
+
name: "Ruby3-3_rails8-1"
|
|
114
107
|
- build:
|
|
115
|
-
gemfile: "gemfiles/
|
|
116
|
-
ruby: 3.
|
|
117
|
-
name: "Ruby3-
|
|
108
|
+
gemfile: "gemfiles/activerecord_8_1.gemfile"
|
|
109
|
+
ruby: 3.4.9
|
|
110
|
+
name: "Ruby3-4_rails8-1"
|
|
118
111
|
- build:
|
|
119
|
-
gemfile: "gemfiles/
|
|
120
|
-
ruby:
|
|
121
|
-
name: "
|
|
112
|
+
gemfile: "gemfiles/activerecord_8_1.gemfile"
|
|
113
|
+
ruby: 4.0.5
|
|
114
|
+
name: "Ruby4-0_rails8-1"
|
|
122
115
|
|
|
123
116
|
nightly:
|
|
124
117
|
triggers:
|
|
@@ -129,39 +122,23 @@ workflows:
|
|
|
129
122
|
only:
|
|
130
123
|
- master
|
|
131
124
|
jobs:
|
|
132
|
-
- build:
|
|
133
|
-
gemfile: "gemfiles/activerecord_8_0.gemfile"
|
|
134
|
-
ruby: 3.3.5
|
|
135
|
-
name: "Ruby3-3_rails8-0"
|
|
136
125
|
- build:
|
|
137
126
|
gemfile: "gemfiles/activerecord_7_2.gemfile"
|
|
138
|
-
ruby: 3.3.
|
|
127
|
+
ruby: 3.3.11
|
|
139
128
|
name: "Ruby3-3_rails7-2"
|
|
140
129
|
- build:
|
|
141
|
-
gemfile: "gemfiles/
|
|
142
|
-
ruby: 3.3.
|
|
143
|
-
name: "Ruby3-
|
|
144
|
-
- build:
|
|
145
|
-
gemfile: "gemfiles/activerecord_7_2.gemfile"
|
|
146
|
-
ruby: 3.2.5
|
|
147
|
-
name: "Ruby3-2_rails7-2"
|
|
148
|
-
- build:
|
|
149
|
-
gemfile: "gemfiles/activerecord_7_1.gemfile"
|
|
150
|
-
ruby: 3.2.5
|
|
151
|
-
name: "Ruby3-2_rails7-1"
|
|
152
|
-
- build:
|
|
153
|
-
gemfile: "gemfiles/activerecord_7_0.gemfile"
|
|
154
|
-
ruby: 3.2.5
|
|
155
|
-
name: "Ruby3-2_rails7-0"
|
|
130
|
+
gemfile: "gemfiles/activerecord_8_0.gemfile"
|
|
131
|
+
ruby: 3.3.11
|
|
132
|
+
name: "Ruby3-3_rails8-0"
|
|
156
133
|
- build:
|
|
157
|
-
gemfile: "gemfiles/
|
|
158
|
-
ruby: 3.
|
|
159
|
-
name: "Ruby3-
|
|
134
|
+
gemfile: "gemfiles/activerecord_8_1.gemfile"
|
|
135
|
+
ruby: 3.3.11
|
|
136
|
+
name: "Ruby3-3_rails8-1"
|
|
160
137
|
- build:
|
|
161
|
-
gemfile: "gemfiles/
|
|
162
|
-
ruby: 3.
|
|
163
|
-
name: "Ruby3-
|
|
138
|
+
gemfile: "gemfiles/activerecord_8_1.gemfile"
|
|
139
|
+
ruby: 3.4.9
|
|
140
|
+
name: "Ruby3-4_rails8-1"
|
|
164
141
|
- build:
|
|
165
|
-
gemfile: "gemfiles/
|
|
166
|
-
ruby:
|
|
167
|
-
name: "
|
|
142
|
+
gemfile: "gemfiles/activerecord_8_1.gemfile"
|
|
143
|
+
ruby: 4.0.5
|
|
144
|
+
name: "Ruby4-0_rails8-1"
|
data/.lando.yml
CHANGED
|
@@ -1,16 +1,19 @@
|
|
|
1
1
|
name: valkyrie
|
|
2
2
|
app_mount: false
|
|
3
3
|
services:
|
|
4
|
-
|
|
4
|
+
valkyrie_test_solr_9:
|
|
5
5
|
app_mount: false
|
|
6
|
-
type: solr:
|
|
6
|
+
type: solr:9
|
|
7
7
|
portforward: 8994
|
|
8
8
|
core: valkyrie-core-test
|
|
9
9
|
config:
|
|
10
10
|
dir: solr/config
|
|
11
|
+
overrides:
|
|
12
|
+
environment:
|
|
13
|
+
SOLR_MODULES: "analysis-extras,extraction"
|
|
11
14
|
valkyrie_database:
|
|
12
15
|
app_mount: false
|
|
13
|
-
type: postgres:
|
|
16
|
+
type: postgres:15
|
|
14
17
|
portforward: 5433
|
|
15
18
|
valkyrie_fedora_4:
|
|
16
19
|
type: compose
|
|
@@ -33,7 +36,7 @@ services:
|
|
|
33
36
|
volumes:
|
|
34
37
|
fedora6:
|
|
35
38
|
services:
|
|
36
|
-
image: fcrepo/fcrepo:6.5
|
|
39
|
+
image: fcrepo/fcrepo:6.5-tomcat9
|
|
37
40
|
command:
|
|
38
41
|
- "catalina.sh"
|
|
39
42
|
- "run"
|
data/Appraisals
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
+
appraise "activerecord-8-1" do
|
|
3
|
+
gem "activerecord", "~> 8.1.0"
|
|
4
|
+
end
|
|
2
5
|
|
|
3
6
|
appraise "activerecord-8-0" do
|
|
4
7
|
gem "activerecord", "~> 8.0.0"
|
|
@@ -7,12 +10,3 @@ end
|
|
|
7
10
|
appraise "activerecord-7-2" do
|
|
8
11
|
gem "activerecord", "~> 7.2.0"
|
|
9
12
|
end
|
|
10
|
-
|
|
11
|
-
appraise "activerecord-7-1" do
|
|
12
|
-
gem "activerecord", "~> 7.1.0"
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
appraise "faraday-1" do
|
|
16
|
-
gem "faraday", "~> 1.0"
|
|
17
|
-
gem "activerecord", "~> 7.1.0"
|
|
18
|
-
end
|
data/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
# v3.6.0 2026-07-23
|
|
2
|
+
|
|
3
|
+
* Update dependencies. ([tpendragon](https://github.com/tpendragon))
|
|
4
|
+
* Improve performance of Fedora 6. ([dolsysmith](https://github.com/dolsysmith))
|
|
5
|
+
* Add streaming support to Fedora storage adapter. ([eltiffster](https://github.com/eltiffster))
|
|
6
|
+
|
|
1
7
|
# v3.5.1 2026-01-16
|
|
2
8
|
|
|
3
9
|
* Remove Fedora 5. ([tpendragon](https://github.com/tpendragon))
|
|
@@ -42,7 +42,13 @@ module Valkyrie::Persistence::Fedora
|
|
|
42
42
|
# @see https://www.w3.org/TR/ldp/#ldpc
|
|
43
43
|
# @return [Ldp::Container::Basic]
|
|
44
44
|
def graph_resource
|
|
45
|
-
|
|
45
|
+
# If the resource is a nested resource with a hashed URI,
|
|
46
|
+
# we don't want to query Fedora for a URI formed from this resource ID,
|
|
47
|
+
# because it will return everything at the base_path,
|
|
48
|
+
# resulting in a unnecessary work (clearing out the graph)
|
|
49
|
+
# Passing nil here returns an empty graph, which doesn't seem to cause problems
|
|
50
|
+
s = resource.id.to_s.start_with?("#") ? nil : subject
|
|
51
|
+
@graph_resource ||= ::Ldp::Container::Basic.new(connection, s, nil, base_path)
|
|
46
52
|
end
|
|
47
53
|
|
|
48
54
|
# Generate a URI from the Valkyrie Resource ID to be used as the RDF subject for Fedora LDP resources
|
|
@@ -58,7 +58,7 @@ RSpec.shared_examples 'a Valkyrie::StorageAdapter' do
|
|
|
58
58
|
pre_open_files = open_files
|
|
59
59
|
uploaded_file = storage_adapter.upload(file: file, original_filename: 'foo.jpg', resource: resource, fake_upload_argument: true)
|
|
60
60
|
file.close
|
|
61
|
-
expect(pre_open_files.size).to
|
|
61
|
+
expect(pre_open_files.size).to be <= open_files.size
|
|
62
62
|
|
|
63
63
|
# No file handle left open from find_by
|
|
64
64
|
pre_open_files = open_files
|
|
@@ -180,23 +180,6 @@ module Valkyrie::Storage
|
|
|
180
180
|
valkyrie_identifier(uri: response.headers["location"].gsub("/fcr:metadata", ""))
|
|
181
181
|
end
|
|
182
182
|
|
|
183
|
-
class IOProxy
|
|
184
|
-
# @param response [Ldp::Resource::BinarySource]
|
|
185
|
-
attr_reader :size
|
|
186
|
-
def initialize(source)
|
|
187
|
-
@source = source
|
|
188
|
-
@size = source.size
|
|
189
|
-
end
|
|
190
|
-
delegate :each, :read, :rewind, to: :io
|
|
191
|
-
|
|
192
|
-
# There is no streaming support in faraday (https://github.com/lostisland/faraday/pull/604)
|
|
193
|
-
# @return [StringIO]
|
|
194
|
-
def io
|
|
195
|
-
@io ||= StringIO.new(@source)
|
|
196
|
-
end
|
|
197
|
-
end
|
|
198
|
-
private_constant :IOProxy
|
|
199
|
-
|
|
200
183
|
# Translate the Valkrie ID into a URL for the fedora file
|
|
201
184
|
# @return [RDF::URI]
|
|
202
185
|
def fedora_identifier(id:)
|
|
@@ -211,11 +194,15 @@ module Valkyrie::Storage
|
|
|
211
194
|
|
|
212
195
|
private
|
|
213
196
|
|
|
214
|
-
# @return [
|
|
197
|
+
# @return [StringIO]
|
|
215
198
|
def response(id:)
|
|
216
|
-
|
|
199
|
+
io = StringIO.new
|
|
200
|
+
response = connection.http.get(fedora_identifier(id: id)) do |request|
|
|
201
|
+
request.options.on_data = proc { |chunk, _size| io.write(chunk) }
|
|
202
|
+
end
|
|
217
203
|
raise Valkyrie::StorageAdapter::FileNotFound, "HTTP #{response.status} #{response.body}" unless response.success?
|
|
218
|
-
|
|
204
|
+
io.rewind
|
|
205
|
+
io
|
|
219
206
|
end
|
|
220
207
|
|
|
221
208
|
def default_resource_uri_transformer
|
data/lib/valkyrie/version.rb
CHANGED
data/solr/config/schema.xml
CHANGED
|
@@ -48,43 +48,47 @@
|
|
|
48
48
|
<schema name="Hydra Demo Index" version="1.5">
|
|
49
49
|
<!-- attribute "name" is the name of this schema and is only used for display purposes.
|
|
50
50
|
Applications should change this to reflect the nature of the search collection.
|
|
51
|
-
version="1.
|
|
51
|
+
version="1.5" is Solr's version number for the schema syntax and semantics. It should
|
|
52
52
|
not normally be changed by applications.
|
|
53
53
|
1.0: multiValued attribute did not exist, all fields are multiValued by nature
|
|
54
54
|
1.1: multiValued attribute introduced, false by default
|
|
55
55
|
1.2: omitTermFreqAndPositions attribute introduced, true by default except for text fields.
|
|
56
56
|
1.3: removed optional field compress feature
|
|
57
57
|
1.4: default auto-phrase (QueryParser feature) to off
|
|
58
|
+
1.5: omitNorms defaults to true for primitive field types (int, float, boolean, string...)
|
|
59
|
+
# TODO 1.6: useDocValuesAsStored defaults to true.
|
|
60
|
+
# See https://github.com/samvera/active_fedora/issues/1346
|
|
58
61
|
-->
|
|
59
62
|
|
|
60
63
|
<types>
|
|
61
64
|
<fieldType name="string" class="solr.StrField" sortMissingLast="true" />
|
|
62
|
-
<fieldType name="boolean" class="solr.BoolField" sortMissingLast="true"/>
|
|
65
|
+
<fieldType name="boolean" class="solr.BoolField" sortMissingLast="true"/>
|
|
63
66
|
<fieldType name="rand" class="solr.RandomSortField" omitNorms="true"/>
|
|
64
|
-
|
|
67
|
+
|
|
65
68
|
<!-- Default numeric field types. -->
|
|
66
|
-
<fieldType name="int" class="solr.
|
|
67
|
-
<fieldType name="float" class="solr.
|
|
68
|
-
<fieldType name="long" class="solr.
|
|
69
|
-
<fieldType name="double" class="solr.
|
|
70
|
-
|
|
71
|
-
<!--
|
|
72
|
-
<fieldType name="tint" class="solr.
|
|
73
|
-
<fieldType name="tfloat" class="solr.
|
|
74
|
-
<fieldType name="tlong" class="solr.
|
|
75
|
-
<fieldType name="tdouble" class="solr.
|
|
76
|
-
|
|
69
|
+
<fieldType name="int" class="solr.IntPointField" docValues="true"/>
|
|
70
|
+
<fieldType name="float" class="solr.FloatPointField" docValues="true"/>
|
|
71
|
+
<fieldType name="long" class="solr.LongPointField" docValues="true"/>
|
|
72
|
+
<fieldType name="double" class="solr.DoublePointField" docValues="true"/>
|
|
73
|
+
|
|
74
|
+
<!-- PointField numeric field types for faster range queries -->
|
|
75
|
+
<fieldType name="tint" class="solr.IntPointField" docValues="true"/>
|
|
76
|
+
<fieldType name="tfloat" class="solr.FloatPointField" docValues="true"/>
|
|
77
|
+
<fieldType name="tlong" class="solr.LongPointField" docValues="true"/>
|
|
78
|
+
<fieldType name="tdouble" class="solr.DoublePointField" docValues="true"/>
|
|
79
|
+
|
|
77
80
|
<!-- The format for this date field is of the form 1995-12-31T23:59:59Z
|
|
78
81
|
Optional fractional seconds are allowed: 1995-12-31T23:59:59.999Z
|
|
79
82
|
-->
|
|
80
|
-
<fieldType name="date" class="solr.
|
|
81
|
-
<!-- A
|
|
82
|
-
<fieldType name="tdate" class="solr.
|
|
83
|
-
|
|
84
|
-
|
|
83
|
+
<fieldType name="date" class="solr.DatePointField" docValues="true"/>
|
|
84
|
+
<!-- A PointField based date field for faster date range queries and date faceting. -->
|
|
85
|
+
<fieldType name="tdate" class="solr.DatePointField" docValues="true"/>
|
|
86
|
+
<!-- A DateRange based date field for truly faster date range queries. -->
|
|
87
|
+
<fieldType name="dateRange" class="solr.DateRangeField" omitNorms="true" omitTermFreqAndPositions="true"/>
|
|
88
|
+
|
|
85
89
|
<!-- This point type indexes the coordinates as separate fields (subFields)
|
|
86
90
|
If subFieldType is defined, it references a type, and a dynamic field
|
|
87
|
-
definition is created matching *___<typename>. Alternately, if
|
|
91
|
+
definition is created matching *___<typename>. Alternately, if
|
|
88
92
|
subFieldSuffix is defined, that is used to create the subFields.
|
|
89
93
|
Example: if subFieldType="double", then the coordinates would be
|
|
90
94
|
indexed in fields myloc_0___double,myloc_1___double.
|
|
@@ -94,17 +98,14 @@
|
|
|
94
98
|
users normally should not need to know about them.
|
|
95
99
|
-->
|
|
96
100
|
<fieldType name="point" class="solr.PointType" dimension="2" subFieldSuffix="_d"/>
|
|
97
|
-
|
|
98
|
-
<!-- A
|
|
99
|
-
<fieldType name="location" class="solr.LatLonType" subFieldSuffix="_coordinate"/>
|
|
100
|
-
|
|
101
|
-
<!-- An alternative geospatial field type new to Solr 4. It supports multiValued and polygon shapes.
|
|
101
|
+
|
|
102
|
+
<!-- A geospatial field type new to Solr 4. It supports multiValued and polygon shapes.
|
|
102
103
|
For more information about this and other Spatial fields new to Solr 4, see:
|
|
103
104
|
http://wiki.apache.org/solr/SolrAdaptersForLuceneSpatial4
|
|
104
105
|
-->
|
|
105
106
|
<fieldType name="location_rpt" class="solr.SpatialRecursivePrefixTreeFieldType"
|
|
106
107
|
geo="true" distErrPct="0.025" maxDistErr="0.000009" distanceUnits="degrees" />
|
|
107
|
-
|
|
108
|
+
|
|
108
109
|
<fieldType name="text" class="solr.TextField" omitNorms="false">
|
|
109
110
|
<analyzer>
|
|
110
111
|
<tokenizer class="solr.ICUTokenizerFactory"/>
|
|
@@ -112,7 +113,7 @@
|
|
|
112
113
|
<filter class="solr.TrimFilterFactory"/>
|
|
113
114
|
</analyzer>
|
|
114
115
|
</fieldType>
|
|
115
|
-
|
|
116
|
+
|
|
116
117
|
<!-- A text field that only splits on whitespace for exact matching of words -->
|
|
117
118
|
<fieldType name="text_ws" class="solr.TextField" positionIncrementGap="100">
|
|
118
119
|
<analyzer>
|
|
@@ -120,7 +121,7 @@
|
|
|
120
121
|
<filter class="solr.TrimFilterFactory"/>
|
|
121
122
|
</analyzer>
|
|
122
123
|
</fieldType>
|
|
123
|
-
|
|
124
|
+
|
|
124
125
|
<!-- single token analyzed text, for sorting. Punctuation is significant. -->
|
|
125
126
|
<fieldtype name="alphaSort" class="solr.TextField" sortMissingLast="true" omitNorms="true">
|
|
126
127
|
<analyzer>
|
|
@@ -129,7 +130,7 @@
|
|
|
129
130
|
<filter class="solr.TrimFilterFactory" />
|
|
130
131
|
</analyzer>
|
|
131
132
|
</fieldtype>
|
|
132
|
-
|
|
133
|
+
|
|
133
134
|
<!-- A text field with defaults appropriate for English -->
|
|
134
135
|
<fieldType name="text_en" class="solr.TextField" positionIncrementGap="100">
|
|
135
136
|
<analyzer>
|
|
@@ -144,7 +145,7 @@
|
|
|
144
145
|
<filter class="solr.TrimFilterFactory"/>
|
|
145
146
|
</analyzer>
|
|
146
147
|
</fieldType>
|
|
147
|
-
|
|
148
|
+
|
|
148
149
|
<!-- queries for paths match documents at that path, or in descendent paths -->
|
|
149
150
|
<fieldType name="descendent_path" class="solr.TextField">
|
|
150
151
|
<analyzer type="index">
|
|
@@ -154,7 +155,7 @@
|
|
|
154
155
|
<tokenizer class="solr.KeywordTokenizerFactory" />
|
|
155
156
|
</analyzer>
|
|
156
157
|
</fieldType>
|
|
157
|
-
|
|
158
|
+
|
|
158
159
|
<!-- queries for paths match documents at that path, or in ancestor paths -->
|
|
159
160
|
<fieldType name="ancestor_path" class="solr.TextField">
|
|
160
161
|
<analyzer type="index">
|
|
@@ -178,12 +179,12 @@
|
|
|
178
179
|
<fields>
|
|
179
180
|
<!-- If you remove this field, you must _also_ disable the update log in solrconfig.xml
|
|
180
181
|
or Solr won't start. _version_ and update log are required for SolrCloud
|
|
181
|
-
-->
|
|
182
|
+
-->
|
|
182
183
|
<field name="_version_" type="long" indexed="true" stored="true"/>
|
|
183
|
-
|
|
184
|
+
|
|
184
185
|
<field name="id" type="string" stored="true" indexed="true" multiValued="false" required="true"/>
|
|
185
186
|
<field name="timestamp" type="date" indexed="true" stored="true" default="NOW" multiValued="false"/>
|
|
186
|
-
|
|
187
|
+
|
|
187
188
|
<field name="lat" type="tdouble" stored="true" indexed="true" multiValued="false"/>
|
|
188
189
|
<field name="lng" type="tdouble" stored="true" indexed="true" multiValued="false"/>
|
|
189
190
|
|
|
@@ -200,7 +201,7 @@
|
|
|
200
201
|
<dynamicField name="*_timv" type="text" stored="false" indexed="true" multiValued="true" termVectors="true" termPositions="true" termOffsets="true"/>
|
|
201
202
|
<dynamicField name="*_tsiv" type="text" stored="true" indexed="true" multiValued="false" termVectors="true" termPositions="true" termOffsets="true"/>
|
|
202
203
|
<dynamicField name="*_tsimv" type="text" stored="true" indexed="true" multiValued="true" termVectors="true" termPositions="true" termOffsets="true"/>
|
|
203
|
-
|
|
204
|
+
|
|
204
205
|
<!-- English text (_te...) -->
|
|
205
206
|
<dynamicField name="*_tei" type="text_en" stored="false" indexed="true" multiValued="false"/>
|
|
206
207
|
<dynamicField name="*_teim" type="text_en" stored="false" indexed="true" multiValued="true"/>
|
|
@@ -212,7 +213,7 @@
|
|
|
212
213
|
<dynamicField name="*_teimv" type="text_en" stored="false" indexed="true" multiValued="true" termVectors="true" termPositions="true" termOffsets="true"/>
|
|
213
214
|
<dynamicField name="*_tesiv" type="text_en" stored="true" indexed="true" multiValued="false" termVectors="true" termPositions="true" termOffsets="true"/>
|
|
214
215
|
<dynamicField name="*_tesimv" type="text_en" stored="true" indexed="true" multiValued="true" termVectors="true" termPositions="true" termOffsets="true"/>
|
|
215
|
-
|
|
216
|
+
|
|
216
217
|
<!-- string (_s...) -->
|
|
217
218
|
<dynamicField name="*_si" type="string" stored="false" indexed="true" multiValued="false"/>
|
|
218
219
|
<dynamicField name="*_sim" type="string" stored="false" indexed="true" multiValued="true"/>
|
|
@@ -221,7 +222,7 @@
|
|
|
221
222
|
<dynamicField name="*_ssi" type="string" stored="true" indexed="true" multiValued="false"/>
|
|
222
223
|
<dynamicField name="*_ssim" type="string" stored="true" indexed="true" multiValued="true"/>
|
|
223
224
|
<dynamicField name="*_ssort" type="alphaSort" stored="false" indexed="true" multiValued="false"/>
|
|
224
|
-
|
|
225
|
+
|
|
225
226
|
<!-- integer (_i...) -->
|
|
226
227
|
<dynamicField name="*_ii" type="int" stored="false" indexed="true" multiValued="false"/>
|
|
227
228
|
<dynamicField name="*_iim" type="int" stored="false" indexed="true" multiValued="true"/>
|
|
@@ -229,15 +230,15 @@
|
|
|
229
230
|
<dynamicField name="*_ism" type="int" stored="true" indexed="false" multiValued="true"/>
|
|
230
231
|
<dynamicField name="*_isi" type="int" stored="true" indexed="true" multiValued="false"/>
|
|
231
232
|
<dynamicField name="*_isim" type="int" stored="true" indexed="true" multiValued="true"/>
|
|
232
|
-
|
|
233
|
-
<!--
|
|
233
|
+
|
|
234
|
+
<!-- IntegerPointField (_it...) (for faster range queries) -->
|
|
234
235
|
<dynamicField name="*_iti" type="tint" stored="false" indexed="true" multiValued="false"/>
|
|
235
236
|
<dynamicField name="*_itim" type="tint" stored="false" indexed="true" multiValued="true"/>
|
|
236
237
|
<dynamicField name="*_its" type="tint" stored="true" indexed="false" multiValued="false"/>
|
|
237
238
|
<dynamicField name="*_itsm" type="tint" stored="true" indexed="false" multiValued="true"/>
|
|
238
239
|
<dynamicField name="*_itsi" type="tint" stored="true" indexed="true" multiValued="false"/>
|
|
239
240
|
<dynamicField name="*_itsim" type="tint" stored="true" indexed="true" multiValued="true"/>
|
|
240
|
-
|
|
241
|
+
|
|
241
242
|
<!-- date (_dt...) -->
|
|
242
243
|
<!-- The format for this date field is of the form 1995-12-31T23:59:59Z
|
|
243
244
|
Optional fractional seconds are allowed: 1995-12-31T23:59:59.999Z -->
|
|
@@ -247,15 +248,24 @@
|
|
|
247
248
|
<dynamicField name="*_dtsm" type="date" stored="true" indexed="false" multiValued="true"/>
|
|
248
249
|
<dynamicField name="*_dtsi" type="date" stored="true" indexed="true" multiValued="false"/>
|
|
249
250
|
<dynamicField name="*_dtsim" type="date" stored="true" indexed="true" multiValued="true"/>
|
|
250
|
-
|
|
251
|
-
<!--
|
|
251
|
+
|
|
252
|
+
<!-- DatePointField (_dtt...) (for faster range queries) -->
|
|
252
253
|
<dynamicField name="*_dtti" type="tdate" stored="false" indexed="true" multiValued="false"/>
|
|
253
254
|
<dynamicField name="*_dttim" type="tdate" stored="false" indexed="true" multiValued="true"/>
|
|
254
255
|
<dynamicField name="*_dtts" type="tdate" stored="true" indexed="false" multiValued="false"/>
|
|
255
256
|
<dynamicField name="*_dttsm" type="tdate" stored="true" indexed="false" multiValued="true"/>
|
|
256
257
|
<dynamicField name="*_dttsi" type="tdate" stored="true" indexed="true" multiValued="false"/>
|
|
257
258
|
<dynamicField name="*_dttsim" type="tdate" stored="true" indexed="true" multiValued="true"/>
|
|
258
|
-
|
|
259
|
+
|
|
260
|
+
|
|
261
|
+
<!-- date range (_dr...) (for faster AND better range queries) -->
|
|
262
|
+
<dynamicField name="*_dri" type="dateRange" stored="false" indexed="true" multiValued="false"/>
|
|
263
|
+
<dynamicField name="*_drim" type="dateRange" stored="false" indexed="true" multiValued="true"/>
|
|
264
|
+
<dynamicField name="*_drsi" type="dateRange" stored="true" indexed="true" multiValued="false"/>
|
|
265
|
+
<dynamicField name="*_drsim" type="dateRange" stored="true" indexed="true" multiValued="true"/>
|
|
266
|
+
<dynamicField name="*_drs" type="dateRange" stored="true" indexed="true" multiValued="false"/> <!-- indexed anyway because DateRangeField errors otherwise -->
|
|
267
|
+
<dynamicField name="*_drsm" type="dateRange" stored="true" indexed="true" multiValued="true"/> <!-- indexed anyway because DateRangeField errors otherwise -->
|
|
268
|
+
|
|
259
269
|
<!-- long (_l...) -->
|
|
260
270
|
<dynamicField name="*_li" type="long" stored="false" indexed="true" multiValued="false"/>
|
|
261
271
|
<dynamicField name="*_lim" type="long" stored="false" indexed="true" multiValued="true"/>
|
|
@@ -263,15 +273,15 @@
|
|
|
263
273
|
<dynamicField name="*_lsm" type="long" stored="true" indexed="false" multiValued="true"/>
|
|
264
274
|
<dynamicField name="*_lsi" type="long" stored="true" indexed="true" multiValued="false"/>
|
|
265
275
|
<dynamicField name="*_lsim" type="long" stored="true" indexed="true" multiValued="true"/>
|
|
266
|
-
|
|
267
|
-
<!--
|
|
276
|
+
|
|
277
|
+
<!-- LongPointField (_lt...) (for faster range queries) -->
|
|
268
278
|
<dynamicField name="*_lti" type="tlong" stored="false" indexed="true" multiValued="false"/>
|
|
269
279
|
<dynamicField name="*_ltim" type="tlong" stored="false" indexed="true" multiValued="true"/>
|
|
270
280
|
<dynamicField name="*_lts" type="tlong" stored="true" indexed="false" multiValued="false"/>
|
|
271
281
|
<dynamicField name="*_ltsm" type="tlong" stored="true" indexed="false" multiValued="true"/>
|
|
272
282
|
<dynamicField name="*_ltsi" type="tlong" stored="true" indexed="true" multiValued="false"/>
|
|
273
283
|
<dynamicField name="*_ltsim" type="tlong" stored="true" indexed="true" multiValued="true"/>
|
|
274
|
-
|
|
284
|
+
|
|
275
285
|
<!-- double (_db...) -->
|
|
276
286
|
<dynamicField name="*_dbi" type="double" stored="false" indexed="true" multiValued="false"/>
|
|
277
287
|
<dynamicField name="*_dbim" type="double" stored="false" indexed="true" multiValued="true"/>
|
|
@@ -279,15 +289,15 @@
|
|
|
279
289
|
<dynamicField name="*_dbsm" type="double" stored="true" indexed="false" multiValued="true"/>
|
|
280
290
|
<dynamicField name="*_dbsi" type="double" stored="true" indexed="true" multiValued="false"/>
|
|
281
291
|
<dynamicField name="*_dbsim" type="double" stored="true" indexed="true" multiValued="true"/>
|
|
282
|
-
|
|
283
|
-
<!--
|
|
292
|
+
|
|
293
|
+
<!-- DoublePointField (_dbt...) (for faster range queries) -->
|
|
284
294
|
<dynamicField name="*_dbti" type="tdouble" stored="false" indexed="true" multiValued="false"/>
|
|
285
295
|
<dynamicField name="*_dbtim" type="tdouble" stored="false" indexed="true" multiValued="true"/>
|
|
286
296
|
<dynamicField name="*_dbts" type="tdouble" stored="true" indexed="false" multiValued="false"/>
|
|
287
297
|
<dynamicField name="*_dbtsm" type="tdouble" stored="true" indexed="false" multiValued="true"/>
|
|
288
298
|
<dynamicField name="*_dbtsi" type="tdouble" stored="true" indexed="true" multiValued="false"/>
|
|
289
299
|
<dynamicField name="*_dbtsim" type="tdouble" stored="true" indexed="true" multiValued="true"/>
|
|
290
|
-
|
|
300
|
+
|
|
291
301
|
<!-- float (_f...) -->
|
|
292
302
|
<dynamicField name="*_fi" type="float" stored="false" indexed="true" multiValued="false"/>
|
|
293
303
|
<dynamicField name="*_fim" type="float" stored="false" indexed="true" multiValued="true"/>
|
|
@@ -295,31 +305,23 @@
|
|
|
295
305
|
<dynamicField name="*_fsm" type="float" stored="true" indexed="false" multiValued="true"/>
|
|
296
306
|
<dynamicField name="*_fsi" type="float" stored="true" indexed="true" multiValued="false"/>
|
|
297
307
|
<dynamicField name="*_fsim" type="float" stored="true" indexed="true" multiValued="true"/>
|
|
298
|
-
|
|
299
|
-
<!--
|
|
308
|
+
|
|
309
|
+
<!-- FloatPointField (_ft...) (for faster range queries) -->
|
|
300
310
|
<dynamicField name="*_fti" type="tfloat" stored="false" indexed="true" multiValued="false"/>
|
|
301
311
|
<dynamicField name="*_ftim" type="tfloat" stored="false" indexed="true" multiValued="true"/>
|
|
302
312
|
<dynamicField name="*_fts" type="tfloat" stored="true" indexed="false" multiValued="false"/>
|
|
303
313
|
<dynamicField name="*_ftsm" type="tfloat" stored="true" indexed="false" multiValued="true"/>
|
|
304
314
|
<dynamicField name="*_ftsi" type="tfloat" stored="true" indexed="true" multiValued="false"/>
|
|
305
315
|
<dynamicField name="*_ftsim" type="tfloat" stored="true" indexed="true" multiValued="true"/>
|
|
306
|
-
|
|
316
|
+
|
|
307
317
|
<!-- boolean (_b...) -->
|
|
308
318
|
<dynamicField name="*_bi" type="boolean" stored="false" indexed="true" multiValued="false"/>
|
|
309
319
|
<dynamicField name="*_bs" type="boolean" stored="true" indexed="false" multiValued="false"/>
|
|
310
320
|
<dynamicField name="*_bsi" type="boolean" stored="true" indexed="true" multiValued="false"/>
|
|
311
|
-
|
|
321
|
+
|
|
312
322
|
<!-- Type used to index the lat and lon components for the "location" FieldType -->
|
|
313
323
|
<dynamicField name="*_coordinate" type="tdouble" indexed="true" stored="false" />
|
|
314
324
|
|
|
315
|
-
<!-- location (_ll...) -->
|
|
316
|
-
<dynamicField name="*_lli" type="location" stored="false" indexed="true" multiValued="false"/>
|
|
317
|
-
<dynamicField name="*_llim" type="location" stored="false" indexed="true" multiValued="true"/>
|
|
318
|
-
<dynamicField name="*_lls" type="location" stored="true" indexed="false" multiValued="false"/>
|
|
319
|
-
<dynamicField name="*_llsm" type="location" stored="true" indexed="false" multiValued="true"/>
|
|
320
|
-
<dynamicField name="*_llsi" type="location" stored="true" indexed="true" multiValued="false"/>
|
|
321
|
-
<dynamicField name="*_llsim" type="location" stored="true" indexed="true" multiValued="true"/>
|
|
322
|
-
|
|
323
325
|
<dynamicField name="*suggest" type="textSuggest" indexed="true" stored="false" multiValued="true" />
|
|
324
326
|
|
|
325
327
|
<!-- you must define copyField source and dest fields explicity or schemaBrowser doesn't work -->
|
|
@@ -328,7 +330,7 @@
|
|
|
328
330
|
|
|
329
331
|
</fields>
|
|
330
332
|
|
|
331
|
-
<!-- Field to use to determine and enforce document uniqueness.
|
|
333
|
+
<!-- Field to use to determine and enforce document uniqueness.
|
|
332
334
|
Unless this field is marked with required="false", it will be a required field
|
|
333
335
|
-->
|
|
334
336
|
<uniqueKey>id</uniqueKey>
|
data/solr/config/solrconfig.xml
CHANGED
|
@@ -30,11 +30,6 @@
|
|
|
30
30
|
-->
|
|
31
31
|
<luceneMatchVersion>5.0.0</luceneMatchVersion>
|
|
32
32
|
|
|
33
|
-
<lib dir="${solr.install.dir:../../../..}/contrib/analysis-extras/lib" />
|
|
34
|
-
<lib dir="${solr.install.dir:../../../..}/contrib/analysis-extras/lucene-libs" />
|
|
35
|
-
<lib dir="${solr.install.dir:../../../..}/contrib/extraction/lib" regex=".*\.jar" />
|
|
36
|
-
<lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-cell-\d.*\.jar" />
|
|
37
|
-
|
|
38
33
|
<directoryFactory name="DirectoryFactory"
|
|
39
34
|
class="${solr.directoryFactory:solr.NRTCachingDirectoryFactory}">
|
|
40
35
|
</directoryFactory>
|
|
@@ -284,6 +279,18 @@
|
|
|
284
279
|
-->
|
|
285
280
|
</searchComponent>
|
|
286
281
|
|
|
282
|
+
<!-- suggest searchComponent and requestHandler disabled by default due to performance penalties -->
|
|
283
|
+
<!--
|
|
284
|
+
<searchComponent name="suggest" class="solr.SuggestComponent">
|
|
285
|
+
<lst name="suggester">
|
|
286
|
+
<str name="name">mySuggester</str>
|
|
287
|
+
<str name="lookupImpl">FuzzyLookupFactory</str>
|
|
288
|
+
<str name="suggestAnalyzerFieldType">textSuggest</str>
|
|
289
|
+
<str name="buildOnCommit">true</str>
|
|
290
|
+
<str name="field">suggest</str>
|
|
291
|
+
</lst>
|
|
292
|
+
</searchComponent>
|
|
293
|
+
|
|
287
294
|
<requestHandler name="/suggest" class="solr.SearchHandler" startup="lazy">
|
|
288
295
|
<lst name="defaults">
|
|
289
296
|
<str name="suggest">true</str>
|
|
@@ -294,7 +301,8 @@
|
|
|
294
301
|
<str>suggest</str>
|
|
295
302
|
</arr>
|
|
296
303
|
</requestHandler>
|
|
297
|
-
|
|
304
|
+
-->
|
|
305
|
+
|
|
298
306
|
<requestHandler name="/update/extract" class="org.apache.solr.handler.extraction.ExtractingRequestHandler">
|
|
299
307
|
<lst name="defaults">
|
|
300
308
|
<str name="fmap.Last-Modified">last_modified</str>
|
|
@@ -309,4 +317,3 @@
|
|
|
309
317
|
<!-- </lst> -->
|
|
310
318
|
</requestHandler>
|
|
311
319
|
</config>
|
|
312
|
-
|
data/valkyrie.gemspec
CHANGED
|
@@ -36,7 +36,7 @@ Gem::Specification.new do |spec|
|
|
|
36
36
|
spec.add_dependency 'faraday', '>= 0.9', '!= 2.0.0', '< 3'
|
|
37
37
|
spec.add_dependency 'faraday-multipart'
|
|
38
38
|
|
|
39
|
-
spec.add_development_dependency "bundler", "> 1.16.0"
|
|
39
|
+
spec.add_development_dependency "bundler", "> 1.16.0"
|
|
40
40
|
spec.add_development_dependency "rake", ">= 10"
|
|
41
41
|
spec.add_development_dependency "rspec", "~> 3.0"
|
|
42
42
|
spec.add_development_dependency "pry"
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: valkyrie
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 3.
|
|
4
|
+
version: 3.6.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Trey Pendragon
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-
|
|
11
|
+
date: 2026-07-23 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: dry-struct
|
|
@@ -217,9 +217,6 @@ dependencies:
|
|
|
217
217
|
- - ">"
|
|
218
218
|
- !ruby/object:Gem::Version
|
|
219
219
|
version: 1.16.0
|
|
220
|
-
- - "<"
|
|
221
|
-
- !ruby/object:Gem::Version
|
|
222
|
-
version: '3'
|
|
223
220
|
type: :development
|
|
224
221
|
prerelease: false
|
|
225
222
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -227,9 +224,6 @@ dependencies:
|
|
|
227
224
|
- - ">"
|
|
228
225
|
- !ruby/object:Gem::Version
|
|
229
226
|
version: 1.16.0
|
|
230
|
-
- - "<"
|
|
231
|
-
- !ruby/object:Gem::Version
|
|
232
|
-
version: '3'
|
|
233
227
|
- !ruby/object:Gem::Dependency
|
|
234
228
|
name: rake
|
|
235
229
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -452,10 +446,9 @@ files:
|
|
|
452
446
|
- db/migrate/20180212092225_create_updated_at_index.rb
|
|
453
447
|
- db/migrate/20180802220739_add_optimistic_locking_to_orm_resources.rb
|
|
454
448
|
- db/schema.rb
|
|
455
|
-
- gemfiles/activerecord_7_1.gemfile
|
|
456
449
|
- gemfiles/activerecord_7_2.gemfile
|
|
457
450
|
- gemfiles/activerecord_8_0.gemfile
|
|
458
|
-
- gemfiles/
|
|
451
|
+
- gemfiles/activerecord_8_1.gemfile
|
|
459
452
|
- lib/valkyrie.rb
|
|
460
453
|
- lib/valkyrie/adapter_container.rb
|
|
461
454
|
- lib/valkyrie/change_set.rb
|
data/gemfiles/faraday_1.gemfile
DELETED