This guide is meant to get someone up and running with a Fedora 4 instance whose updates are automatically indexed in a Solr repository. This guide glosses over many of the working details and should just be considered a starting point for testing this feature. The document assumes a posix operating system with curl, a text editor, java, git, and a download of apache solr 4.6.0.
Install, Configure and Start Solr
tar -xzf solr-4.6.0.tgz
Edit solr-4.6.0/example/solr/collection1/conf/solrconfig.xml:
<!-- To enable dynamic schema REST APIs, use the following for <schemaFactory>: --> <schemaFactory class="ManagedIndexSchemaFactory"> <bool name="mutable">true</bool> <str name="managedSchemaResourceName">managed-schema</str> </schemaFactory> <!-- When ManagedIndexSchemaFactory is specified, Solr will load the schema from he resource named in 'managedSchemaResourceName', rather than from schema.xml. Note that the managed schema resource CANNOT be named schema.xml. If the managed schema does not exist, Solr will create it after reading schema.xml, then rename 'schema.xml' to 'schema.xml.bak'. Do NOT hand edit the managed schema - external modifications will be ignored and overwritten as a result of schema modification REST API calls. When ManagedIndexSchemaFactory is specified with mutable = true, schema modification REST API calls will be allowed; otherwise, error responses will be sent back for these requests. --> <!-- <schemaFactory class="ClassicIndexSchemaFactory"/> -->
The fcrepo-jms-indexer-pluggable SolrIndexer implementation does not commit upon updates. In order to see the changes, you must configure solr to have a commit strategy that is appropriate for your use. Node removal events do trigger a commit.
<!-- AutoCommit Perform a hard commit automatically under certain conditions. Instead of enabling autoCommit, consider using "commitWithin" when adding documents. http://wiki.apache.org/solr/UpdateXmlMessages maxDocs - Maximum number of documents to add since the last commit before automatically triggering a new commit. maxTime - Maximum amount of time in ms that is allowed to pass since a document was added before automatically triggering a new commit. openSearcher - if false, the commit causes recent index changes to be flushed to stable storage, but does not cause a new searcher to be opened to make those changes visible. If the updateLog is enabled, then it's highly recommended to have some sort of hard autoCommit to limit the log size. --> <autoCommit> <maxTime>${solr.autoCommit.maxTime:15000}</maxTime> <openSearcher>false</openSearcher> </autoCommit>
Start solr and verify that it is running at http://localhost:8983/solr.
cd solr-4.6.0/example java -jar start.jar
Add the "uuid" field ("title" and "id" already exist).
curl -X POST -H "Content-Type: application/json" -d "@solr-fields.json" "http://localhost:8986/solr/schema/fields"
[{"name":"uuid","type":"text_general","stored":"true","indexed":"true"}]