最近准备用Solr搭建项目,所以对其作了一些了解,我采用的是Solr4.4版本;这个版本的Solr相对于以前的版本改变很大,这里记一下自己安装与配置的过程。

网上很多关于Solr的教程都很老了,很多教程居然还是基于Solr1.3或者1.4版本在讲解,有些资料的内容看了再对比当前版本会不知所云。

尽量多看官方提供的wiki文档:http://wiki.apache.org/solr/

Solr简介

这里贴一段关于solr的简介:

Solr是一个基于Lucene的Java搜索引擎服务器。Solr 提供了层面搜索、命中醒目显示并且支持多种输出格式(包括 XML/XSLT 和 JSON 格式)。它易于安装和配置,而且附带了一个基于 HTTP 的管理界面。Solr已经在众多大型的网站中使用,较为成熟和稳定。Solr 包装并扩展了 Lucene,所以Solr的基本上沿用了Lucene的相关术语。更重要的是,Solr 创建的索引与 Lucene 搜索引擎库完全兼容。通过对Solr 进行适当的配置,某些情况下可能需要进行编码,Solr 可以阅读和使用构建到其他 Lucene 应用程序中的索引。此外,很多 Lucene 工具(如Nutch、 Luke)也可以使用Solr 创建的索引。

下载解压

官方网址:http://lucene.apache.org/solr/

下载列表:http://www.apache.org/dyn/closer.cgi/lucene/solr/4.4.0

将下载得到的solr-4.4.0.zip压缩包解压,会看到如下目录结构:

其中对我们有用的是example和dist目录中的内容。

安装与配置

首先将exmaple/webapps中的solr.war包解压开复制到Tomcat的webapps中,或者直接将solr.war包直接复制到Tomcat的webapps中,然后启动Tomcat使其解压开再将war包删除。这时如果启动Tomcat是会报错的,因为我们没有设置solr_home(也就是索引和配置文件所在的目录)。

下面配置一下:

solr_home的设置有好几种方式,百度一下就可以了,这里我采用的是在solr应用的web.xml文件中配置的方式。打开solr/WEB-INF/web.xml文件,找到如下内容:

[html] view plaincopy

  1. <env-entry>
  2. <env-entry-name>solr/home</env-entry-name>
  3. <env-entry-value>../webapps/solr/solr_home</env-entry-value>
  4. <env-entry-type>java.lang.String</env-entry-type>
  5. </env-entry>

这段内容初始时是被注释了的,解开注释后将<env-entry-value>节点内容改为自己磁盘上某个位置即可,这里我采用的是相对位置,绝对位置当然也是可以的。

配置完了还需要在配置的路径处放置一个文件夹作为SOLR_HOME(solr的example中已经提供),我们将example/solr目录拷贝到solr项目目录下(这里是%TOMCAT_HOME%/webapps/solr/),并重命名为solr_home(根据自己的配置决定)。

配置日志输出

这时如果启动Tomcat(通过调用startup.sh脚本),仍然无法正常启动,而且错误只有几行,如下所示:

[java] view plaincopy

  1. 2013-8-9 15:49:05 org.apache.catalina.core.StandardContext start
  2. 严重: Error filterStart
  3. 2013-8-9 15:49:05 org.apache.catalina.core.StandardContext start
  4. 严重: Context [/solr] startup failed due to previous errors

给出的错误信息不明不白,这时如果我们换一种方式来启动Tomcat就会发现错误输出了,在命令行将当前目录切换到%TOMCAT_HOME%/bin,执行如下的命令:

[java] view plaincopy

  1. java -jar bootstrap.jar

这样可以看到命令行输出如下的异常信息(省略部分内容):

很显然,提示我们找不到日志相关的jar包,还提示我们去看solr的相关wiki链接:http://wiki.apache.org/solr/SolrLogging

到该Wiki页面中我们会找到如下几段文字说明:

