Solr4.0 如何配置使用UUID自動生成id值

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

最近學習了Lucene,隨便也學習了Solr,Solr規定每一條記錄必須有一個主鍵值,用來惟一標識一條索引的記錄,默認是使用id字段來做主鍵的(能夠經過修改schema.xml文件更改),最煩的是這個主鍵不能設置自動增加,因此每添加一條記錄,不得不手動爲id字段賦值,若是不當心重複了,還很噁心的直接覆蓋了原來的記錄,因此在編程的時候不得不經過一些途徑來維護這個id值,經過google發現了一個能夠自動生成id值的方法,即讓solr自動生成UUID值(Universal Unique Identifiers通用惟一標識符),這樣編程的時候就不用維護這個id值了,使用這種作法的缺點就是:id值不是數值連續的,它是一串字符,如:5bb977a7-8a4c-46d6-ae49-b4eefade080capache

具體配置以下:(這是Solr 4.0的配置編程

1、配置schema.xml文件ide

一、添加fieldType學習

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

二、添加主鍵id字段配置(註釋或者刪除原來的id字段配置,切記ui

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

2、配置solrconfig.xml文件google

 

一、註釋掉如下的配置,緣由及可能產出的異常參考:https://issues.apache.org/jira/browse/SOLR-3398url

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

二、添加一個updateRequestProcessorChain配置spa

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

三、修改其中一個requestHandler配置,注意:上一步是添加,而這裏是修改,若是直接添加的話,那麼就會重複配置,這樣後面的配置會覆蓋前面的配置,本人就是很不幸的被默認的配置覆蓋了我添加的配置,當時夠鬱悶的!.net

<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的配置

1、配置schema.xml文件

一、添加fieldType

 

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

二、添加主鍵id字段配置(註釋或者刪除原來的id字段配置,切記

 

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

 

2、配置solrconfig.xml文件

 

一、註釋掉如下的配置,緣由及可能產出的異常參考: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>  
二、添加一個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>  
三、修改其中一個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
相關文章
相關標籤/搜索