ubuntu下安装solr(总结)

感觉好长时间没有写博客,由于最近忙,加上公司来了一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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值