一、Solr的下载

Solr是对Lucene的封装,让开发人员使用更加的方便,这里我们下载3.5版本的Solr。点击这里下载Solr3.5版本。

二、Solr的启动

把刚刚下载的Solr解压之后,在example文件夹中有一个start.jar文件,我们使用java -jar start.jar将它启动起来,Solr有内置的服务器,它采用的是Jetty,一个小巧的服务器,不需要配置就可以运行。在最后一行,我们可以看到8983,这是Solr的默认端口号,然后我们在浏览器输入localhost:8983/solr/admin,回车,就可以看到Solr的界面了。我们可以在Query String中输入查询字符串,点击Search按钮,就可以实现查询。

三、Solr和Tomcat的整合

我们项目中通常使用的是Tomcat,于是我们需要将Solr和Tomcat进行整合,于是我们可以使用SolrJ来操作Solr。

  1. 在项目的根目录下创建一个solr文件夹,在solr文件夹下创建一个home文件夹,将solr-3.5/example/solr下的内容拷贝进来,将data文件夹中的内容删掉。
  2. 在home的同级目录下,创建一个server文件夹,将Solr的web程序拷贝出来,也就是将example/webapps下的solr.war拷贝到server文件夹中,并将solr.war解压出来,把solr.war删掉。
  3. 打开home文件夹中的conf下的solrconfig.xml文件,修改dataDir中的值,在原来的基础上添加刚刚home目录下的data。具体看下截图就明白了,之后搜索“VelocityResponseWriter”,将“class="solr.VelocityResponseWriter"”这一行最后的false改成true。
  4. 设置相应的Tomcat的Context就可以了。打开Tomcat的server.xml,在Host里面加上Context标签,注意docBase根据自己项目进行修改,指定solr的war包解压的位置。
  5. 为Context设置环境变量,说明Solr的home目录地址,如下面代码所示。
  6. 启动Tomcat服务器,访问localhost:8080/solr/admin,如果可以看到solr admin page,说明Solr和Tomcat的整合就做好了。
<Context path="/solr" docBase="E:\IDEA-project\lucene\solr\server\solr" reloadable="false">
  <Environment name="solr/home" type="java.lang.String" value="E:\IDEA-project\lucene\solr\home" override="true"/>
</Context>

Lucene笔记47-Lucene-Solr的安装_其他

在Solr中加入中文分词

  1. 将中文分词器拷贝到server文件夹下的lib中,这里拿IK分词器举例子。将IK分词器的jar包拷贝到server/solr/WEB-INF/lib下。
  2. 在solr的schema.xml最上面添加fieldType标签。内容可以在readme里面找到,我配置的内容在下面的代码中。
  3. 启动Tomcat访问localhost:8080/solr/admin,点击ANALYSIS,首先使用Solr自带的分词,在Field中选择Type,在后面输入text_general,在下面输入一串中文,点击Analyze,可以看到分词结果。
  4. 之后,我们再使用刚刚添加的IK分词器分词,可以看到分词结果和之前的不一样了。
<!--IK分词器-->
<fieldType name="text" class="solr.TextField" >
  <analyzer type="index">
    <tokenizer class="org.wltea.analyzer.solr.IKTokenizerFactory" useSmart ="false"/>
  </analyzer>
  <analyzer type="query">
    <tokenizer class="org.wltea.analyzer.solr.IKTokenizerFactory" useSmart ="false"/>
  </analyzer>
</fieldType>

Lucene笔记47-Lucene-Solr的安装_分词器_02

使用Solr自带的分词来显示分词结果。

Lucene笔记47-Lucene-Solr的安装_analyzer_03

使用IK分词器来展示分词结果。这里的text和schema.xml中定义的FieldType的name对应。

Lucene笔记47-Lucene-Solr的安装_分词器_04