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

   最近學習了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>







發佈了39 篇原創文章 · 獲贊 22 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章