上面解释了在新版本的solr中日志输出方面做了什么变动,以及如何解决。

首先复制example/lib/ext目录中的jar包到项目的classpath下,这里的example就是前面解压solr压缩包得到的,solr应用war包也是从该目录下得到的;我们可以将这些jar包放到%TOMCAT_HOME%/lib下,也可以将它们放到项目的lib下(在我的电脑上是/opt/tomcat-6.0.37/webapps/solr/WEB-INF/lib);

然后将example/resources/log4j.properties也拷到classpath(我在/opt/tomcat-6.0.37/webapps/solr/目录下新建了一个classes目录,放log4j.properties放了进去);

然后再启动Tomcat,这时就没有异常抛出了,solr成功启动,我们通过浏览器进行访问,你将会看到如下画面:

在Solr中使用中文分词

使用全文检索,中文分词是离不开的,这里我采用的是mmseg4j分词器。mmseg4j分词器内置了对solr的支持,最新版本可支持4.X版本的sorl,使用起来很是方便。

GoogleCode地址:http://code.google.com/p/mmseg4j/

使用mmseg4j中文分词器,首先需要在schema.xml文件中配置一个fieldType节点(其它的中文分词器也类似),如下所示:

[html] view plaincopy

  1. <!-- 中文分词 -->
  2. <fieldType name="text_zh" class="solr.TextField" positionIncrementGap="100">
  3. <analyzer>
  4. <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="complex" />
  5. </analyzer>
  6. </fieldType>

然后就可以在field节点中引用该filedType了,定义示例filed节点如下:

[html] view plaincopy

  1. <field name="title" type="text_zh" indexed="true" stored="true" multiValued="true"/>
  2. <field name="content" type="text_zh" indexed="true" stored="false" multiValued="true"/>

然后在浏览器里试一下效果:

总结

下面总结一下Solr4.4.0的安装与配置步骤:

  1. 准备Java和Tomcat;
  2. 下载并解压solr-4.4.4.zip得到solr-4.4.0目录;
  3. 拷贝solr-4.4.0/example/webapps/solr.war包到%Tomcat_Home%/webapps目录,启动Tomcat使其解压,删除solr.war包;
  4. 打开%Tomcat_Home%/webapps/solr/WEB-INF/web.xml文件,配置SOLR_HOME,按照SOLR_HOME的配置拷贝solr-4.4.0/example/solr目录(该目录即作为solr_home);
  5. 拷贝solr-4.4.0/example/lib/ext下所有的jar包到项目的classpath下,同时拷贝log4j.properties配置文件到classpath;
  6. 配置中文分词器。

