A core in Solr 4.0 will load libs in
You can also specify jars in other directory in solrconfig.xml in each core. Just remember that if you use relative path(we always use relative path), it is relative to current core home:
In solrconfig.xml,all directories and paths are resolved relative to the instanceDir.
I should have read the document more carefully :)
You can see this from solr code:
org.apache.solr.core.SolrResourceLoader:
Path is resolved relative to current instance directory:
void addToClassLoader(final String baseDir, final FileFilter filter) {
File base = FileUtils.resolvePath(new File(getInstanceDir()), baseDir);
this.classLoader = replaceClassLoader(classLoader, base, filter);
}
org.apache.solr.core.SolrConfig.initLibs() read all lib directive, and parse the path relative to current instanceDir.
In org.apache.solr.core.SolrResourceLoader.SolrResourceLoader(String, ClassLoader, Properties):
addToClassLoader("./lib/", null);
It adds all jars in <core_home>/lib to classloader.
Ways to specify datadir - index directory
1. In solr.xml:
http://wiki.apache.org/solr/CoreAdmin
<core name="collection1" instanceDir="collection1" dataDir="C:/jeffery/environment/solr4.1/solr4.1-index">
Or: <core name="collection1" instanceDir="collection1">
<property name="dataDir" value="C:/jeffery/environment/solr4.1/solr4.1-index" />
</core>
org.apache.solr.core.CoreContainerorg.apache.solr.core.CoreContainer.load(String, InputSource)
Here, we can see how it parses solr.xml.
2. In solrconfig.xml - previous ways are better.
http://wiki.apache.org/solr/SolrConfigXml
<dataDir>C:/jeffery/environment/solr4.1/solr4.1-index</dataDir>