To support the differing needs for sophisticated, rich searching, Fedora 4 comes with a standard mechanism and integration point for indexing content in an external service.  This could be a general search service such as Apache Solr or a standalone triplestore such as Sesame or Fuseki.


To set up external index and searching you must:

Install and configure standalone search applications

fcrepo-message-consumer currently supports the following triplestores:

 

See the External Triplestore page for more details on the triplestore setup.

 

fcrepo-message-consumer currently supports the following indexer:

See the Solr Indexing Quick Guide to get quickly up and running with a Fedora 4 Solr integration.

 

Install and configure fcrepo-message-consumer

The fcrepo-message-consumer project includes software for a web service that sits between your Fedora 4 repository and an external search service.  As its name implies, it is a generic framework that allows for easy extension for integrating unanticipated or proprietary services with the Fedora 4 repository.  There are proof-of-concept implementations for Jena Fuseki, Sesame and Apache Solr.

The following github page has detailed instructions as to how to set up fcrepo-message-consumer.  This standalone app listens to messages produced by fcrepo4 and invokes the search applications as configured:

https://github.com/fcrepo4/fcrepo-message-consumer

Mark a resource as Indexable and assign an appropriate indexing transformation

For a resource to be indexed it must:

  1. have the rdf type http://fedora.info/definitions/v4/indexing#Indexable
  2. (optionally) have the property http://fedora.info/definitions/v4/indexing#hasIndexingTransformation set to a registered index transformation

A default indexing transformation exists that maps the appropriate properties to the field names "title", "uuid" and "id".  To meet your needs, you can write and register custom indexing transformations.

Create new objects with indexing properties

For an object to be indexed it must have a rdf:type of indexing:Indexable, and optionally a indexing:hasIndexingTransformation corresponding to an LDPATH program.

curl -X PATCH -H "Content-Type: application/sparql-update" --data-binary "@object.rdf" "http://localhost:8080/rest/indexableObject"

object.rdf:

PREFIX dc: <http://purl.org/dc/elements/1.1/>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX indexing: <http://fedora.info/definitions/v4/indexing#>
 
DELETE { }
INSERT { 
  <> indexing:hasIndexingTransformation "default"; 
  rdf:type indexing:Indexable; 
  dc:title "This title will show up in the index." }
WHERE { }