Solr4.4的安装与配置的更多相关文章

  1. [Linux]Linux下安装和配置solr/tomcat/IK分词器 详细实例一.

    在这里一下讲解着三个的安装和配置, 是因为solr需要使用tomcat和IK分词器, 这里会通过图文教程的形式来详解它们的安装和使用.注: 本文属于原创文章, 如若转载,请注明出处, 谢谢.关于设置I ...

  2. solr与.net系列课程(一)solr的安装与配置

    不久之前开发了一个项目,需要用到solr,因为所以在开始再网上查找资料,但是发现大部分的资料都是很片面的,要么就是只讲解solr如何安装的,要么就是只讲解solr的某一个部分的,而且很多都是资料都是一 ...

  3. 1.jdk、Tomcat、solr的安装和配置

    1.jdk安装和配置 1)根据电脑类型,到官网下载相应的jdk版本 2)双击jdk-8u5-windows-x64.exe安装包,一直点下一步就可以了,注意记住jdk和jre的安装目录. 3)环境变量 ...

  4. solr的安装与配置

    solr的安装与配置 不久之前开发了一个项目,需要用到solr,因为所以在开始再网上查找资料,但是发现大部分的资料都是很片面的,要么就是只讲解solr如何安装的,要么就是只讲解solr的某一个部分的, ...

  5. JAVAEE——Solr:安装及配置、后台管理索引库、 使用SolrJ管理索引库、仿京东的电商搜索案例实现

    1 学习回顾 1. Lucene  是Apache开源的全文检索的工具包 创建索引 查询索引 2. 遇到问题? 文件名 及文件内容  顺序扫描法  全文检索 3. 什么是全文检索? 这种先创建索引 再 ...

  6. solr 安装与配置

    1. Solr安装与配置 1.1什么是Solr 大多数搜索引擎应用都必须具有某种搜索功能,问题是搜索功能往往是巨大的资源消耗并且它们由于沉重的数据库加载而拖垮你的应用的性能. 这就是为什么转移负载到一 ...

  7. JDK安装与配置

    JDK安装与配置 一.下载 JDK是ORACLE提供免费下载使用的,官网地址:https://www.oracle.com/index.html 一般选择Java SE版本即可,企业版的选择Java ...

  8. Node.js 教程 01 - 简介、安装及配置

    系列目录: Node.js 教程 01 - 简介.安装及配置 Node.js 教程 02 - 经典的Hello World Node.js 教程 03 - 创建HTTP服务器 Node.js 教程 0 ...

  9. 烂泥:redis3.2.3安装与配置

    本文由ilanniweb提供友情赞助,首发于烂泥行天下 想要获得更多的文章,可以关注我的微信ilanniweb 前一段时间写过一篇codis集群的文章,写那篇文章主要是因为当时的项目不支持redis自 ...

随机推荐

  1. 20、CSS

    CSS 层叠样式表(Cascading Style Sheets). 用于定义显示HTML样式. DIV和SPAN div是块级元素. span是行级元素. 将一些页面中的内容包裹起来统一设置样式. ...

  2. window 安装 Protobuf

    环境安装 1:下载CMake 2:打开VS Command Prompt 3:修改工作目录到目标目录 cd C:\Path\to 4:创建编译完后 protobuf headers/libraries ...

  3. query 防止ajax重复提交

    项目用到js了,首选jquery,能用库用库,原则. 碰到重复提交的问题,禁止住才行.百度google,还是Google给力. 知乎上有个高人,总结了四种,利用Jquery .post方法返回jqXH ...

  4. enableEventValidation

    回发或回调参数无效.在配置中使用 <pages enableEventValidation="true"/> 或在页面中使用 <%@ Page EnableEve ...

  5. orm fluentdata使用相关文章

    微型orm fluentdata使用:http://www.360doc.com/content/12/1228/23/9200790_256885743.shtml

  6. ubuntu 13.04 xrdp 远程桌面连接问题[转载]

    本人ubuntu12.04,遇到了同样的问题,用一下方法解决了,mark一下. ubuntu 13.04 xrdp 远程桌面连接问题. win 7 远程桌面连接 ubuntu desktop 有几种办 ...

  7. c# ADO连接Access 执行Open后程序自动退出

    今天利用ADO连接Access数据库的时候遇到了前所未见的问题,Access数据库连接串,OleDbConnection,open的时候,系统就会自动关闭所有调试. 我就很纠结了,这个AccessHe ...

  8. CSS 组合选择符

    CSS 组合选择符 组合选择符说明了两个选择器直接的关系. CSS组合选择符包括各种简单选择符的组合方式. 在 CSS3 中包含了四种组合方式: 后代选取器(以空格分隔) 子元素选择器(以大于号分隔) ...

  9. node exports和module.exports区别

    我们只需知道三点即可知道 exports 和 module.exports 的区别了: exports 是指向的 module.exports 的引用 module.exports 初始值为一个空对象 ...

  10. Java设计模式(学习整理)---适配模式

    设计模式之Adapter(适配器) 1.定义: 将两个不兼容的类纠合在一起使用,属于结构型模式,需要有Adaptee(被适配者)和Adaptor(适配器)两个身份. 2.为何使用? 我们经常碰到要将两 ...