先来看一个目录结构图
1、SolrHome
上一节我们用java -jar start.jar启动solr,
默认的,start.jar用jetty启动solr会用到默认的solr home目录"./solr/",相对于工作目录(这里就是solr-4.7.2\example\目录),
如果我们要运行别的例子,需要在启动jetty时指定别的solr.solr.home环境变量,如:
java -Dsolr.solr.home=multicore -jar start.jar
java -Dsolr.solr.home=example-DIH/solr -jar start.jar
2、Logging
默认日志会记录在solr-4.7.2\example\logs目录下的solr.log文件中,
如果要调整日志配置,编辑solr-4.7.2\example\resources目录下的log4j.properties配置文件;
3、SolrHome目录结构
SolrHome目录中,基本会包含下列:
3.1. solr.xml
这是solr启动后首先会读配置文件,它指定需要加载的SolrCores,以及会应用到所有SolrCores上的高层配置项(high level configuration options)。
如果没有solr.xml,或者像默认例子中solr.xml文件中没有配置<cores><core></core></cores>,那么solr会假设有一个名为"collection1"的SolrCore,SolrHome目录中也会有一个collection1目录。
3.2. 共享lib目录
虽然solr.xml有一个可选属性sharedLib可以指定任何目录,但通常在SolrHome目录中我们有一个"./lib"子目录来存共享lib。
3.3. ZooKeeper配置文件
当solr使用内置的ZooKeeper时,通常在SolrHome目录中有"zoo.cfg"配置文件和"zoo_data"目录。
4、SolrCores实例目录(SolrCore Instance Directory)
在SolrHome目录的solr.xml中,我们可以配置多个SolrCores,每个SolrCores在SolrHome目录中对应一个目录,称为SolrCores实例目录。
SolrCores实例目录通常包含下列:
4.1. 配置目录"conf/"
这个目录是必须的,而且必须包含solrconfig.xml和schema.xml配置文件,其它可选配置文件也在这个目录。
4.2. 数据目录"data/"
默认是"data/"目录,但是可以在solrconfig.xml的<dataDir></dataDir>配置项中指定,如果没有这个目录solr会自动创建。
这个目录被用来保存solr索引,复制脚本在处理快照(snapshots)时也会用到这个目录。
4.3. 库目录"lib/"(可选)
solr会读这个目录中的Jars,使用它们处理solrconfig.xml或schema.xml配置文件中指定的"plugins"。
另外一个更通常的方案,在solrconfig.xml配置文件中,用类似<lib dir="../../../contrib/extraction/lib" regex=".*\.jar" />的方法来指定Jars。
4.4. 用户自定义属性文件core.properties
可以定义一些用户自定义的属性,如:
name=collection2
my.custom.prop=edismax
使用如:
<requestHandler name="/select">
<lst name="defaults">
<str name="defType">${my.custom.prop}</str>
</lst>
</requestHandler>
5、solrconfig.xml
solrconfig.xml文件是影响Solr自身的最大部分参数的配置文件。
当配置Solr时,你会经常用到solrconfig.xml。
这个文件包含了一系列的XML语句用来设置配置值。
在solrconfig.xml中,你可以配置一些重要属性,包括:
请求处理器(<requestHandler />);
监听器,用于监听特殊查询相关事件的进程。监听器能用于触发特殊代码执行,例如调用一些已缓存的通用查询(<listener />);
请求分配器,管理HTTP通信(<requestDispatcher />);
管理页面的接口(<admin />);
复制、备份相关参数,在Legacy Scaling and Distribution中有介绍;
例子配置文件注释良好,并且包含大部分安装的最佳实践。
我们将选项分为以下几块:
DataDir和DirectoryFactory(<dataDir /> 和 <directoryFactory />);
Lib目录(<lib />);
管理表定义(<codecFactory /> 和 <schemaFactory />);
索引配置(<indexConfig />);
更新处理(<updateHandler />);
查询设置(<query />);
请求分配器(<requestDispatcher />);
请求处理器和查询组件(<requestDispatcher /> 和 <searchComponent />);
6、schema.xml
schema.xml配置文件定义了Solr如何将数据存入文档和字段中,首先来理解几个概念:
◇document,Solr的基本信息单元,它是用于描述一些东西的数据集合;
◇field,document是由很多field组成的,它是更小的片段信息;
◇field type,它告诉Solr怎样解释并且怎样查询field;
◇field analyzer,告诉Solr在创建索引时如何处理输入数据;
一个典型的结构如下:
<schema>
<fields>
<field />
<dynamicField />
</fields>
<uniqueKey>
</uniqueKey>
<copyField />
<types>
<analyzer>
<tokenizer />
<filter />
</analyzer>
</types>
</schema>
当然,还有一些参数也很常用,如<defaultSearchField />,<solrQueryParser />等等。
参考项目中《README.txt》和参考手册《apache-solr-ref-guide-4.7.pdf》