zoukankan      html  css  js  c++  java
  • Solr使用初探——Solr的安装环境与配置

    Solr是一个apache名下很好用的开源索引、搜索工具,网上的资料虽多但很杂,笔者花了一天的时间对Solr进行了较为初步的研究,对Solr的基础应用做了一定的总结。文中涉及到的配置方法并不唯一,API的用法也未必规范,仅希望能够通过此文让大家对solr更快的入手。

    一、Solr的安装环境与配置:

    1、  下载所需软件,安装配置Tomcat

    首先下载Tomcat与Solr,Tomcat可在各软件网站下载得到,Solr下载地址如下:

    http://mirror.bjtu.edu.cn/apache/lucene/solr/1.4.1/apache-solr-1.4.1.zip

    Tomcat按照安装流程进行即可,本文中Tomcat安装在X盘下,设置监听端口时改为8983(默认为8080),当然也可以在配置文件中修改,路径为X:Tomcat 6.0confserver.xml,并添加编码格式为UTF-8以使得Solr能够正确解析url递送的查询要求。

    <Connector port="8983" protocol="HTTP/1.1" connectionTimeout="20000"

               redirectPort="8443" URIEncoding="UTF-8"/>

     

    2、构建文件目录

    将apache-solr- 1.4.1.zip解压到某文件夹,目录如下图所示:

     

    在X盘下建立目录solr,将解压文件中的example文件夹下的内容全部拷贝到solr中,此时solr文件夹下会有一个名为webapps的空文件夹,将解压文件夹中的dist文件夹下的apache-solr-1.4.1.war文件拷贝到webapps中,重命名为solr.war。

    3、配置Solr工作环境

    在Tomcat中注册Solr。在X:Tomcat 6.0confCatalinalocalhost下(目录不存在则手工建)创建配置文件solr.xml,内容为:

    <Context docBase="X:/solr/webapps/solr.war" reloadable="true" > 

           <Environment name="solr/home" type="java.lang.String" value="X:/solr/solr" override="true" /> 

    </Context>

    docBase为网页发布内容,Environment为solr的配置环境。

    4、配置索引数据格式

    在X:solrsolrconf当中有schema.xml文件,可以配置索引数据格式。scheme.xml虽然较长但注释丰富,而且大部分内容属于数据类型的定义,我们只需要在<fields> 、</fields>标签之间添加自己的数据即可。当然,我们也可以自定义类型。

    以样例中的第一个字段为例:

    <field name="id" type="string" indexed="true" stored="true" required="true" />

    类型为string,需要索引,需要存储,是一个不可为空的字段,简单易懂。

    其他配置如下:

    <uniqueKey>id</uniqueKey>

    配置整个索引中唯一的键值,用来区分不同的索引条目。

    <defaultSearchField>text</defaultSearchField>

    默认的搜索字段,如果在搜索时不特殊指定字段,则会搜索这一字段。

         

    <solrQueryParser defaultOperator="OR" />

    搜索时对同一字段不同关键字的处理方法,根据项目需要选择“与”或者“或”。

    <copyField source="cat" dest="text" />

    <copyField source="name" dest="text" />

    …………

    默认搜索字段较多时可以这样设置,如果只有一个字段待搜索,那么只需在defaultSearchField中配置。

    5、运行solr

    启动Tomcat,访问http://localhost:8983/solr/admin/ 即可见到主页,从上至下共三部分,配置状态、查询与帮助链接。

    http://localhost:8983/solr/admin/analysis.jsp 页面可以考察分词器的工作情况;

    http://localhost:8983/solr/admin/form.jsp 页面可以模拟搜索请求构建请求url。

    在solr配置完毕后第一次启动Tomcat时,Tomcat中会出现很多新的文件及文件夹。在Tomcat下会出现一个solr文件夹,那里用来存放索引;在Tomcat的webapps文件夹下也会出先一个solr文件夹,存放web工程;在Tomcat的logs文件夹下会出下catalina开头的日志文件,我们可以查找solr的载入异常以及索引与查询的url记录。

    6、添加索引

    在Tomcat与Solr开启的情况下,我们可以添加索引。进入X:solrexampledocs文件夹我们可以看到很多xml文件,以及post.jar文件,这里就是用来储存xml格式的待索引文件的地方。打开solr.xml我们可以看到:

     <add>

           <doc>

                  <field name="id">SOLR1000</field>

                  <field name="name">Solr, the Enterprise Search Server</field>

                  <field name="manu">Apache Software Foundation</field>

    …………

                  <field name="incubationdate_dt">2006-01-17T00:00:00.000Z</field>

           </doc>

     </add>

    add标签表明这是要添加一个索引(其他标签参考solr的文档或者solr wiki),各个字段均有数据,请注意最后一行date类型的数据,与java中的不同。

    那么怎样能够将这个xml传送到solr进行索引呢,这就要用到post.jar。开启命令行,进入post.jar所在文件夹,运行:

    java -Durl=http://localhost:8983/solr/update -Dcommit=yes -jar post.jar *.xml

    程序运行成功索引便被加入。添加索引还可以通过solr提供的java接口solrj编程实现,在下面我们会讲到。

    索引添加成功之后便可以通过上面提到的solr网页接口进行搜索测试。

    7、添加中文分词

    笔者使用的是IKAnalyzer的最新版本IKAnalyzer3.2.5Stable.jar,对Solr提供了较好的支持,可以在各软件网站或CSDN较容易的搜索到。使用时将IKAnalyzer3.2.5Stable.ja放置在X:Tomcat 6.0webappssolrWEB-INFlib文件夹下。

    由于Solr默认选用的是lucene相应版本自带的分词器,所以要修改配置才能转换为IKAnalyzer。同样是修改X:solrsolrconf下的schema.xml文件,修改部分用红色标示出:

    <fieldType name="text" class="solr.TextField" positionIncrementGap="100">

    <analyzer type="index">

                  <tokenizer class="org.wltea.analyzer.solr.IKTokenizerFactory" isMaxWordLength="false" />

                  …………

           </analyzer>

    <analyzer type="query">

                  <tokenizer class="org.wltea.analyzer.solr.IKTokenizerFactory" isMaxWordLength="true" />

                  …………

           </analyzer>

    </fieldType>

    分词器均为IKAnalyzer自带的支持solr的IKTokenizerFactory,在索引时不按照最大匹配进行分词,而在搜索时按照最大匹配进行分词。

    IKAnalyzer也支持用户自定义词典。首先在X:Tomcat 6.0webappssolrWEB-INF下建立classes文件夹,在classes文件夹中新建IKAnalyzer.cfg.xml文件,内容为:

      <?xml version="1.0" encoding="UTF-8" ?>

      <!DOCTYPE properties (View Source for full doctype...)>

    <properties version="1.0">

           <comment>IK Analyzer 扩展配置</comment>

           <entry key="ext_dict">/mydict.dic</entry>

           <entry key="ext_stopwords">/mystopword.dic</entry>

      </properties>

    mydict.dic为自定义分词词典,mystopword.dic为自定义停词词典,dic文件应当被保存为UTF-8格式,首行为空行,每个词占一行。dic文件的存放位置也是classes目录。

  • 相关阅读:
    [LeetCode][JavaScript]Combination Sum II
    [LeetCode][JavaScript]Generate Parentheses
    [LeetCode][JavaScript]Contains Duplicate
    [LeetCode][JavaScript]Regular Expression Matching
    [LeetCode][JavaScript]Combination Sum
    [LeetCode][JavaScript]Two Sum
    Windows Live Writer的Markdown插件MarkdownInLiveWriter支持语法高亮了
    各种Markdown处理器的列表
    用ChooseALicense帮自己选一个开源license,然后用AddALicense给自己的github自动加上license文件
    遇到奇怪的C#/C/C++或者Java的bug可以去问问Coverity
  • 原文地址:https://www.cnblogs.com/sand-tiny/p/3941108.html
Copyright © 2011-2022 走看看