如何用Solr搭建自己的搜索服务
最近在学习Solr,借这个机会丰富一下自己空荡荡的博客,同时也加深一下自己记忆。还有特别提示各位读者,本人也是刚刚接触Solr,对其了解并不深入,有说的不对或错误的地方,望各位多多指点。
在搭建Solr搜索服务之前,先来了解两个问题。
什么是Solr?Solr能做什么?
什么是Solr
Solr是一个基于Lucene实现的全文搜索服务器。底层使用易于扩展和修改的Java 来实现。服务器通信使用标准的HTTP 和XML,所以如果使用Solr 了解Java 技术会有用却不是必须的要求。
Solr 主要特性有:
强大的全文检索功能,高亮显示检索结果,动态集群,数据库接口和电子文档(Word ,PDF 等)的处理。
而且Solr 具有高度的可扩展,支持分布搜索和索引的复制。
Solr能做什么
现在有站点都使用Solr作为搜索服务器,不仅仅因为它是Apache的开源项目,而是因为它
下载最新的Solr和Resin
Solr:http://lucene.apache.org/solr/
Resin:http://www.caucho.com/download/
我这里下载的Solr是4.3.0版本; Resin用的是本人以前一直用的3.0.25,这里也可以用Tomcat,有关Tomcat搭建Solr搜索服务器的可以参考:
http://www.originsoft.net/archives/32
数据用的是MySql,这里就不说MySql了
Solr 程序包目录结构
解压Solr压缩包到D:/solr-4.3.0
build :在solr 构建过程中放置已编译文件的目录。client :包含了一些特定语言调用Solr 的API 客户端程序,目前只有Ruby 可供选择,Java 客户端叫SolrJ 在src/solrj 中可以找到。dist :存放Solr 构建完成的JAR 文件、WAR 文件和Solr 依赖的JAR 文件。example :是一个安装好的Jetty 中间件,其中包括一些样本数据和Solr 的配置信息。 example/etc :Jetty 的配置文件。
example/multicore :当安装Slor multicore 时,用来放置多个Solr 主目录。
example/solr :默认安装时一个Solr 的主目录。
example/webapps :Solr 的WAR 文件部署在这里。src :Solr 相关源码。 src/java :Slor 的Java 源码。
src/scripts :一些在大型产品发布时一些有用的Unix bash shell 脚本。
src/solrj :Solr 的Java 客户端。
src/test :Solr 的测试源码和测试文件。
src/webapp :Solr web 管理界面。管理界面的Jsp 文件都放在web/admin/ 下面,可以根据你的需要修改这些文件。
Solr 的源码没有放在同一个目录下,src/java 存放大多数文件,src/common 是服务器端与客户端公用的代码,src/test 放置solr 的测试程序,serlvet 的代码放在src/webapp/src 中。
安装Resin
这里下载的是压缩包,直接解压即可D:/resin-pro-3.0.25
开始搭建Solr搜索环境
该准备的工作已经准备完毕,下面开始详述搭建Solr搜索环境
1、打开Eclipse新建一个Web项目
这里我是用新建的Maven项目,将D:\solr-4.3.0\example\webapps\solr.war解压到新建项目的webapp下面:如下图
在webapp下新建solr_home,这个目录后面配置solr/home JNDI 即:Lucene索引目录文件
2、修改web.xml配置solr/home JNDI
3、配置索引服务
在solr/home配置的目录下有solr.xml,该文件配置该索引服务上所拥有的所有索引。每个<core>标签表示一个搜索服务,它的name可以任意取名,再好与instanceDir索引根目录名一致。
instanceDir索引根目录名,即:solr/home下索引实例目录。该目录下需要有conf子目录下面包含有data-config.xml、schema.xml、solrconfig.xml。这三个Xml文件在下面会具体讲到。
4、配置索引创建数据源
这里要说道data-config.xml、schema.xml、solrconfig.xml和DataImportHandler
配置索引数据源data-config.xml
配置域(Field)类型及索引、查询分词器schema.xml