最近发现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中修改如下部分
1 | < Connector port = "80" protocol = "HTTP/1.1" |
2 | connectionTimeout = "20000" |
3 | redirectPort = "8443" URIEncoding = "UTF-8" /> |
设置编码格式,避免中文乱码。
2:
\tomcat\conf\Catalina\localhost下创建solr.xml文件内容如下:
1 | < Context docBase = "${catalina.home}/webapps/solr" reloadable = "true" debug = "0" privileged = "true" allowLinking = "true" crossContext = "true" > |
2 | < Environment name = "solr/home" type = "java.lang.String" value = "${catalina.home}/webapps/solr/conf/solr" override = "true" /> |
3 | <!-- |
4 | <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127.0.0.1,localhost,192.168.0.2"/> |
5 | --> |
6 | </ 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中有如下引用:
1 | < lib dir = "../../contrib/extraction/lib" /> |
2 | |
3 | < lib dir = "../../dist/" regex = "apache-solr-cell-\d.*\.jar" /> |
步骤2中描述的 solr/home目录即为当前目录,所以拷贝到当前目录的上两级目录中,也可以自行修改 solrconfig.xml中的引用路径。
启动tomcat访问http://localhost:8080/solr 显示
下图则表示配置成功。