How to set up Solr on Ubuntu 10.04 (or whatever)
| Tags: solr search
Apache Solr is a fast, open-source search solution. People are doing some very cool things with Solr. I personally have only begun to scratch the surface of what is possible with Solr, but have seen amazing returns with a relatively small investment (thanks entirely to Daniel Lindsley's excellent search framework, django-haystack). There are instructions for getting up and running with Solr + Jetty -- the purpose of this blog entry is to walk through setting up multi-core Solr with Apache Tomcat.
Let's go
First step, install the server:
sudo apt-get install tomcat6
Next you'll want to get Solr and extract it to a temporary directory
mkdir -p ~/tmp/solr/
cd ~/tmp/solr/
wget http://apache.multihomed.net/lucene/solr/1.4.0/apache-solr-1.4.0.tgz
tar xzf apache-solr-1.4.0.tgz
All the solr cores and indexes will go in /var/solr:
sudo mkdir -p /var/solr
Copy the Solr webapp and the example multicore configuration files:
sudo cp apache-solr-1.4.0/dist/apache-solr-1.4.0.war /var/solr/solr.war
sudo cp -R apache-solr-1.4.0/example/multicore/* /var/solr/
sudo chown -R tomcat6 /var/solr/
OK, now just need to point Catalina at Solr:
echo -e '
'crossContext="true">\n
'override="true" />\n' | sudo tee -a /etc/tomcat6/Catalina/localhost/solr.xml
echo 'TOMCAT6_SECURITY=no' | sudo tee -a /etc/default/tomcat6
I edited the init script (/etc/init.d/tomcat6) to set solr.home, pointing it at /var/solr. I made this change near the top of the file other environment vars are set up:
JAVA_OPTS="$JAVA_OPTS -Dsolr.home=/var/solr"
Restart Tomcat6 and luxuriate in your newfound power:
sudo /etc/init.d/tomcat6 restart
Navigate to http://localhost:8080/solr/ - you should get something like this:
Where to now?
The solrconfig.xml files provided for each core are pretty barebones, so you'll want to replace those with something more like the solrconfig.xml at
~/tmp/solr/apache-solr-1.4.0/example/solr/conf/solrconfig.xml
I personally copy all the stuff from the example conf directory into any new cores I create and use that as a starting place.