经常听同事说到solr,lucene,所以决定自己也研究一下,这样也好有个讨论的话题。
首先要搞清楚,solr是个什么东东。
solr是apache的一个开源项目,它是基于lucene的一个企业级全文索引和搜索引擎。
通过solr可以对数据源进行索引的建立,更新,查询和删除等操作,而索引的建立还会牵扯到分词等。
只看介绍,还是搞不清楚具体能做什么,只大概的了解是和搜索有关。一般是网站内全文搜索会用到,通过索引的建立来提高查询效率。
那么接下来还是先安装一个solr来看看。
solr可以跑在各种web容器中,我选择了tomcat,用jetty和resin也可以。
第一步,下载安装tomcat
第二步,修改tomcat配置文件,在server.xml文件中添加URIEncoding="utf-8"
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8" />
第三步,创建一个上下文文件,在%TOMCAT_HOME%/conf/localhost/下创建一个xml文件,例如solr.xml,内容如下:
<Context path="/solr" docBase="/usr/share/tomcat/webapps/solr.war" debug="0" crossContext="true">
<Environment name="solr/home" type="java.lang.String" value="/usr/share/solr/" override="true"/>
</Context>
第四步,下载solr部署文件。到以下网址下载http://www.apache.org/dyn/closer.cgi/lucene/solr/4.8.1。可以选择zip文件或者tar.gz,然后将其中的solr.*.*.war改为solr.war部署到tomcat的webapps目录下
第五步,创建solr配置文件。根据上下文文件中solr/home设定的值,创建相应的目录。在目录下要包含solr.xml,内容大致如下:
<?xml version="1.0" encoding="UTF-8" ?>
<solr persistent="true">
<cores adminPath="/admin/cores" defaultCoreName="collection1">
<core name="collection1" instanceDir="collection1" />
</cores>
</solr>
这个文件指定了solr的目录结构。如果其中的core/name没有指定,缺省为collection1(或者cores节点不存在的话,缺省也是这个值)。如果指定了相关的instanceDir,那么这个文件夹是必须存在的,否则启动时候会报错。
在这个文件夹下面,需要存在以下配置文件,/conf/schema.xml, /conf/solrconfig.xml。可以从solr的例子中拷贝一份使用。
到这一步,基本配置就算完成了。
启动tomcat,登陆http://localhost:8080/solr/来验证以下安装是否成功。
如果成功,会看到一个solr的管理页面。失败的话,检查以下tomcat的log文件,对照配置文件,看看是哪一步配置出错了。
我是遇到了以下错误: SEVERE: Error filterStart
原因是solr4.2版本以后log配置修改了的原因,需要在tomcat的lib下加入依赖的jar包。将example/lib/ext/下的所有jar包拷贝到tomcat/lib/下重启tomcat就好了