Class: Valkyrie::Persistence::Solr::Persister

Inherits:
Object
  • Object
show all
Defined in:
lib/valkyrie/persistence/solr/persister.rb

Overview

Persister for Solr MetadataAdapter.

Most methods are delegated to Repository

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(adapter:) ⇒ Persister

Returns a new instance of Persister.

Parameters:



13
14
15
# File 'lib/valkyrie/persistence/solr/persister.rb', line 13

def initialize(adapter:)
  @adapter = adapter
end

Instance Attribute Details

#adapterObject (readonly)

Returns the value of attribute adapter.



8
9
10
# File 'lib/valkyrie/persistence/solr/persister.rb', line 8

def adapter
  @adapter
end

Instance Method Details

#delete(resource:) ⇒ Valkyrie::Resource

Deletes a Valkyrie Resource persisted into a Solr index

Parameters:

Returns:



41
42
43
# File 'lib/valkyrie/persistence/solr/persister.rb', line 41

def delete(resource:)
  repository([resource]).delete.first
end

#repository(resources) ⇒ Valkyrie::Persistence::Solr::Repository

Constructs a Solr::Repository object for a set of Valkyrie Resources

Parameters:

Returns:



54
55
56
# File 'lib/valkyrie/persistence/solr/persister.rb', line 54

def repository(resources)
  Valkyrie::Persistence::Solr::Repository.new(resources: resources, connection: connection, resource_factory: resource_factory)
end

#save(resource:) ⇒ Valkyrie::Resource

Note:

Fields are saved using Solr’s dynamic fields functionality. If the text has length > 1000, it is stored as *_tsim otherwise it’s stored as *_tsim, *_ssim, and *_tesim e.g., a field called ‘title’ would be stored as 3 solr fields:

'title_tsim'
'title_ssim'
'title_tesim'

Persists a Valkyrie Resource into a Solr index

Parameters:

Returns:



27
28
29
# File 'lib/valkyrie/persistence/solr/persister.rb', line 27

def save(resource:)
  repository([resource]).persist.first
end

#save_all(resources:) ⇒ Valkyrie::Resource

Persists a set of Valkyrie Resources into a Solr index

Parameters:

Returns:



34
35
36
# File 'lib/valkyrie/persistence/solr/persister.rb', line 34

def save_all(resources:)
  repository(resources).persist
end

#wipe!Object

Delete the Solr index of all Documents



46
47
48
49
# File 'lib/valkyrie/persistence/solr/persister.rb', line 46

def wipe!
  connection.delete_by_query("*:*")
  connection.commit
end