valkyrie 3.5.0 → 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 +37 -80
- data/.gitignore +1 -0
- data/.lando.yml +7 -22
- data/Appraisals +6 -12
- data/CHANGELOG.md +11 -0
- data/README.md +2 -2
- data/gemfiles/{activerecord_7_0.gemfile → activerecord_8_0.gemfile} +1 -1
- 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/persistence/fedora.rb +1 -1
- data/lib/valkyrie/persistence/postgres/metadata_adapter.rb +3 -3
- data/lib/valkyrie/specs/shared_specs/storage_adapter.rb +4 -3
- data/lib/valkyrie/storage/disk.rb +1 -1
- data/lib/valkyrie/storage/fedora.rb +8 -27
- data/lib/valkyrie/version.rb +1 -1
- data/solr/config/schema.xml +64 -62
- data/solr/config/solrconfig.xml +14 -7
- data/valkyrie.gemspec +2 -2
- metadata +6 -13
- 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,16 +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:
|
|
28
|
-
environment:
|
|
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"
|
|
30
|
-
JAVA_OPTIONS: "-Djetty.http.port=8998 -Dfcrepo.dynamic.jms.port=61618 -Dfcrepo.dynamic.stomp.port=61614"
|
|
31
|
-
- image: fcrepo/fcrepo:6.5.1-RC3-tomcat9
|
|
27
|
+
- image: fcrepo/fcrepo:6.5-tomcat9
|
|
32
28
|
environment:
|
|
33
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"
|
|
34
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"
|
|
35
|
-
- image: solr:
|
|
31
|
+
- image: solr:9.9.0
|
|
36
32
|
command: bin/solr -cloud -noprompt -f -p 8994
|
|
33
|
+
environment:
|
|
34
|
+
SOLR_MODULES: "analysis-extras,extraction"
|
|
37
35
|
environment:
|
|
38
36
|
BUNDLE_GEMFILE: << parameters.gemfile >>
|
|
39
37
|
POSTGRES_PORT: 5432
|
|
@@ -60,22 +58,21 @@ jobs:
|
|
|
60
58
|
cd solr/config
|
|
61
59
|
zip -1 -r solr_config.zip ./*
|
|
62
60
|
curl -H "Content-type:application/octet-stream" --data-binary @solr_config.zip "http://localhost:8994/solr/admin/configs?action=UPLOAD&name=valkyrie"
|
|
63
|
-
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}'
|
|
64
62
|
# Install Bundler
|
|
65
63
|
- run: gem install bundler -v '~> 2.0'
|
|
66
64
|
- restore_cache:
|
|
67
65
|
keys:
|
|
68
|
-
- bundle-{{ checksum "<< parameters.gemfile >>" }}-{{ checksum "valkyrie.gemspec" }}-<< parameters.ruby >>-
|
|
66
|
+
- bundle-{{ checksum "<< parameters.gemfile >>" }}-{{ checksum "valkyrie.gemspec" }}-<< parameters.ruby >>-7
|
|
69
67
|
- run: sudo apt update -y && sudo apt-get install -y libpq-dev lsof
|
|
70
68
|
- run:
|
|
71
69
|
name: Set BUNDLE_GEMFILE
|
|
72
70
|
command: |
|
|
73
71
|
export BUNDLE_GEMFILE=~/project/<< parameters.gemfile >>
|
|
74
|
-
- run:
|
|
75
|
-
|
|
76
|
-
command: bundle install --path=vendor/bundle --jobs 4 --retry 3
|
|
72
|
+
- run: bundle config set path 'vendor/bundle'
|
|
73
|
+
- run: bundle install
|
|
77
74
|
- save_cache:
|
|
78
|
-
key: bundle-{{ checksum "<< parameters.gemfile >>" }}-{{ checksum "valkyrie.gemspec" }}-<< parameters.ruby >>-
|
|
75
|
+
key: bundle-{{ checksum "<< parameters.gemfile >>" }}-{{ checksum "valkyrie.gemspec" }}-<< parameters.ruby >>-7
|
|
79
76
|
paths:
|
|
80
77
|
- "vendor/bundle"
|
|
81
78
|
- "gemfiles/vendor/bundle"
|
|
@@ -97,44 +94,24 @@ workflows:
|
|
|
97
94
|
jobs:
|
|
98
95
|
- build:
|
|
99
96
|
gemfile: "gemfiles/activerecord_7_2.gemfile"
|
|
100
|
-
ruby: 3.3.
|
|
97
|
+
ruby: 3.3.11
|
|
101
98
|
name: "Ruby3-3_rails7-2"
|
|
102
99
|
- build:
|
|
103
|
-
gemfile: "gemfiles/
|
|
104
|
-
ruby: 3.3.
|
|
105
|
-
name: "Ruby3-
|
|
106
|
-
- build:
|
|
107
|
-
gemfile: "gemfiles/activerecord_7_0.gemfile"
|
|
108
|
-
ruby: 3.3.5
|
|
109
|
-
name: "Ruby3-3_rails7-0"
|
|
110
|
-
- build:
|
|
111
|
-
gemfile: "gemfiles/activerecord_7_2.gemfile"
|
|
112
|
-
ruby: 3.2.5
|
|
113
|
-
name: "Ruby3-2_rails7-2"
|
|
114
|
-
- build:
|
|
115
|
-
gemfile: "gemfiles/activerecord_7_1.gemfile"
|
|
116
|
-
ruby: 3.2.5
|
|
117
|
-
name: "Ruby3-2_rails7-1"
|
|
118
|
-
- build:
|
|
119
|
-
gemfile: "gemfiles/activerecord_7_0.gemfile"
|
|
120
|
-
ruby: 3.2.5
|
|
121
|
-
name: "Ruby3-2_rails7-0"
|
|
100
|
+
gemfile: "gemfiles/activerecord_8_0.gemfile"
|
|
101
|
+
ruby: 3.3.11
|
|
102
|
+
name: "Ruby3-3_rails8-0"
|
|
122
103
|
- build:
|
|
123
|
-
gemfile: "gemfiles/
|
|
124
|
-
ruby: 3.
|
|
125
|
-
name: "Ruby3-
|
|
126
|
-
- build:
|
|
127
|
-
gemfile: "gemfiles/activerecord_7_1.gemfile"
|
|
128
|
-
ruby: 3.1.6
|
|
129
|
-
name: "Ruby3-1_rails7-1"
|
|
104
|
+
gemfile: "gemfiles/activerecord_8_1.gemfile"
|
|
105
|
+
ruby: 3.3.11
|
|
106
|
+
name: "Ruby3-3_rails8-1"
|
|
130
107
|
- build:
|
|
131
|
-
gemfile: "gemfiles/
|
|
132
|
-
ruby: 3.
|
|
133
|
-
name: "Ruby3-
|
|
108
|
+
gemfile: "gemfiles/activerecord_8_1.gemfile"
|
|
109
|
+
ruby: 3.4.9
|
|
110
|
+
name: "Ruby3-4_rails8-1"
|
|
134
111
|
- build:
|
|
135
|
-
gemfile: "gemfiles/
|
|
136
|
-
ruby:
|
|
137
|
-
name: "
|
|
112
|
+
gemfile: "gemfiles/activerecord_8_1.gemfile"
|
|
113
|
+
ruby: 4.0.5
|
|
114
|
+
name: "Ruby4-0_rails8-1"
|
|
138
115
|
|
|
139
116
|
nightly:
|
|
140
117
|
triggers:
|
|
@@ -147,41 +124,21 @@ workflows:
|
|
|
147
124
|
jobs:
|
|
148
125
|
- build:
|
|
149
126
|
gemfile: "gemfiles/activerecord_7_2.gemfile"
|
|
150
|
-
ruby: 3.3.
|
|
127
|
+
ruby: 3.3.11
|
|
151
128
|
name: "Ruby3-3_rails7-2"
|
|
152
129
|
- build:
|
|
153
|
-
gemfile: "gemfiles/
|
|
154
|
-
ruby: 3.3.
|
|
155
|
-
name: "Ruby3-
|
|
156
|
-
- build:
|
|
157
|
-
gemfile: "gemfiles/activerecord_7_0.gemfile"
|
|
158
|
-
ruby: 3.3.5
|
|
159
|
-
name: "Ruby3-3_rails7-0"
|
|
160
|
-
- build:
|
|
161
|
-
gemfile: "gemfiles/activerecord_7_2.gemfile"
|
|
162
|
-
ruby: 3.2.5
|
|
163
|
-
name: "Ruby3-2_rails7-2"
|
|
164
|
-
- build:
|
|
165
|
-
gemfile: "gemfiles/activerecord_7_1.gemfile"
|
|
166
|
-
ruby: 3.2.5
|
|
167
|
-
name: "Ruby3-2_rails7-1"
|
|
168
|
-
- build:
|
|
169
|
-
gemfile: "gemfiles/activerecord_7_0.gemfile"
|
|
170
|
-
ruby: 3.2.5
|
|
171
|
-
name: "Ruby3-2_rails7-0"
|
|
172
|
-
- build:
|
|
173
|
-
gemfile: "gemfiles/activerecord_7_2.gemfile"
|
|
174
|
-
ruby: 3.1.6
|
|
175
|
-
name: "Ruby3-1_rails7-2"
|
|
130
|
+
gemfile: "gemfiles/activerecord_8_0.gemfile"
|
|
131
|
+
ruby: 3.3.11
|
|
132
|
+
name: "Ruby3-3_rails8-0"
|
|
176
133
|
- build:
|
|
177
|
-
gemfile: "gemfiles/
|
|
178
|
-
ruby: 3.
|
|
179
|
-
name: "Ruby3-
|
|
134
|
+
gemfile: "gemfiles/activerecord_8_1.gemfile"
|
|
135
|
+
ruby: 3.3.11
|
|
136
|
+
name: "Ruby3-3_rails8-1"
|
|
180
137
|
- build:
|
|
181
|
-
gemfile: "gemfiles/
|
|
182
|
-
ruby: 3.
|
|
183
|
-
name: "Ruby3-
|
|
138
|
+
gemfile: "gemfiles/activerecord_8_1.gemfile"
|
|
139
|
+
ruby: 3.4.9
|
|
140
|
+
name: "Ruby3-4_rails8-1"
|
|
184
141
|
- build:
|
|
185
|
-
gemfile: "gemfiles/
|
|
186
|
-
ruby:
|
|
187
|
-
name: "
|
|
142
|
+
gemfile: "gemfiles/activerecord_8_1.gemfile"
|
|
143
|
+
ruby: 4.0.5
|
|
144
|
+
name: "Ruby4-0_rails8-1"
|
data/.gitignore
CHANGED
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
|
|
@@ -27,31 +30,13 @@ services:
|
|
|
27
30
|
environment:
|
|
28
31
|
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"
|
|
29
32
|
portforward: 8988
|
|
30
|
-
valkyrie_fedora_5:
|
|
31
|
-
type: compose
|
|
32
|
-
app_mount: false
|
|
33
|
-
volumes:
|
|
34
|
-
fedora5:
|
|
35
|
-
services:
|
|
36
|
-
image: fcrepo/fcrepo:5.1.1-multiplatform
|
|
37
|
-
command:
|
|
38
|
-
- "catalina.sh"
|
|
39
|
-
- "run"
|
|
40
|
-
volumes:
|
|
41
|
-
- fedora5:/data
|
|
42
|
-
ports:
|
|
43
|
-
- 8998:8080
|
|
44
|
-
environment:
|
|
45
|
-
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"
|
|
46
|
-
JAVA_OPTS: "-Dfcrepo.dynamic.jms.port=61620 -Dfcrepo.dynamic.stomp.port=61617 -Dorg.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true"
|
|
47
|
-
portforward: true
|
|
48
33
|
valkyrie_fedora_6:
|
|
49
34
|
type: compose
|
|
50
35
|
app_mount: false
|
|
51
36
|
volumes:
|
|
52
37
|
fedora6:
|
|
53
38
|
services:
|
|
54
|
-
image: fcrepo/fcrepo:6.5
|
|
39
|
+
image: fcrepo/fcrepo:6.5-tomcat9
|
|
55
40
|
command:
|
|
56
41
|
- "catalina.sh"
|
|
57
42
|
- "run"
|
data/Appraisals
CHANGED
|
@@ -1,18 +1,12 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
gem "activerecord", "~> 7.2.0"
|
|
2
|
+
appraise "activerecord-8-1" do
|
|
3
|
+
gem "activerecord", "~> 8.1.0"
|
|
5
4
|
end
|
|
6
5
|
|
|
7
|
-
appraise "activerecord-
|
|
8
|
-
gem "activerecord", "~>
|
|
6
|
+
appraise "activerecord-8-0" do
|
|
7
|
+
gem "activerecord", "~> 8.0.0"
|
|
9
8
|
end
|
|
10
9
|
|
|
11
|
-
appraise "activerecord-7-
|
|
12
|
-
gem "activerecord", "~> 7.
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
appraise "faraday-1" do
|
|
16
|
-
gem "faraday", "~> 1.0"
|
|
17
|
-
gem "activerecord", "~> 7.0.0"
|
|
10
|
+
appraise "activerecord-7-2" do
|
|
11
|
+
gem "activerecord", "~> 7.2.0"
|
|
18
12
|
end
|
data/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,14 @@
|
|
|
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
|
+
|
|
7
|
+
# v3.5.1 2026-01-16
|
|
8
|
+
|
|
9
|
+
* Remove Fedora 5. ([tpendragon](https://github.com/tpendragon))
|
|
10
|
+
* Limit LSOF command to the current process ID ([hackartisan](https://github.com/hackartisan))
|
|
11
|
+
|
|
1
12
|
# v3.5.0 2024-12-10
|
|
2
13
|
|
|
3
14
|
* Provides new boolean configuration setting `auto_cast_iso8601_as_datetime` ([dchandekstark](https://github.com/dchandekstark))
|
data/README.md
CHANGED
|
@@ -224,14 +224,14 @@ custom adapters, but your application will still work.
|
|
|
224
224
|
Using the shared specs in your own models is described in more detail on the [Shared Specs Wiki
|
|
225
225
|
page](https://github.com/samvera/valkyrie/wiki/Shared-Specs).
|
|
226
226
|
|
|
227
|
-
### Fedora
|
|
227
|
+
### Fedora 6 Compatibility
|
|
228
228
|
When configuring your adapter, include the `fedora_version` parameter in your metadata or storage adapter
|
|
229
229
|
config. If Fedora requires auth, you can also include that in the URL, e.g.:
|
|
230
230
|
|
|
231
231
|
```
|
|
232
232
|
Valkyrie::Storage::Fedora.new(
|
|
233
233
|
connection: Ldp::Client.new("http://fedoraAdmin:fedoraAdmin@localhost:8988/rest"),
|
|
234
|
-
fedora_version:
|
|
234
|
+
fedora_version: 6
|
|
235
235
|
)
|
|
236
236
|
```
|
|
237
237
|
#### Pairtree paths in Fedora 4/6
|
|
@@ -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
|
|
@@ -9,12 +9,12 @@ module Valkyrie::Persistence::Postgres
|
|
|
9
9
|
#
|
|
10
10
|
# @see https://github.com/samvera-labs/valkyrie/wiki/Set-up-Valkyrie-database-in-a-Rails-Application
|
|
11
11
|
class MetadataAdapter
|
|
12
|
-
# @return [
|
|
12
|
+
# @return [Valkyrie::Persistence::Postgres::Persister]
|
|
13
13
|
def persister
|
|
14
14
|
Valkyrie::Persistence::Postgres::Persister.new(adapter: self)
|
|
15
15
|
end
|
|
16
16
|
|
|
17
|
-
# @return [
|
|
17
|
+
# @return [Valkyrie::Persistence::Postgres::QueryService]
|
|
18
18
|
def query_service
|
|
19
19
|
@query_service ||= Valkyrie::Persistence::Postgres::QueryService.new(
|
|
20
20
|
resource_factory: resource_factory,
|
|
@@ -22,7 +22,7 @@ module Valkyrie::Persistence::Postgres
|
|
|
22
22
|
)
|
|
23
23
|
end
|
|
24
24
|
|
|
25
|
-
# @return [
|
|
25
|
+
# @return [Valkyrie::Persistence::Postgres::ResourceFactory]
|
|
26
26
|
def resource_factory
|
|
27
27
|
@resource_factory ||= Valkyrie::Persistence::Postgres::ResourceFactory.new(adapter: self)
|
|
28
28
|
end
|
|
@@ -58,17 +58,18 @@ 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
|
|
65
65
|
the_file = storage_adapter.find_by(id: uploaded_file.id)
|
|
66
66
|
expect(the_file).to be_kind_of Valkyrie::StorageAdapter::File
|
|
67
|
-
expect(pre_open_files.size).to
|
|
67
|
+
expect(pre_open_files.size).to be <= open_files.size
|
|
68
68
|
end
|
|
69
69
|
|
|
70
70
|
def open_files
|
|
71
|
-
|
|
71
|
+
GC.start
|
|
72
|
+
`lsof -p #{Process.pid}`.split("\n").map { |r| r.split(/\s+/).last }
|
|
72
73
|
end
|
|
73
74
|
|
|
74
75
|
it "can upload, validate, re-fetch, and delete a file" do
|
|
@@ -116,7 +116,7 @@ module Valkyrie::Storage
|
|
|
116
116
|
if fedora_version == 4
|
|
117
117
|
version_graph&.fetch("http://fedora.info/definitions/v4/repository#hasVersion", [])
|
|
118
118
|
else
|
|
119
|
-
# Fedora
|
|
119
|
+
# Fedora 6 uses Memento.
|
|
120
120
|
version_graph&.fetch("http://www.w3.org/ns/ldp#contains", [])&.sort_by { |x| x["@id"] }&.reverse
|
|
121
121
|
end
|
|
122
122
|
end
|
|
@@ -176,33 +176,10 @@ module Valkyrie::Storage
|
|
|
176
176
|
end
|
|
177
177
|
# If there's a deletion marker, don't return anything. (Fedora 4)
|
|
178
178
|
return nil if response.status == 410
|
|
179
|
-
# This is awful, but versioning is locked to per-second increments,
|
|
180
|
-
# returns a 409 in Fedora 5 if there's a conflict.
|
|
181
|
-
if response.status == 409
|
|
182
|
-
sleep(0.5)
|
|
183
|
-
return mint_version(identifier, version_name)
|
|
184
|
-
end
|
|
185
179
|
raise "Version unable to be created" unless response.status == 201
|
|
186
180
|
valkyrie_identifier(uri: response.headers["location"].gsub("/fcr:metadata", ""))
|
|
187
181
|
end
|
|
188
182
|
|
|
189
|
-
class IOProxy
|
|
190
|
-
# @param response [Ldp::Resource::BinarySource]
|
|
191
|
-
attr_reader :size
|
|
192
|
-
def initialize(source)
|
|
193
|
-
@source = source
|
|
194
|
-
@size = source.size
|
|
195
|
-
end
|
|
196
|
-
delegate :each, :read, :rewind, to: :io
|
|
197
|
-
|
|
198
|
-
# There is no streaming support in faraday (https://github.com/lostisland/faraday/pull/604)
|
|
199
|
-
# @return [StringIO]
|
|
200
|
-
def io
|
|
201
|
-
@io ||= StringIO.new(@source)
|
|
202
|
-
end
|
|
203
|
-
end
|
|
204
|
-
private_constant :IOProxy
|
|
205
|
-
|
|
206
183
|
# Translate the Valkrie ID into a URL for the fedora file
|
|
207
184
|
# @return [RDF::URI]
|
|
208
185
|
def fedora_identifier(id:)
|
|
@@ -217,11 +194,15 @@ module Valkyrie::Storage
|
|
|
217
194
|
|
|
218
195
|
private
|
|
219
196
|
|
|
220
|
-
# @return [
|
|
197
|
+
# @return [StringIO]
|
|
221
198
|
def response(id:)
|
|
222
|
-
|
|
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
|
|
223
203
|
raise Valkyrie::StorageAdapter::FileNotFound, "HTTP #{response.status} #{response.body}" unless response.success?
|
|
224
|
-
|
|
204
|
+
io.rewind
|
|
205
|
+
io
|
|
225
206
|
end
|
|
226
207
|
|
|
227
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
|
@@ -25,7 +25,7 @@ Gem::Specification.new do |spec|
|
|
|
25
25
|
spec.add_dependency 'dry-struct'
|
|
26
26
|
spec.add_dependency 'activemodel'
|
|
27
27
|
spec.add_dependency 'dry-types', '~> 1.0'
|
|
28
|
-
spec.add_dependency 'rdf', '~> 3.0', '>= 3.
|
|
28
|
+
spec.add_dependency 'rdf', '~> 3.0', '>= 3.3.2'
|
|
29
29
|
spec.add_dependency 'activesupport'
|
|
30
30
|
spec.add_dependency 'railties' # To use generators and engines
|
|
31
31
|
spec.add_dependency 'reform', '~> 2.2'
|
|
@@ -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:
|
|
11
|
+
date: 2026-07-23 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: dry-struct
|
|
@@ -61,7 +61,7 @@ dependencies:
|
|
|
61
61
|
version: '3.0'
|
|
62
62
|
- - ">="
|
|
63
63
|
- !ruby/object:Gem::Version
|
|
64
|
-
version: 3.
|
|
64
|
+
version: 3.3.2
|
|
65
65
|
type: :runtime
|
|
66
66
|
prerelease: false
|
|
67
67
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -71,7 +71,7 @@ dependencies:
|
|
|
71
71
|
version: '3.0'
|
|
72
72
|
- - ">="
|
|
73
73
|
- !ruby/object:Gem::Version
|
|
74
|
-
version: 3.
|
|
74
|
+
version: 3.3.2
|
|
75
75
|
- !ruby/object:Gem::Dependency
|
|
76
76
|
name: activesupport
|
|
77
77
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -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_0.gemfile
|
|
456
|
-
- gemfiles/activerecord_7_1.gemfile
|
|
457
449
|
- gemfiles/activerecord_7_2.gemfile
|
|
458
|
-
- gemfiles/
|
|
450
|
+
- gemfiles/activerecord_8_0.gemfile
|
|
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