我在solr中有一个文件
<entity name="Category" dataSource="ds1" pk="CategoryId"
query="SELECT CategoryId, Description, ImageUrl FROM Category">
<field column="CategoryId" name="CategoryId" />
<entity name="PackCategory" pk="PackId, CategoryId"
query="SELECT PackId FROM PackCategory WHERE CategoryId = ${Category.CategoryId}" >
<entity name="Pack" pk="PackId"
query="SELECT PackId, IsActive FROM Pack WHERE PackId = ${PackCategory.PackId}" >
<field column="IsActive" name="IsActive" />
<entity name="PartnerPackTrans" pk="PackId, PartnerId" transformer="TemplateTransformer">
query="SELECT PartnerId FROM PartnerPackTrans WHERE PackId = ${Pack.PackId}" >
<field column="PartnerId" name="PartnerId" />
</entity>
</entity>
</entity>
</entity>
</entity>
我的唯一ID是(Cateogry.CategoryId,Pack.PackId,PartnerPackTrans.PartnerId)的组合。我如何在唯一字段
中的schema.xml中定义它是solr更新 经过各种帖子后,我添加了这个我的solr-config文件
<updateRequestProcessorChain name="id">
<processor class="solr.CloneFieldUpdateProcessorFactory">
<str name="source">CategoryId</str>
<str name="source">PartnerId</str>
<str name="dest">id</str>
</processor>
<processor class="solr.ConcatFieldUpdateProcessorFactory">
<str name="fieldName">id</str>
<str name="delimiter">-</str>
</processor>
<processor class="solr.LogUpdateProcessorFactory" />
<processor class="solr.RunUpdateProcessorFactory" />
</updateRequestProcessorChain>
但是我在solr中遇到了这个错误 文档缺少必需的uniqueKey字段:id
我正在推荐这篇文章 Solr Composite Unique key from existing fields in schema
我正在使用solr version 5.3
答案 0 :(得分:1)
在Solr中,您可以添加unique key:
声明可用于通知Solr索引中有一个字段对于所有文档都应该是唯一的。如果添加的文档包含与现有文档相同的此字段值,则将删除旧文档。
因此,在您的情况下,如果您的字段被称为unique
,则必须添加:
<uniqueKey>unique</uniqueKey>
<强>更新强>
要回复您的评论,您可以在schema.xml
中创建一个新字段:
<field name="unique" type="text_general" indexed="true" stored="true" multiValued="true" />
之后,您可以在新字段中复制所需的字段:
<copyField source="Cateogry.CategoryId" dest="unique"/>
<copyField source="Pack.PackId" dest="unique"/>
<copyField source="PartnerPackTrans.PartnerId" dest="unique"/>