lucenc-solr-4.9.1



建立D:\lucene\solr4.9.1\home
复制E:\学习\搜索引擎\软件\4.9.1\solr-4.9.1\example\multicore下所有文件进入D:\lucene\solr4.9.1\home




1、solr-4.6.0\example\lib\ext 下所有的jar文件复制到 tomcat的lib目录下
2、solr-4.6.0\example\resources 下的log4j.properties文件复制到 tomcat的lib目录下
3、solr-4.6.0\dist下的solr-4.6.0.war文件复制到 tomcat8\webapps 下,并且启动tomcat
4、删除tomcat8\webapps 下的solr-4.6.0.war文件,此时会有solr-4.6.0的文件夹,然后将其改名为solr, 拷贝到D:\lucene\solr4.9.1\home目录下。


5、C:\tomcat-7.0.39\conf下的server.xml文件中进行如下设置:






<Context path="/solr" docBase="D:\lucene\solr4.9.1\server\solr" reloadable="false">
<Environment name="solr/home" type="java.lang.String" value="D:\lucene\solr4.9.1\home" override="true"/>
</Context>




D:\lucene\solr4.9.1\home\solr.xml打开修改


<solr persistent="false">




  <cores adminPath="/admin/cores" host="${host:}" hostPort="${jetty.port:8983}" hostContext="${hostContext:solr}">
    <core name="core0" instanceDir="core0" />
    <core name="core1" instanceDir="core1" />
    
    <shardHandlerFactory name="shardHandlerFactory" class="HttpShardHandlerFactory">
      <str name="urlScheme">${urlScheme:}</str>
    </shardHandlerFactory>
  </cores>




修改为


<solr persistent="true">


  <cores adminPath="/admin/cores" defaultCoreName="core0">
    <core name="core0" instanceDir="core0" />


    <shardHandlerFactory name="shardHandlerFactory" class="HttpShardHandlerFactory">
      <str name="urlScheme">${urlScheme:}</str>
    </shardHandlerFactory>
  </cores>




solr/dist目录下solr-core.jar  solr-solrj.jar 考入工程,供工程使用.
solr/dist/solr-lib/下所有 jar拷入工程,供工程使用


23.solr4.6索引的相关操作


D:\lucene\solr4.9.1\home\core0\conf\solrconfig.xml

打开文件。加入如下代码


  <!-- realtime get handler, guaranteed to return the latest stored fields 
    of any document, without the need to commit or open a new searcher. The current 
    implementation relies on the updateLog feature being enabled. -->
  <requestHandler name="/get" class="solr.RealTimeGetHandler">
    <lst name="defaults">
      <str name="omitHeader">true</str>
    </lst>
  </requestHandler>  
   <!-- 新加入的-->
  <requestHandler name="/select" class="solr.SearchHandler">
       <lst name="defaults">
            <str name="echoParams">explicit</str>
            <str name="defType">edismax</str>
            <str name="q.alt">*:*</str>
            <str name="rows">10</str>
            <str name="fl">name,content,testik</str>
            <str name="qf">
                    name^11.0 content^3.0
            </str>
       </lst>
  </requestHandler>

   <!-- 新加入的-->

修该如下代码。把大小都加入了个0

  <requestDispatcher handleSelect="true" >
    <requestParsers enableRemoteStreaming="false" multipartUploadLimitInKB="20480" formdataUploadLimitInKB="20480" />
  </requestDispatcher>



schema.xml文件中  ,请查阅文档,弄懂omitNorms  precisionStep positionIncrementGap什么意思。

   <fieldtype name="string"  class="solr.StrField" sortMissingLast="true" omitNorms="true"/>
   <fieldType name="long" class="solr.TrieLongField" precisionStep="0" positionIncrementGap="0"/>



