如何修改包含自动生成的唯一ID的solr中的doc

时间:2016-03-16 08:53:20

标签: solr

我使用signatureupdateprocessorfactory来生成唯一键“id”。

<processor class="solr.processor.SignatureUpdateProcessorFactory">
  <bool name="enabled">true</bool>
  <str name="signatureField">id</str>
  <bool name="overwriteDupes">true</bool>
  <str name="fields">image_link</str>
  <str name="signatureClass">solr.processor.Lookup3Signature</str>

我想修改的文档是:

<doc>
<str name="title">47107</str>
<str name="id">6e004034dafc9f11</str>
<long name="_version_">1528941445348589568</long>
<str name="image_link">xyz.jpeg</str>
</doc>

我正在使用solrj来修改文档。

SolrInputDocument sdoc = new SolrInputDocument();
sdoc.addField("id","6e004034dafc9f11");
Map<String,Object> fieldModifier = new HashMap<>(1);
fieldModifier.put("set","47100");
sdoc.addField("title", fieldModifier);  // add the map as the field value

server.add( sdoc );  // send it to the solr server

server.commit();

这显示错误

Document contains multiple values for uniqueKey field: id=[6e004034dafc9f11, 0000000000000000]

如果我使用

<processor class="solr.UUIDUpdateProcessorFactory" />

为id字段生成uuid。 然后添加另一个类似于要修改的文档的doc。再次这是不可取的。

但是当我不使用自动生成的唯一ID时。这段代码工作正常。即在添加文档时,我也指定了id字段。 代码是:

SolrInputDocument sdoc = new SolrInputDocument();
  sdoc.addField("id","1");
  Map<String,Object> fieldModifier = new HashMap<>(1);
  fieldModifier.put("set","47101");
  sdoc.addField("title", fieldModifier);  // add the map as the field value

  server.add( sdoc );  // send it to the solr server

  server.commit();

这里有一个类似的问题Solr: How to update a document with unique ID

如何使用自动生成的唯一ID执行此操作。可能吗。如果是,那么请帮助。谢谢

0 个答案:

没有答案