zoukankan      html  css  js  c++  java
  • Solr4.0 如何配置使用UUID自动生成id值

    原文链接http://blog.csdn.net/keepthinking_/article/details/8501058#comments 

    最近学习了Lucene,随便也学习了Solr,Solr规定每一条记录必须有一个主键值,用来唯一标识一条索引的记录,默认是使用id字段来作主键的(可以通过修改schema.xml文件更改),最烦的是这个主键不能设置自动增长,所以每添加一条记录,不得不手动为id字段赋值,如果不小心重复了,还很恶心的直接覆盖了原来的记录,所以在编程的时候不得不通过一些途径来维护这个id值,通过google发现了一个可以自动生成id值的方法,即让solr自动生成UUID值(Universal Unique Identifiers通用唯一标识符),这样编程的时候就不用维护这个id值了,使用这种做法的缺点就是:id值不是数值连续的,它是一串字符,如:5bb977a7-8a4c-46d6-ae49-b4eefade080c

    具体配置如下:(这是Solr 4.0的配置

    一、配置schema.xml文件

    1、添加fieldType

    <types>  
        <!-- other field types -->  
        <fieldType name="uuid" class="solr.UUIDField" indexed="true" />  
    </types> 

    2、添加主键id字段配置(注释或者删除原来的id字段配置,切记

    <field name="id" type="uuid" indexed="true" stored="true" required="true" multiValued="false" />

    二、配置solrconfig.xml文件

     

    1、注释掉以下的配置,原因及可能产出的异常参考:https://issues.apache.org/jira/browse/SOLR-3398

    <searchComponent name="elevator" class="solr.QueryElevationComponent" >  
      <str name="queryFieldType">string</str>  
      <str name="config-file">elevate.xml</str>  
    </searchComponent>  

    2、添加一个updateRequestProcessorChain配置

    <updateRequestProcessorChain name="uuid">  
        <processor class="solr.UUIDUpdateProcessorFactory">  
            <str name="fieldName">id</str>  
        </processor>  
        <processor class="solr.RunUpdateProcessorFactory" />  
    </updateRequestProcessorChain>  

    3、修改其中一个requestHandler配置,注意:上一步是添加,而这里是修改,如果直接添加的话,那么就会重复配置,这样后面的配置会覆盖前面的配置,本人就是很不幸的被默认的配置覆盖了我添加的配置,当时够郁闷的!

    <requestHandler name="/update" class="solr.UpdateRequestHandler">  
        <!-- See below for information on defining   
             updateRequestProcessorChains that can be used by name   
             on each Update Request  
          -->  
        <!--  
           <lst name="defaults">  
             <str name="update.chain">dedupe</str>  
           </lst>  
           -->  
        <lst name="defaults">  
            <str name="update.chain">uuid</str>  
        </lst>  
      </requestHandler>  

    原文链接http://blog.csdn.net/keepthinking_/article/details/8501058#comments 

    最近学习了Lucene,随便也学习了Solr,Solr规定每一条记录必须有一个主键值,用来唯一标识一条索引的记录,默认是使用id字段来作主键的(可以通过修改schema.xml文件更改),最烦的是这个主键不能设置自动增长,所以每添加一条记录,不得不手动为id字段赋值,如果不小心重复了,还很恶心的直接覆盖了原来的记录,所以在编程的时候不得不通过一些途径来维护这个id值,通过google发现了一个可以自动生成id值的方法,即让solr自动生成UUID值(Universal Unique Identifiers通用唯一标识符),这样编程的时候就不用维护这个id值了,使用这种做法的缺点就是:id值不是数值连续的,它是一串字符,如:5bb977a7-8a4c-46d6-ae49-b4eefade080c

    具体配置如下:(这是Solr 4.0的配置

    一、配置schema.xml文件

    1、添加fieldType

     

    [html] view plain copy
     
    1. <types>  
    2.     <!-- other field types -->  
    3.     <fieldType name="uuid" class="solr.UUIDField" indexed="true" />  
    4. </types>  

    2、添加主键id字段配置(注释或者删除原来的id字段配置,切记

     

    [html] view plain copy
     
    1. <field name="id" type="uuid" indexed="true" stored="true" required="true" multiValued="false" />  

     

    二、配置solrconfig.xml文件

     

    1、注释掉以下的配置,原因及可能产出的异常参考:https://issues.apache.org/jira/browse/SOLR-3398

     

    [html] view plain copy
     
    1. <searchComponent name="elevator" class="solr.QueryElevationComponent" >  
    2.   <str name="queryFieldType">string</str>  
    3.   <str name="config-file">elevate.xml</str>  
    4. </searchComponent>  
    2、添加一个updateRequestProcessorChain配置

     

     

    [html] view plain copy
     
    1. <updateRequestProcessorChain name="uuid">  
    2.     <processor class="solr.UUIDUpdateProcessorFactory">  
    3.         <str name="fieldName">id</str>  
    4.     </processor>  
    5.     <processor class="solr.RunUpdateProcessorFactory" />  
    6. </updateRequestProcessorChain>  
    3、修改其中一个requestHandler配置,注意:上一步是添加,而这里是修改,如果直接添加的话,那么就会重复配置,这样后面的配置会覆盖前面的配置,本人就是很不幸的被默认的配置覆盖了我添加的配置,当时够郁闷的!

     

     

    [html] view plain copy
     
    1. <requestHandler name="/update" class="solr.UpdateRequestHandler">  
    2.     <!-- See below for information on defining   
    3.          updateRequestProcessorChains that can be used by name   
    4.          on each Update Request  
    5.       -->  
    6.     <!--  
    7.        <lst name="defaults">  
    8.          <str name="update.chain">dedupe</str>  
    9.        </lst>  
    10.        -->  
    11.     <lst name="defaults">  
    12.         <str name="update.chain">uuid</str>  
    13.     </lst>  
    14.   </requestHandler>  
     
    0
  • 相关阅读:
    生成大小字母以及数字混乱的6位验证码
    重写吃货联盟
    集合练习:登录注册功能
    出现并解决Navicat 报错:1130-host ... is not allowed to connect to this MySql server,MySQL
    mysql在linux的安装
    Spring4分别整合mongo2.X和3.0
    oracle数据库使用plsql(64位)时出现的问题
    spring的CXF远程服务
    spring的定时任务或者说自动任务
    jquery节点查询
  • 原文地址:https://www.cnblogs.com/gmq-sh/p/5885785.html
Copyright © 2011-2022 走看看