Excerpt |
---|
To support the differing needs for sophisticated, rich searching, fedora 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 . |
Define Indexing Namespace and Mixin in Compact Node Definition of fcrepo4
External indexing relies upon the objects you wish to have indexed to have an indexing:indexable mixin property. Make sure your node definitions contain the following:
Code Block | ||
---|---|---|
| ||
<indexing = 'http://fedora.info/definitions/v4/indexing#'>
[indexing:indexable] mixin
- indexing:hasIndexingTransformation (STRING) multiple COPY nofulltext noqueryorder |
The standard configuration chain is as follows:
...
or a standalone triplestore such as Sesame or Fuseki. |
To set up external index and searching you must:
Table of Contents | ||
---|---|---|
|
Install and configure standalone search applications
fcrepo-message-consumer currently supports the following triplestores:
- Jena Fuseki (Fuseki setup instructions)
- Sesame (Sesame setup instructions)
Tip |
---|
See the External Triplestore page for more details on the triplestore setup. |
fcrepo-message-consumer currently supports the following indexer:
Tip |
---|
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/futuresfcrepo4/fcrepo-jmsmessage-indexer-pluggable
TODO: flesh out
Load an LDPATH program
The following is an example of loading a LDPATH program called "custom".
...
Mark a resource as indexable and assign an appropriate indexing transformation
For a resource to be indexed it must:
- have the rdf type http://fedora.info/definitions/v4/indexing#indexable
- (optionally) have the property http://fedora.info/definitions/v4/
...
- indexing#hasIndexingTransformation set to a registered index transformation
Tip | ||
---|---|---|
| ||
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.
Create objects with indexing properties
Code Block | ||
---|---|---|
| ||
curl -X POSTPATCH -H "Content-Type: application/n3sparql-update" --data-binary "@object.rdf" "http://localhost:8080/rest/node/to/create" -d "@body.rdf" body.rdf: @prefixindexableObject" object.rdf: PREFIX dc: <http://purl.org/dc/elements/1.1/> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . @prefixPREFIX indexing: <http://fedora.info/definitions/v4/indexing#>. <object uri> rdf:type <http://fedora.info/definitions/v4/indexing#indexable> DELETE { } INSERT { <> indexing:hasIndexingTransformation \"default\". |
...
";
rdf:type indexing:indexable;
dc:title "This title will show up in the index." }
WHERE { } |