Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Solr 分配唯一id';它跨越所有文档及其子文档_Solr - Fatal编程技术网

Solr 分配唯一id';它跨越所有文档及其子文档

Solr 分配唯一id';它跨越所有文档及其子文档,solr,Solr,因此,情况如下: Solr直接在数据库上进行数据导入 我有一个表项目,它与单位有关系。一个项目最多可容纳5个单元 从数据库自动生成ID,从1开始 每个表的ID都是唯一的,但不跨数据库 因为Solr要求每个文档都有一个唯一的ID,所以我创建了一个字段solrId,它从Solr.UUIDUpdateProcessorFactory获取其ID 然而,dataimport只获取几个项目,没有任何单元。有人能给我指出正确的方向吗 有关段落: solrconfig.xml: <updateRequ

因此,情况如下:

  • Solr直接在数据库上进行数据导入
  • 我有一个表项目,它与单位有关系。一个项目最多可容纳5个单元
  • 从数据库自动生成ID,从1开始
  • 每个表的ID都是唯一的,但不跨数据库
因为Solr要求每个文档都有一个唯一的ID,所以我创建了一个字段solrId,它从Solr.UUIDUpdateProcessorFactory获取其ID

然而,dataimport只获取几个项目,没有任何单元。有人能给我指出正确的方向吗

有关段落:

solrconfig.xml

<updateRequestProcessorChain name="uuid">
    <processor class="solr.UUIDUpdateProcessorFactory">
        <str name="fieldName">solrId</str>
    </processor>
    <processor class="solr.LogUpdateProcessorFactory" />
    <processor class="solr.RunUpdateProcessorFactory" />
</updateRequestProcessorChain>
....
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
    <lst name="defaults">
        <str name="config">wiensued-data-config.xml</str>
        <str name="update.chain">uuid</str>
    </lst>
</requestHandler>
<uniqueKey>solrId</uniqueKey>
<fieldType name="uuid" class="solr.UUIDField" indexed="true" />
<!-- solrId is the real ID -->
<field name="solrId" type="uuid" multiValued="false" indexed="true" stored="true" />
<!-- the ID from the database -->
<field name="id" type="int" multiValued="false" indexed="true" stored="true"/>

不过,据我所知,solrId是提供的

只要在dih配置中修复这个问题,它就会更干净、更容易

只需在项目id前面加一个“p”就可以创建id,并将其提供给solr。同样,对于单位(在“u”之前)。你明白了:

 <entity name="project" pk="id" query="select concat('p', id) as solrid, ...

不知道你能做到!非常感谢你!
 <entity name="project" pk="id" query="select concat('p', id) as solrid, ...