Tomcat SOLR multiple cores setup
I have spend all morning trying to set up multiple cores on a SOLR installation that runs under Apache Tomcat server without success. My solr.xml looks like this:
<solr persistent="false" sharedLib="lib">
<cores adminPath="/admin/cores">
<core name="core0" instanceDir="/multicore/core0">
<property name="dataDir" value="/multicore/core0/data" />
</core>
<core name="core1" instanceDir="/multicore/core1">
<property name="dataDir" value="/multicore/core1/data" />
</core>
</cores>
</solr>
What is the correct directory structure? Do I ne开发者_Go百科ed to do change something in the solrconfig.xml?
Check that your instanceDir values are relative to -Dsolr.solr.home. If -Dsolr.solr.home is 'multicore', then your instanceDir should be only "core0".
If you put your data folder inside your instanceDir, you should not have to specify its path:
<?xml version='1.0' encoding='UTF-8'?>
<solr persistent="true">
<cores adminPath="/admin/cores">
<core name="core0" instanceDir="core0" />
<core name="core1" instanceDir="core1" />
</cores>
</solr>
You should not have to set anything in solrconfig.xml. But if you need to configure an handler independantly of the core location, you can use the variable ${solr.core.instanceDir}.
UPDATE
To set the solr.solr.home variable with Tomcat, use the JAVA_OPTS environment variable before starting Tomcat:
JAVA_OPTS="-Dsolr.solr.home=multicore"
export JAVA_OPTS
tomcat/bin/catalina.sh start
Make sure that "multicore" is correctly set relative to the working directory. Per example, if solr.solr.home='multicore', you have to launch Tomcat from the directory where "multicore" is located.
This is kind of late in the game, but I just put up a blog post with instructions for a multicore SOLR instance on Tomcat which reads:
- Downloaded and installed the 32-bit/64-bit Windows Service Installer for Tomcat
- Installed Tomcat on the server (no special instructions here--just run the install and install wherever you wish)
- Verified the installation of Tomcat by going to http://localhost:8080
- Edit Tomcat's conf/server.xml and add URIEncoding="UTF-8" to the <Connector> element as shown here
- Download SOLR from one of the mirrors found here (downloaded the apache-solr-1.4.1.zip package) and unzip the package
- Create a directory where SOLR will be hosted from (in my case I used e:\inetpub\solr)
- Copy the contents of the example\solr directory to your SOLR host directory (in my case e:\inetpub\solr)
- Create directories under your SOLR host directory for each of the cores you wish to create (I created a dozen or so folders for each core I wanted to create in the e:\inetpub\solr directory. The directories included en-US, en-CA, en-GB, etc.)
- Copy the solr.xml file from the example\multicore directory and paste it into your SOLR host directory (e:\inetpub\solr for my example)
- Edit the solr.xml file to include the information for each of the cores you created (if you created a folder under your host for a core named en-US, then add the following under the <cores> element in the solr.xml file: <core name="en-US" instanceDir="en-US" />)
- Stop the Tomcat Service
- Copy the *solr*.war file from the dist directory in the unzipped SOLR package to your Tomcat webapps folder
- Rename the *solr*.war file to solr.war
- In the notification area in the right-hand side of the Windows task bar, right-click on the Apache Tomcat 7 icon and select Configure
- Click the Java tab and add the following to the Java Options text box: -Dsolr.solr.home=e:\inetpub\solr (change e:\inetpub\solr to wherever your SOLR is being hosted)
- Click OK in the dialog and then start-up the Tomcat service
- Open the conf\solrconfig.xml files under each of the cores you created and change the dataDir element to point to a specific directory. If this step is not completed, all of your cores will be using the same data store for their data.
- Stop and re-start the Tomcat Service
- Test that your cores are running by running a query from the web browser http://localhost:8080/solr/en-US/select?q=*:* (replace "en-US" with whatever you've named one of your cores)
精彩评论