修改如下:

  <types>
  
   <!--IKAnalyzer-->
   <fieldType name="text" class="solr.TextField" autoGeneratePhraseQueries="false">
       <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>                          
    </fieldType>


  
   <fieldtype name="string"  class="solr.StrField" sortMissingLast="true" omitNorms="true"/>
   <fieldType name="long" class="solr.TrieLongField" precisionStep="4" positionIncrementGap="0"/>
   
   <fieldType name="int" class="solr.TrieIntField" precisionStep="4"  positionIncrementGap="0"/>
   <fieldType name="float" class="solr.TrieFloatField"  precisionStep="4"  positionIncrementGap="0"/>
   <fieldType name="double" class="solr.TrieDoubleField"  precisionStep="4"  positionIncrementGap="0"/>
   <fieldType name="date" class="solr.TrieDateField"  precisionStep="4"  positionIncrementGap="0"/>
  


  </types>

 <fields>   
  <!-- general -->
  <field name="id"        type="string"   indexed="true"  stored="true"  multiValued="false" required="true"/>
  <field name="_version_" type="long"     indexed="true"  stored="true"/>
  
  <field name="content"      type="string"   indexed="true"  stored="true"  multiValued="false" /> 
  <field name="name"      type="string"   indexed="true"  stored="true"  multiValued="false" /> 
  <field name="core0"     type="string"   indexed="true"  stored="true"  multiValued="false" /> 
  <field name="testik"      type="text"   indexed="true"  stored="true"  multiValued="false" /> 
  
  
  <!-- name,content-->
  <field name="name_content"      type="string"   indexed="true"  stored="true"  multiValued="true" /> 
  
 </fields>


 <!-- field to use to determine and enforce document uniqueness. -->
 <uniqueKey>id</uniqueKey>


 <!-- field for the QueryParser to use when an explicit fieldname is absent -->
 <defaultSearchField>name_content</defaultSearchField>


 <!-- SolrQueryParser configuration: defaultOperator="AND|OR" -->
 <solrQueryParser defaultOperator="OR"/>
 <!-- multi field-->
 <copyField source="name" dest="name_content" /> 
 <copyField source="content" dest="name_content" /> 




IKAnalyzer2012FF_u1.jar文件考入D:\solr-4.9.1\server\solr\WEB-INF\lib



  <requestHandler name="/select" class="solr.SearchHandler">
       <lst name="defaults">
            <str name="echoParams">explicit</str>
            <str name="defType">edismax</str>
            <str name="q.alt">*:*</str>
            <str name="rows">10</str>
            <str name="fl">name,content,testik</str>
            <str name="qf">
                    name^11.0 content^3.0
            </str>

       </lst>

  </requestHandler>

qf指定搜索字段


SolrQuery query = new SolrQuery(condition);

query.setParam("df", "msg_title,msg_content")

程序中设定的搜索字段优先级大于schema.xml文件中配置的默认搜索字段。<defaultSearchField>name</defaultSearchField>

condition=“name:中国”

若在搜索条件中加入搜索字段,优先级大于solrconfig.xml中配置的<str name="qf">
                    name^11.0 content^3.0
            </str>


condition=“name:中国 OR content:xxx”也可以检索  AND


程序中使用setFields,可以指定显示字段,并且该方式优先级大于solrconfig.xml中配置的fl值  <str name="fl">name,content,testik</str>

String[] filds = {"name","content"};

query.setFields(filds);



query.setHighlight(true)
.setHighlightSimplePre("<span class='lighter'>")
.setHighlightSimplePost("</span>")
.setParam("hl.fl", "msg_title,msg_content")

======上面是3.x高亮字段写法,下面是4.x写法

query.setHighlight(true)
.setHighlightSimplePre("<span class='lighter'>")
.setHighlightSimplePost("</span>")
..setHighlightField("msg_title,msg_content")



//显示的字数
params.setHighlightFragsize(10);

//排序
params.addSort("age", ORDER.desc);


//过滤 搜索后的内容name包含中国的显示出来
// String[] fqs = {"name:中国"};
// params.addFilterQuery(fqs);


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值