silverstripe-fulltextsearch/docs/Solr.md

83 lines
2.8 KiB
Markdown
Raw Normal View History

2012-07-19 03:27:53 +02:00
# Solr connector for SilverStripe fulltextsearch module
2012-07-18 17:54:59 +02:00
## Introduction
2012-07-18 17:54:59 +02:00
This module provides a fulltextsearch module connector to Solr.
It works with Solr in multi-core mode. It needs to be able to update Solr configuration files, and has modes for
doing this by direct file access (when Solr shares a server with SilverStripe) and by WebDAV (when it's on a different server).
2012-07-18 17:54:59 +02:00
See the helpful [Solr Tutorial](http://lucene.apache.org/fulltextsearch/api/doc-files/tutorial.html), for more on cores and querying.
2012-07-19 03:27:53 +02:00
2012-07-18 17:54:59 +02:00
## Requirements
2012-07-18 17:54:59 +02:00
Since Solr is Java based, it requires Java 1.5 or greater installed.
It also requires a servlet container such as Tomcat, Jetty, or Resin.
Jetty is already packaged with the module.
2012-07-18 17:54:59 +02:00
See the official [Solr installation docs](http://wiki.apache.org/solr/SolrInstall)
for more information.
2012-07-18 17:54:59 +02:00
Note that these requirements are for the Solr server environment,
which doesn't have to be the same physical machine as the SilverStripe webhost.
2012-07-18 17:54:59 +02:00
## Installation
2012-07-18 17:54:59 +02:00
Configure Solr in file mode. The 'path' directory has to be writeable
by the user the Solr search server is started with (see below).
// File: mysite/_config.php:
<?php
SearchUpdater::bind_manipulation_capture();
Solr::configure_server(isset($solr_config) ? $solr_config : array(
'host' => 'localhost',
'indexstore' => array(
'mode' => 'file',
'path' => BASE_PATH . '/fulltextsearch/thirdparty/fulltextsearch/server/solr'
)
));
Create an index
2012-07-18 17:54:59 +02:00
// File: mysite/code/MyIndex.php:
<?php
class MyIndex extends SolrIndex {
function init() {
$this->addClass('Page');
$this->addAllFulltextFields();
}
}
Start the search server (via CLI, in a separate terminal window or background process)
2012-07-18 17:54:59 +02:00
cd fulltextsearc/thirdparty/fulltextsearch/server/
java -jar start.jar
2012-07-18 17:54:59 +02:00
Initialize the configuration (via CLI)
2012-07-18 17:54:59 +02:00
sake dev/tasks/Solr_configure
2012-07-19 03:27:53 +02:00
2012-07-18 17:54:59 +02:00
Reindex
sake dev/tasks/Solr_reindex
## Usage
TODO
2012-07-19 03:27:53 +02:00
## Debugging
2012-07-18 17:54:59 +02:00
You can visit `http://localhost:8983/solr/MyIndex/admin/`
to search the contents of the now created Solr index via the native SOLR web interface.
Replace "MyIndex" with your own index definition as required.
2012-07-18 17:54:59 +02:00
It is possible to manually replicate the data automatically sent
to Solr when saving/publishing in SilverStripe,
which is useful when debugging front-end queries,
see `thirdparty/fulltextsearch/server/silverstripe-solr-test.xml`.
2012-07-18 17:54:59 +02:00
java -Durl=http://localhost:8983/solr/MyIndex/update/ -Dtype=text/xml -jar post.jar silverstripe-solr-test.xml
2012-07-19 03:27:53 +02:00
These instructions will get you running quickly, but the Solr indexes will be stored as binary files inside your SilverStripe project. You can also
copy the thirdparty/solr directory somewhere else. The instructions above will still apply - just set the path value
in mysite/_config.php to point to this other location, and of course run `java -jar start.jar` from the new directory,
2012-07-18 17:54:59 +02:00
not the thirdparty one.