• 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
  • 相关阅读:
    PCA算法---实验代码完整版(实验代码+数据集下载)
    ubuntu 系统 anaconda 虚拟环境下各种包的安装常用命令
    真实机下 ubuntu 18.04 安装GPU +CUDA+cuDNN 以及其版本选择(亲测非常实用)
    ubuntu 18.04/16.04/14.04 双硬盘分区方案
    如何制作 linux 系统 U盘启动盘
    pandas系列 read_excel() 和 to_excel()各参数详解
    pandas系列 read_csv 与 to_csv 方法各参数详解(全,中文版)
    pycharm 修改程序运行所需内存
    如何利用pandas 将excel文件与csv文件进行相互转化
    python读取文件时提示"UnicodeDecodeError: 'gbk' codec can't decode byte 0x80 in position 205: illegal multi
  • 原文地址:https://www.cnblogs.com/gmq-sh/p/5885785.html
Copyright © 2020-2023  润新知