首页 > 代码库 > Solr自动生成ID

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字符串。

Solr自动生成ID