Solr/Solrj初探
一、solr简介(摘自[开源中国])
Apache Solr (读音: SOLer) 是一个开源的搜索服务器。Solr使用 Java 语言开发,主要基于 HTTP 和 Apache Lucene 实现。Apache Solr 中存储的资源是以 Document 为对象进行存储的。每个文档由一系列的 Field 构成,每个 Field 表示资源的一个属性。Solr 中的每个 Document 需要有能唯一标识其自身的属性,默认情况下这个属性的名字是 id,在 Schema 配置文件中使用:<uniqueKey>id</uniqueKey>进行描述。
Solr是一个高性能,采用Java5开发,基于Lucene的全文搜索服务器。文档通过Http利用XML加到一个搜索集合中。查询该集合也是通过 http收到一个XML/JSON响应来实现。它的主要特性包括:高效、灵活的缓存功能,垂直搜索功能,高亮显示搜索结果,通过索引复制来提高可用性,提供一套强大Data Schema来定义字段,类型和设置文本分析,提供基于Web的管理界面等。
二、solr安装和配置
1. 在apche官网下载solr,http://lucene.apache.org/solr/,这里以solr4.1为例,下载文件solr-4.1.0.zip;
2. Solr的环境要求
1) 满足Solr的版本要求:jdk1.5或者更高版本(注意:如果你采用的是solr4或者solr4以上版本,JDK的版本要求在1.6或者1.6以上)
2) Solr的发行版:第一步中的solr-4.1.0.zip就可以啦。
3. 进入solr的wiki,地址为http://wiki.apache.org/solr/,从中可以提取出以下大致步骤:(详细可以打开前面的wiki网址仔细研读)
1) 停止当前servlet容器(比如tomcat/jetty/weblogic等),笔者采用的是tomcat
2) 复制solr-*.war(这里是solr-4.1.0.zip)包到你的tomcat的webapp目录;
3) 从solr的发行版中找到solr目录,比如N:\work\java\solr\solr-4.1.0\example\solr(该目录位于solr发行版的解压目录下);
4) 启动你当前的servlet容器,配置好你的solr Home,笔者采用的是以下方法:将上一步的目录文件夹复制到N:\work\java\tomcat6\apache-tomcat-6.0.35\webapps\solr-4.1.0;
配置solr.solr.name:打开~ webapps\solr-4.1.0\web-inf\web.xml找到<env-entry>节点,取消注释将<env-entry>节点下的<env-entry-value>节点值配置成../webapps/solr-4.1.0/solr,其他不变 ;
5) 这时候等待tomcat重新部署,然后就运行http://localhost:8080/solr-4.1.0/admin
(注意tomcat的端口和当前启动状态),solr有关的tomcat配置请参阅http://wiki.apache.org/solr/SolrTomcat,但是一般情况下不需要这样的配置,如果有需求也可按照配置说明进行配置;
6) 打开地址:http://localhost:8080/solr-4.1.0/admin
7) 有关solr的其他配置可以参阅http://wiki.apache.org/solr/#Installation_and_Configuration
三、索引和搜索
有关solr的索引在wiki上也有详细的解说,但是对于熟悉java的我们来讲,solrj更适合做solr的客户端,进而进行搜索和索引操作。
废话不多说,步骤如下:
1) 设置运行环境:如果你采用maven,那对jar的管理将很轻松
<dependency>
<artifactId>solr-solrj</artifactId>
<groupId>org.apache.solr</groupId>
<version>1.4.0</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<dependency>
<artifactId>solr-core</artifactId>
<groupId>org.apache.solr</groupId>
<version>1.4.0</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.5.6</version>
</dependency>
如果你对maven不熟悉,也不要紧,你可以从solr的发行版中找出以下jar包并手动加入它们到你的classpath中,
从 ~/dist找到:
- apache-solr-solrj-*.jar
从 /dist/solrj-lib找到
- commons-codec-1.3.jar
- commons-httpclient-3.1.jar
- commons-io-1.4.jar
- jcl-over-slf4j-1.5.5.jar
- slf4j-api-1.5.5.jar
2) 添加索引:http://wiki.apache.org/solr/Solrj#Adding_Data_to_Solr,这上面可以添加POJO或者其他
四、One last word
初试solr,感觉它对lucene的封装很强大,对文档和域的管理采用XML配置方式,易于理解,而且solr服务的配置也简单易操作。
Solrj作为solr服务的java语言版本的客户端,对比如对域(Field)的操作,索引的添加方式以及搜索的便捷:比如对POJO的域注解(在POJO的属性字段或者set方法上加上@Field(“fieldName”)),以及高亮显示都有很好的支持.
参考资料:
http://wiki.apache.org/solr/solr配置以及使用说明wiki
http://wiki.apache.org/solr/Solrjsolrj使用说明wiki