最近发现nutch1.4的index部分采用了solr所以对solr的索引方式进行了一下了解。nutch团队采用solr有他们的道路,没有去分析代码,根据找到的资料显示,nutch的索引没有利用好HDFS,索引还是本地存储的。假设索引也是分布式的,在检索的时候,mapreduce的合并效率也是不高的,为了达到排序的目的会产生大量的网络传输。solr采用索引复制的机制提高IO吞吐量,这也是稳定可靠的方式。
据官方资料显示最新的solr3.5配合lucune3.5可以大幅降低内存的使用,这么说了性能也是有很高的提升。solr的目标是企业级的全文检索,如果复制技术用好了,我想绝大部分检索应用都是没有问题的。这个需要实践验证。
下面把这次配置solr3.5的过程写下来。
相关软件:
solr3.5官方地址地址:http://lucene.apache.org/solr/index.html
tomcat6.0以上
jdk1.6以上
1:
\tomcat\conf\server.xml中修改如下部分
<Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8" />
设置编码格式,避免中文乱码。
2:
\tomcat\conf\Catalina\localhost下创建solr.xml文件内容如下:
<Context docBase="${catalina.home}/webapps/solr" reloadable="true" debug="0" privileged="true" allowLinking="true" crossContext="true"> <Environment name="solr/home" type="java.lang.String" value="${catalina.home}/webapps/solr/conf/solr" override="true" /> <!-- <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127.0.0.1,localhost,192.168.0.2"/> --> </Context>
注释部分为根据IP控制访问权限。
3:
copy solr-3.5.0\dist\ apache-solr-3.5.0.war to tomcat\webapps\solr.war
4:
启动tomcat后webapps中自解压为solr目录或者自己解压。
将 solr-3.5.0\example中的solr目录拷贝到tomcat\webapps\solr\conf 中
5:
将:solr-3.5.0\contrib 和 solr-3.5.0\dist tomcat\webapps\solr中,原因是:
tomcat\webapps\solr\conf\solr\conf\solrconfig.xml中有如下引用:
<lib dir="../../contrib/extraction/lib" /> <lib dir="../../dist/" regex="apache-solr-cell-\d.*\.jar" />
步骤2中描述的 solr/home目录即为当前目录,所以拷贝到当前目录的上两级目录中,也可以自行修改 solrconfig.xml中的引用路径。
启动tomcat访问http://localhost:8080/solr 显示
下图则表示配置成功。