cul_scv_hydra 0.18.5 → 0.19.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/models/concerns/cul/scv/hydra/models/common.rb +7 -1
- data/app/models/generic_aggregator.rb +20 -9
- data/config/fedora.yml +8 -8
- data/config/locales/nnc.ntriples +12 -0
- data/config/subs.yml +12 -0
- data/lib/cul_scv_hydra/indexer.rb +27 -31
- data/lib/cul_scv_hydra/risearch_members.rb +17 -13
- data/lib/cul_scv_hydra/solrizer/scv_mods_fieldable.rb +0 -3
- data/lib/cul_scv_hydra/version.rb +1 -1
- metadata +4 -4
- data/config/solr.yml +0 -5
- data/lib/cul_scv_hydra/version.rb~ +0 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 34451fcabc90e9ac89be6eed09a7220eb2083da4
|
4
|
+
data.tar.gz: 67a8560c793304772b84e2d276c72ccfce0c9a42
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 28db11a406d299d886630272013790937cd2319de0d7fb32a0677950428e2559ecd804ad207a8b09a32e022a05518fafdddd0693e164cda1f9e56e370780fab3
|
7
|
+
data.tar.gz: 185b9756f75697271db9806c69c1fbc21f6b45c29a1bf692f2efb21aabecd5667b87e47284ec39850a65bba38184907f310d704df33d31ac24c8c6383c71963a
|
@@ -73,6 +73,11 @@ module Cul::Scv::Hydra::Models::Common
|
|
73
73
|
has_desc
|
74
74
|
end
|
75
75
|
|
76
|
+
# set the index type label and any RI-based fields
|
77
|
+
def set_size_labels(solr_doc={})
|
78
|
+
solr_doc["index_type_label_ssi"] = [self.index_type_label]
|
79
|
+
end
|
80
|
+
|
76
81
|
def to_solr(solr_doc = Hash.new, opts={})
|
77
82
|
solr_doc = super(solr_doc, opts)
|
78
83
|
|
@@ -105,7 +110,8 @@ module Cul::Scv::Hydra::Models::Common
|
|
105
110
|
solr_doc["title_display_ssm"].uniq!
|
106
111
|
end
|
107
112
|
solr_doc["format_ssi"] = [self.route_as]
|
108
|
-
|
113
|
+
|
114
|
+
set_size_labels(solr_doc)
|
109
115
|
|
110
116
|
solr_doc.each_pair {|key, value|
|
111
117
|
if value.is_a? Array
|
@@ -16,25 +16,36 @@ class GenericAggregator < ::ActiveFedora::Base
|
|
16
16
|
def index_type_label
|
17
17
|
riquery = Cul::Scv::Hydra::Models::MEMBER_ITQL.gsub(/%PID%/, self.pid)
|
18
18
|
begin
|
19
|
-
docs = Cul::Scv::Fedora.repository.find_by_itql riquery, limit: 2, format: 'json'
|
19
|
+
docs = Cul::Scv::Fedora.repository.find_by_itql riquery, limit: 2, format: 'count/json'
|
20
20
|
docs = JSON.parse(docs)['results']
|
21
|
+
size = docs.first && docs.first['count'] && docs.first['count'].to_i
|
21
22
|
rescue Exception=>e
|
22
23
|
Rails.logger.warn("#{self.class.name} failed to find children with TQL: #{e.message}")
|
23
|
-
docs = self.parts
|
24
24
|
end
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
25
|
+
size ||= self.parts(response_format: :solr, limit: 2).size
|
26
|
+
type_label_for(size)
|
27
|
+
end
|
28
|
+
|
29
|
+
def type_label_for(size=nil)
|
30
|
+
if size == 0
|
31
|
+
return "EMPTY"
|
32
|
+
elsif size == 1
|
33
|
+
return "SINGLE PART"
|
29
34
|
else
|
30
|
-
|
35
|
+
return "MULTIPART"
|
31
36
|
end
|
32
|
-
|
37
|
+
end
|
38
|
+
|
39
|
+
# set the index type label and any RI-based fields
|
40
|
+
# overridde
|
41
|
+
def set_size_labels(solr_doc={})
|
42
|
+
count = Cul::Scv::Hydra::RisearchMembers.get_direct_member_count(pid)
|
43
|
+
solr_doc["index_type_label_ssi"] = [type_label_for(count)]
|
44
|
+
solr_doc["cul_number_of_members_isi"] = count
|
33
45
|
end
|
34
46
|
|
35
47
|
def to_solr(solr_doc = Hash.new, opts={})
|
36
48
|
solr_doc = super(solr_doc, opts)
|
37
|
-
solr_doc["cul_number_of_members_isi"] = Cul::Scv::Hydra::RisearchMembers.get_direct_member_pids(pid).length
|
38
49
|
solr_doc
|
39
50
|
end
|
40
51
|
|
data/config/fedora.yml
CHANGED
@@ -1,11 +1,11 @@
|
|
1
|
-
|
1
|
+
alcott: &alcott
|
2
|
+
:url: http://alcott.cul.columbia.edu:8080/fedora
|
2
3
|
:user: fedoraAdmin
|
3
|
-
:password:
|
4
|
-
|
5
|
-
:
|
6
|
-
|
7
|
-
test:
|
4
|
+
:password: f+BULUS*^
|
5
|
+
default: &default
|
6
|
+
:url: http://127.0.0.1:8983/fedora
|
8
7
|
:user: fedoraAdmin
|
9
8
|
:password: fedoraAdmin
|
10
|
-
|
11
|
-
|
9
|
+
development: *alcott
|
10
|
+
test: *default
|
11
|
+
production: *alcott
|
@@ -0,0 +1,12 @@
|
|
1
|
+
<info:fedora/marcorg:nnc> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.loc.gov/mads/rdf/v1#CorporateName> .
|
2
|
+
<info:fedora/marcorg:nnc> <http://www.loc.gov/mads/rdf/v1#hasReciprocalAuthority> <http://id.loc.gov/vocabulary/organizations/nnc> .
|
3
|
+
<info:fedora/marcorg:nnc> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.loc.gov/mads/rdf/v1#Authority> .
|
4
|
+
<info:fedora/marcorg:nnc> <http://www.loc.gov/mads/rdf/v1#code> "NNC"^^<http://id.loc.gov/datatypes/orgs/code> .
|
5
|
+
<info:fedora/marcorg:nnc> <http://www.loc.gov/mads/rdf/v1#code> "nnc"^^<http://id.loc.gov/datatypes/orgs/normalized> .
|
6
|
+
<info:fedora/marcorg:nnc> <http://www.loc.gov/mads/rdf/v1#authoritativeLabel> "Butler Library"@en .
|
7
|
+
<info:fedora/marcorg:nnc> <http://www.loc.gov/mads/rdf/v1#hasAbbreviationVariant> _:bnodereponncfacet .
|
8
|
+
<info:fedora/marcorg:nnc> <http://www.loc.gov/mads/rdf/v1#hasExpansionVariant> _:bnodereponncfull .
|
9
|
+
_:bnodereponncfacet <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.loc.gov/mads/rdf/v1#Variant> .
|
10
|
+
_:bnodereponncfacet <http://www.loc.gov/mads/rdf/v1#variantLabel> "Butler Library"@en .
|
11
|
+
_:bnodereponncfull <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.loc.gov/mads/rdf/v1#Variant> .
|
12
|
+
_:bnodereponncfull <http://www.loc.gov/mads/rdf/v1#variantLabel> "Butler Library, Columbia University"@en
|
data/config/subs.yml
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
development:
|
2
|
+
djatoka_server: "http://iris.cul.columbia.edu:8080"
|
3
|
+
fedora_server: "http://sayers.cul.columbia.edu:8080"
|
4
|
+
php_server: "http://bach.cul.columbia.edu/dev"
|
5
|
+
test:
|
6
|
+
djatoka_server: "http://iris.cul.columbia.edu:8080"
|
7
|
+
fedora_server: "http://sayers.cul.columbia.edu:8080"
|
8
|
+
php_server: "http://bach.cul.columbia.edu/dev"
|
9
|
+
production:
|
10
|
+
djatoka_server: "http://iris.cul.columbia.edu:8080"
|
11
|
+
fedora_server: "http://alcott.cul.columbia.edu:8080"
|
12
|
+
php_server: "http://bach.cul.columbia.edu"
|
@@ -1,7 +1,6 @@
|
|
1
1
|
module Cul::Scv::Hydra::Indexer
|
2
2
|
|
3
|
-
def self.
|
4
|
-
|
3
|
+
def self.descend_from(pid, pids_to_omit=nil, verbose_output=false)
|
5
4
|
if pid.blank?
|
6
5
|
raise 'Please supply a pid (e.g. rake recursively_index_fedora_objects pid=ldpd:123)'
|
7
6
|
end
|
@@ -11,24 +10,12 @@ module Cul::Scv::Hydra::Indexer
|
|
11
10
|
end
|
12
11
|
|
13
12
|
if pids_to_omit.present? && pids_to_omit.include?(pid)
|
14
|
-
puts 'Skipping
|
13
|
+
puts 'Skipping topmost object in this set (' + pid + ') because it has been intentionally omitted...' if verbose_output
|
15
14
|
else
|
16
15
|
puts 'Indexing topmost object in this set (' + pid + ')...' if verbose_output
|
17
16
|
puts 'If this is a BagAggregator with a lot of members, this may take a while...' if verbose_output
|
18
17
|
|
19
|
-
|
20
|
-
active_fedora_object = ActiveFedora::Base.find(pid, :cast => true)
|
21
|
-
|
22
|
-
if skip_generic_resources && active_fedora_object.is_a?(GenericResource)
|
23
|
-
puts 'Top level object was skipped because GenericResources are being skipped and it is a GenericResource.'
|
24
|
-
else
|
25
|
-
begin
|
26
|
-
active_fedora_object.update_index
|
27
|
-
rescue Exception => e
|
28
|
-
puts 'Encountered problem. Skipping record. Exception: ' + e.message
|
29
|
-
end
|
30
|
-
puts 'Done indexing topmost object (' + pid + '). Took ' + (Time.now - START_TIME).to_s + ' seconds' if verbose_output
|
31
|
-
end
|
18
|
+
yield pid
|
32
19
|
|
33
20
|
end
|
34
21
|
|
@@ -49,27 +36,36 @@ module Cul::Scv::Hydra::Indexer
|
|
49
36
|
if total_number_of_members > 0
|
50
37
|
unique_pids.each {|pid|
|
51
38
|
|
52
|
-
|
39
|
+
puts 'Recursing on ' + i.to_s + ' of ' + total_number_of_members.to_s + ' members (' + pid + ')...' if verbose_output
|
53
40
|
|
54
|
-
|
55
|
-
|
56
|
-
if skip_generic_resources && active_fedora_object.is_a?(GenericResource)
|
57
|
-
puts "skipped (because we're skipping GenericResources." if verbose_output
|
58
|
-
else
|
59
|
-
begin
|
60
|
-
active_fedora_object.update_index
|
61
|
-
rescue Exception => e
|
62
|
-
puts 'Encountered problem. Skipping record. Exception: ' + e.message
|
63
|
-
end
|
64
|
-
# Display progress
|
65
|
-
puts 'done.' if verbose_output
|
66
|
-
end
|
41
|
+
yield pid
|
67
42
|
|
68
43
|
i += 1
|
69
44
|
}
|
70
45
|
end
|
71
46
|
|
72
|
-
puts '
|
47
|
+
puts 'Recursion complete!'
|
48
|
+
|
49
|
+
end
|
50
|
+
def self.recursively_index_fedora_objects(top_pid, pids_to_omit=nil, skip_generic_resources=false, verbose_output=false)
|
51
|
+
|
52
|
+
descend_from(top_pid, pids_to_omit, verbose_output) do |pid|
|
53
|
+
|
54
|
+
# We found an object with the desired PID. Let's reindex it
|
55
|
+
active_fedora_object = ActiveFedora::Base.find(pid, :cast => true)
|
56
|
+
|
57
|
+
if skip_generic_resources && active_fedora_object.is_a?(GenericResource)
|
58
|
+
puts 'Top level object was skipped because GenericResources are being skipped and it is a GenericResource.'
|
59
|
+
else
|
60
|
+
begin
|
61
|
+
active_fedora_object.update_index
|
62
|
+
puts 'done.' if verbose_output
|
63
|
+
rescue Exception => e
|
64
|
+
puts 'Encountered problem. Skipping record. Exception: ' + e.message
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
end
|
73
69
|
|
74
70
|
end
|
75
71
|
|
@@ -3,13 +3,12 @@ module Cul::Scv::Hydra::RisearchMembers
|
|
3
3
|
def self.get_recursive_member_pids(pid, verbose_output=false, cmodel_type='all')
|
4
4
|
|
5
5
|
recursive_member_query =
|
6
|
-
'select $child $parent
|
6
|
+
'select $child $parent from <#ri>
|
7
7
|
where
|
8
|
-
walk($child <http://purl.oclc.org/NET/CUL/memberOf> <fedora:' + pid + '> and $child <http://purl.oclc.org/NET/CUL/memberOf> $parent)
|
9
|
-
and
|
10
|
-
$child <fedora-model:hasModel> $cmodel'
|
8
|
+
walk($child <http://purl.oclc.org/NET/CUL/memberOf> <fedora:' + pid + '> and $child <http://purl.oclc.org/NET/CUL/memberOf> $parent)'
|
11
9
|
|
12
10
|
unless cmodel_type == 'all'
|
11
|
+
recursive_member_query += ' and $child <fedora-model:hasModel> $cmodel'
|
13
12
|
recursive_member_query += ' and $cmodel <mulgara:is> <info:fedora/ldpd:' + cmodel_type + '>'
|
14
13
|
end
|
15
14
|
|
@@ -29,27 +28,32 @@ module Cul::Scv::Hydra::RisearchMembers
|
|
29
28
|
|
30
29
|
end
|
31
30
|
|
32
|
-
def self.
|
31
|
+
def self.get_direct_member_results(pid, verbose_output=false, format='json')
|
33
32
|
|
34
33
|
direct_member_query =
|
35
|
-
'select $pid
|
36
|
-
where $pid <http://purl.oclc.org/NET/CUL/memberOf> <fedora:' + pid + '>
|
37
|
-
and $pid <fedora-model:hasModel> $cmodel'
|
34
|
+
'select $pid from <#ri>
|
35
|
+
where $pid <http://purl.oclc.org/NET/CUL/memberOf> <fedora:' + pid + '>'
|
38
36
|
|
39
37
|
puts 'Performing query:' if verbose_output
|
40
38
|
puts direct_member_query if verbose_output
|
41
39
|
|
42
40
|
search_response = JSON(Cul::Scv::Fedora.repository.find_by_itql(direct_member_query, {
|
43
41
|
:type => 'tuples',
|
44
|
-
:format =>
|
42
|
+
:format => format,
|
45
43
|
:limit => '',
|
46
44
|
:stream => 'on'
|
47
45
|
}))
|
48
46
|
|
49
|
-
|
50
|
-
|
51
|
-
return unique_pids
|
52
|
-
|
47
|
+
return search_response['results']
|
53
48
|
end
|
54
49
|
|
50
|
+
def self.get_direct_member_pids(pid, verbose_output=false)
|
51
|
+
unique_pids = get_direct_member_results(pid,verbose_output,'json')
|
52
|
+
unique_pids.map{|result| result['pid'].gsub('info:fedora/', '') }.uniq
|
53
|
+
end
|
54
|
+
|
55
|
+
def self.get_direct_member_count(pid, verbose_output=false)
|
56
|
+
count = get_direct_member_results(pid,verbose_output,'count/json')
|
57
|
+
return count.blank? ? 0 : count[0]['count'].to_i
|
58
|
+
end
|
55
59
|
end
|
@@ -274,9 +274,6 @@ module Cul::Scv::Hydra::Solrizer
|
|
274
274
|
places_without_uri << ScvModsFieldable.normalize(n.text, true)
|
275
275
|
end
|
276
276
|
|
277
|
-
puts 'places_with_uri: ' + places_with_uri.inspect
|
278
|
-
puts 'places_without_uri: ' + places_without_uri.inspect
|
279
|
-
|
280
277
|
return (places_without_uri.length > 0 ? places_without_uri : places_with_uri)
|
281
278
|
end
|
282
279
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cul_scv_hydra
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.19.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Benjamin Armintor
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-10-
|
11
|
+
date: 2014-10-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: blacklight
|
@@ -254,10 +254,11 @@ files:
|
|
254
254
|
- config/fedora.yml
|
255
255
|
- config/jetty.yml
|
256
256
|
- config/locales/ldpd_hydra.en.yml
|
257
|
+
- config/locales/nnc.ntriples
|
257
258
|
- config/predicate_mappings.yml
|
258
|
-
- config/solr.yml
|
259
259
|
- config/solr_mappings.yml
|
260
260
|
- config/solr_value_maps.yml
|
261
|
+
- config/subs.yml
|
261
262
|
- lib/cul_scv_fedora/dummy_object.rb
|
262
263
|
- lib/cul_scv_fedora/rubydora_patch.rb
|
263
264
|
- lib/cul_scv_fedora/url_helper_behavior.rb
|
@@ -293,7 +294,6 @@ files:
|
|
293
294
|
- lib/cul_scv_hydra/solrizer/terminology_based_solrizer.rb
|
294
295
|
- lib/cul_scv_hydra/solrizer/value_mapper.rb
|
295
296
|
- lib/cul_scv_hydra/version.rb
|
296
|
-
- lib/cul_scv_hydra/version.rb~
|
297
297
|
- lib/tasks/cmodel.rake
|
298
298
|
- lib/tasks/cul_hydra_dev.rake
|
299
299
|
- lib/tasks/index.rake
|
data/config/solr.yml
DELETED