ubuntu下安装solr(总结)

来源:互联网 发布:c mysql连接字符串 编辑:程序博客网 时间:2024/06/11 03:23

感觉好长时间没有写博客,由于最近忙,加上公司来了一SB运营人员,搞的整个团队都很郁闷,我也就没那时间写技术类的博客!不发牢骚了,进入正题。


solr是java做的一个搜索引擎,安装solr之前一定要先安装JDK的


1.安装JDK

apt-get install openjdk-7-jdk

2.下载solr软件 官方最新版本是4.8.1(点击下载)

   

3.安装php的solr扩展(查看安装)


4.配置solr的schem.xml文件


    <field name="_version_" type="long" indexed="true" stored="true" />    <field name="id" type="string" indexed="true" stored="true" required="true" />     <field name="title" type="string" indexed="false" stored="true" />    <field name="bigcid" type="int" indexed="true" stored="true" />    <field name="middlecid" type="int" indexed="true" stored="true" />    <field name="smallcid" type="int" indexed="true" stored="true" />    <field name="mincid" type="int" indexed="true" stored="true" />    <field name="cas" type="text_general" indexed="true" stored="true" />    <field name="package" type="text_general" indexed="false" stored="true" />    <field name="pic" type="text_general" indexed="false" stored="true" />    <field name="item_code" type="string" indexed="false" stored="true" />    <field name="brand_id" type="int" indexed="true" stored="true"/>    <field name="brand_name" type="text_general" indexed="false" stored="true" />    <field name="supplier" type="string" indexed="false" stored="true" />    <field name="supplier_id" type="int" indexed="true" stored="true" />    <field name="prom_price" type="double" indexed="true" stored="true" />    <field name="price" type="double" indexed="true" stored="true" />    <field name="volume" type="int" indexed="true" stored="true" />    <field name="supply_type" type="int" indexed="true" stored="true" />    <field name="cert" type="int" indexed="true" stored="true" />        <field name="keyword" type="textComplex" indexed="true" stored="true" multiValued="true" />    <field name="properties" type="text_zh" indexed="true" stored="true" multiValued="true" />    <defaultSearchField>keyword</defaultSearchField>    <solrQueryParser defaultOperator="AND"/>    <uniqueKey>id</uniqueKey>   <copyField source="title" dest="keyword"/>   <copyField source="cas" dest="keyword"/>   <copyField source="item_code" dest="keyword"/>   <copyField source="brand_name" dest="keyword"/>   <copyField source="supplier" dest="keyword"/>   <copyField source="properties" dest="keyword"/>



5.配置solr中文分词法(IK,mmseg,)

            配置分词法前要下载相应的jar包(下面主要介绍三种分词法)

           IKAnalyzer下载,  mmseg下载 ,jcseg下载 

          第一步:下载相应的分词文件后 如:IKAnalyzer2012FF_u1.jar文件放到   solr-4.8.0/example/webapps/solr/WEB-INF/lib目录下(前提是先解压solr-4.8.0/example/solr.war)  解压这个文件用的命令:jar -xvf solr.war ./solr


        第二步:压缩文件  jar -cvf solr.war ./solr


第三步:配置分词  schema.xml



<!--  IKAnalyzer --><fieldType name="text_zh" class="solr.TextField">  <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/></fieldType><!--  jcseg --><fieldtype name="textComplex" class="solr.TextField"><analyzer><tokenizer class="org.lionsoul.jcseg.solr.JcsegTokenizerFactory" mode="complex"/></analyzer></fieldtype><fieldtype name="textSimple" class="solr.TextField">    <analyzer>        <tokenizer class="org.lionsoul.jcseg.solr.JcsegTokenizerFactory" mode="simple"/>    </analyzer></fieldtype> <!--  mmseg4j --><fieldType name="textComplex2" class="solr.TextField" positionIncrementGap="100" >      <analyzer>          <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="complex" dicPath="dic"/>      </analyzer>  </fieldType><fieldType name="textMaxWord" class="solr.TextField" positionIncrementGap="100" >      <analyzer>          <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="max-word" dicPath="dic"/>      </analyzer>  </fieldType><fieldType name="textSimple2" class="solr.TextField" positionIncrementGap="100" >      <analyzer>          <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="simple" dicPath="/home/china/solr-4.7.1/example/solr/my_dic"/>       </analyzer>  </fieldType>


6.修改 solr的IP及端口(要修改 solr-4.8.0/example/etc/jetty.xml

    <Call name="addConnector">      <Arg>          <New class="org.eclipse.jetty.server.bio.SocketConnector">            <Set name="host"><SystemProperty name="jetty.host" default="0.0.0.0"/></Set> 设置成任何IP可访问            <Set name="port"><SystemProperty name="jetty.port" default="8983"/></Set> 在这里设置默认端口            <Set name="maxIdleTime">50000</Set>            <Set name="lowResourceMaxIdleTime">1500</Set>            <Set name="statsOn">false</Set>          </New>      </Arg>    </Call>

7.配置搜索时多个关键字用空格分开时出现的错误页面问题:(修改conf中的solrconfig.xml)

  <requestHandler name="/select" class="solr.SearchHandler">     <lst name="defaults">       <str name="echoParams">explicit</str>       <int name="rows">10</int>       <str name="df">keyword</str>设置成要搜索的字段              <str name="qf">          title^10.0 keywords^5.0       </str>     </lst>  </requestHandler>

8.suggest配置(百度搜索时下拉框提示效果)

修改solrconfig.xml文件 添加以下几行代码

   <searchComponent name="suggest" class="solr.SpellCheckComponent">      <str name="queryAnalyzerFieldType">string</str>      <lst name="spellchecker">            <str name="name">suggest</str>            <str name="classname">org.apache.solr.spelling.suggest.Suggester</str>            <str name="lookupImpl">org.apache.solr.spelling.suggest.tst.TSTLookup</str>            <str name="field">keyword</str>  //设置成搜索的关键字(索引字段)        <float name="threshold">0.0001</float>         <!-- 使用自定义suggest词库词可以将如下两行的注释取消         <str name="sourceLocation">suggest.txt</str>         <str name="spellcheckIndexDir">spellchecker</str>-->        <str name="comparatorClass">freq</str>          <str name="buildOnOptimize">true</str>          <str name="buildOnCommit">true</str>           </lst>      </searchComponent>           <requestHandler name="/suggest" class="org.apache.solr.handler.component.SearchHandler">        <lst name="defaults">            <str name="spellcheck">true</str>            <str name="spellcheck.dictionary">suggest</str>            <str name="spellcheck.count">10</str>            <str name="spellcheck.onlyMorePopular">true</str>          <str name="spellcheck.extendedResults">false</str>                <str name="spellcheck.collate">true</str>          <!--<str name="spellcheck.build">true</str>  -->        </lst>        <arr name="components">            <str>suggest</str>        </arr>      </requestHandler>


以下配置是经过个人实践,有不理解或不明白的地方,欢迎前来交流!  QQ 327168521

0 0
原创粉丝点击