在Solr中,一个独特的键是否必须是一个uuid?

时间:2012-09-25 13:35:28

标签: solr full-text-search

Solr / Lucene架构中的唯一键是text_general吗?我试过了,但Solr没有覆盖数据,只是添加了另一行,因此重复数据。

我已从solrconfig.xml

注释掉了以下内容
<searchComponent name="elevator" class="solr.QueryElevationComponent" >
<!-- pick a fieldType to analyze queries -->
<str name="queryFieldType">string</str>
<str name="config-file">elevate.xml</str>
</searchComponent>

我的schema.xml

<uniqueKey>_id</uniqueKey>
<field name="_id" type="text_general" indexed="true" stored="true" default="NEW"/>

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

您可以使用uniqueKey字段所需的任何类型。正如您可以从文档中读到的那样:

  

该声明可用于通知Solr有一个   索引中的字段,对于所有文档应该是唯一的。如果一个   添加的文档包含与此字段相同的值   现有文件,旧文件将被删除。

     

架构不一定要有uniqueKey字段。

     

请注意,如果您已启用QueryElevationComponent   solrconfig.xml它要求模式具有类型的uniqueKey   StrField。例如,它不能是一个int字段。

重要的是您的uniqueKey字段是唯一的,这意味着同一文档具有相同的标识符。只有这样,替换,如果现有的机制可以工作。使用uuid字段类型,您永远不会替换文档,因为您会自动为每个文档设置不同的ID。