2012-09-25 120 views
0

Solr/Lucene模式中的唯一键可以替代为text_general吗?我已经尝试过,但Solr不会覆盖数据,它只是添加另一行,因此重复数据。唯一的密钥是否必须是Solr中的uuid?

我注释掉从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"/> 

任何帮助将不胜感激。

+0

我可否知道我的答案是否有帮助? – javanna

+0

我没有时间去测试你提供的东西,我相信当我回来搜索我的项目时我会。同时将此标记为答案.. –

回答

2

您可以使用任何类型的uniqueKey字段。正如你可以从文档阅读:

的声明可以用来告知Solr的,有你的指数 字段,它应该是所有的文件是唯一的。如果添加了一个 文档,该文档包含与该字段相同的值作为 现有文档,则旧文档将被删除。

模式不具有uniqueKey字段是强制性的。

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

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

相关问题