solr DIH:生成身份值

问题描述

我需要将数据库数据导入solr。

我正在使用此data-config.xml

<dataConfig>

  <dataSource driver="org.hsqldb.jdbcDriver" url="jdbc:sqlserver://192.168.122.1;databaseName=giac_txt" user="sa" password="StR0nGp4ss."/> 

  <document>

    <entity name="item" query="select codi_unitat,titol from anc_uniciac>
      <field column="codi_unitat" name="code_l_ns"/>
      <field column="titol" name="title_txt_ca" />
    </entity>

  </document>

</dataConfig>

当我需要生成一个id时出现问题,因为我的模式需要和id:

<schema name="example-data-driven-schema" version="1.6">
  <uniqueKey>id</uniqueKey>
   ...

有什么想法吗?

编辑

我已检查solrconfig.xml

<updateRequestProcessorChain name="files-update-processor">
    <!-- UUIDUpdateProcessorFactory will generate an id if none is present in the incoming document -->
    <processor class="solr.UUIDUpdateProcessorFactory" />

认情况下,它已链接到任何update

<initParams path="/update/**">
  <lst name="defaults">
    <str name="update.chain">files-update-processor</str>
  </lst>
</initParams>

这是否意味着认情况下会生成一个uuid?

解决方法

UUID是通用唯一标识符的缩写。如果您没有在solr中插入文档的ID,则可以使用它。

unique id字段在您需要更新或删除文档时非常有用,因为在Solr中的常规搜索无法唯一地标识文档。

solrconfig.xml中添加以下配置。

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