Solr简介及下载
Solr与Lucene
Solr与Lucene 并不是竞争对立关系,恰恰相反Solr 依存于Lucene,因为Solr底层的核心技术是使用Lucene 来实现的,Solr和Lucene的本质区别有以下三点:搜索服务器,企业级和管理。Lucene本质上是搜索库,不是独立的应用程序,而Solr是。Lucene专注于搜索底层的建设,而Solr专注于企业应用。Lucene不负责支撑搜索服务所必须的管理,而Solr负责。所以说,一句话概括 Solr: Solr是Lucene面向企业搜索应用的扩展。
了解Solr
使用Apache Solr实现更加灵巧的搜索 (Lucene Java™ 的提交人 Grant Ingersoll):
- 第 1 部分: 基本特性和 Solr 模式:http://www.ibm.com/developerworks/cn/java/j-solr1/index.html
- 第 2 部分: 用于企业的 Solr:http://www.ibm.com/developerworks/cn/java/j-solr2/index.html
Solr下载:http://lucene.apache.org/
下载解压后的solr包下包含几个文件夹:
- dist:build过程中产生的war和jar文件,以及相关的依赖文件。需要部署时,其实就是将该目录下面的apache-solr-1.4.war部署到Jetty上面去,并重命名为solr.war
- example:Jetty的安装目录。其中包含了一些样例数据和一些Solr的配置
- contrib:有一些功能模块所需要的jar包
Solr安装
Solr安装:http://www.cnblogs.com/qiyebao/p/3880121.html (测试可用)
我的Solr单核安装
- 在D盘下创建目录 D:\solr , 在 solr文件夹下创建两个文件夹:home(存放solr实例运行目录)、server(solr服务目录)
- 解压solr-4.10.0文件:将example/solr文件夹中的所有文件(不含solr文件夹本身),拷贝到D:\solr\home目录下;将dist目录下的solr-4.10.0.war 拷贝到D:\solr\server目录下,重命名为solr.war,并手动解压<解压到“solr\”>。
- 整合tomcat,配置solr.home环境变量。两种方式(二选一即可):
- 修改D:\solr\server\solr\WEB-INF下的web.xml文件,添加env-entry结点(默认是注释掉的)
<env-entry> <env-entry-name>solr/home</env-entry-name> <env-entry-value>D:/solr/home</env-entry-value> <env-entry-type>java.lang.String</env-entry-type> </env-entry>
- 基于JNDI的配置方式,修改D:\tomcat-7.0.56\conf下的server.xml文件,添加一个Context结点(在<Host>结点中)
<Context docBase="D:\solr\server\solr" path="/solr" reloadable="false" > <Environment name="solr/home" type="java.lang.String" value="D:\solr\home" override="true" /> </Context>
- 修改D:\solr\server\solr\WEB-INF下的web.xml文件,添加env-entry结点(默认是注释掉的)
- 添加jar包:将解压后的solr-4.10.0文件夹下example/lib/ext下的jar包拷贝到solr服务的lib目录下,对应本机D:\solr\server\solr\WEB-INF\lib
- 启动Tomcat之后,在地址栏输入:http://localhost:8080/solr
Solr多核配置安装 ☆
为什么要采用多核?
Solr1.3引入了Solr core的概念,该方案使用一个Solr实例管理多个indexes,这样就有热点core(hot core)的重读(reloading)与交换(swap,通常是读index与写index交换),那么管理一个 core或index也容易些。每个Solr core由它自己的配置文件和索引数据组成。在多core执行搜索和索引几乎和没有使用core一样:
- 单核搜索如:http://localhost:8080/solr/select?q=dave%20matthews
- 多核环境下搜索名为April的core:http://localhost:8080/solr/core0/select?q=dave%20matthews
多核搜索时并非在URL中引入core name的参数名值对,而是用不同的context。这样就可以像在单core中执行你的管理任务,搜索,更新操作
怎么配置多核
- 将解压后solr-4.10.0文件夹example/multicode下的文件拷贝到存放solr实例的运行目录下,对应本机D:\solr\home。
- 自定义多核(即索引库)名称:拷贝过来的多核文件,默认为code1、code2,可以自定义为其他名称如april、ch,但需修改同文件夹下的solr.xml文件
<solr persistent="false"> <!-- adminPath: RequestHandler path to manage cores. If 'null' (or absent), cores will not be manageable via request handler --> <cores adminPath="/admin/cores" host="${host:}" hostPort="${jetty.port:8983}" hostContext="${hostContext:solr}"> <core name="april" instanceDir="april" /> <core name="core1" instanceDir="ch" /> <shardHandlerFactory name="shardHandlerFactory" class="HttpShardHandlerFactory"> <str name="urlScheme">${urlScheme:}</str> </shardHandlerFactory> </cores> </solr>
- 自定义多核存放索引数据的位置:按上面solr.xml中的配置,多核索引数据存放于code名/data目录下,data文件夹为默认创建,若要自定义索引data库位置,参照
<core name="core0" instanceDir="core0"> <property name="dataDir" value="/data/core0" /> </core> <core name="core1" instanceDir="core1"> <property name="dataDir" value="/data/core1" /> </core>
注:
-
core0、core1../conf目录下有schema.xml与solrconfig.xml,可以把实际应用的/solr/conf/schema.xml复制过来(注意:solrconfig.xml不要复制)
-
如果已经配置了单核,可以直接把solr实例运行目录下对应本机D:/solr/home下collection1文件夹(这就是一个实体)复制一份,并修改solr.xml,就变成了多核( 推荐在单核的基础上配置多核,因为collection1下的停词器啊之类的文件以及配置文件都很完整)
-
请尽可能配置为多核
接下来?