Solr自動生成ID


在Solr中,每一個索引,都要有一個唯一的ID,類似於關系型數據庫表中的主鍵。為了方便創建索引,需要配置自動生成的ID,即UUID。

一、配置schema.xml文件

添加uuid字段類型,修改字段id的類型。

   <field name="id" type="uuid" indexed="true" stored="true" required="true" multiValued="false" /> 
   <fieldType name="uuid" class="solr.UUIDField" indexed="true" />

二、配置solrconfig.xml文件

添加更新策略配置,調用Solr中的UUIDUpdateProcessorFactory生成全局唯一的UUID。

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

配置requestHandler,保證dataimport和update操作都可以自動生成UUID。

<requestHandler name="/dataimport" class="solr.DataImportHandler">
    <lst name="defaults">
      <str name="config">tika-data-config.xml</str>
      <str name="update.chain">uuid</str>    
   </lst>
</requestHandler>

<requestHandler name="/update" class="solr.UpdateRequestHandler">
       <lst name="defaults">
        <str name="update.chain">uuid</str>
       </lst>  
</requestHandler>

  <!-- for back compat with clients using /update/json and /update/csv -->  
  <requestHandler name="/update/json" class="solr.JsonUpdateRequestHandler">
        <lst name="defaults">
         <str name="stream.contentType">application/json</str>
         <str name="update.chain">uuid</str>
        </lst>
  </requestHandler>
  <requestHandler name="/update/csv" class="solr.CSVRequestHandler">
        <lst name="defaults">
         <str name="stream.contentType">application/csv</str>
         <str name="update.chain">uuid</str>
        </lst>
  </requestHandler>

  <requestHandler name="/update/extract"
                  startup="lazy"
                  class="solr.extraction.ExtractingRequestHandler" >
    <lst name="defaults">
      <str name="xpath">/xhtml:html/xhtml:body/descendant:node()</str>
      <str name="capture">content</str>
      <str name="fmap.meta">attr_meta_</str>
      <str name="uprefix">attr_</str>
      <str name="lowernames">true</str>
      <str name="update.chain">uuid</str>
    </lst>
</requestHandler>

經過以上配置之后,在進行索引的時候,就不需要指定ID了,Solr可自動生成ID字符串。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM