【发布时间】:2016-04-02 06:57:50
【问题描述】:
我有如下文件:
{
id: X
pos: y
fields....
}
我的唯一键是“id”字段,“pos”是每个加载的文档都会增加的计数器。
出于性能原因,我想尽快加载核心并避免在加载期间删除(使用 overwrite=true 会导致索引吞吐量下降 33%)。
有没有一种简单的方法可以在完成加载核心后要求 Solr 删除具有相同“id”字段的所有文档,而只保留具有最新“pos”字段的文档(在每个唯一的“id”组中)?
如果有更好的技术可以在不处理删除的情况下提高加载速度,我将很乐意了解。
如果我需要手动删除它们,我正在寻找以下文档的查询:
{id:1 pos:0}
{id:1 pos:1}
{id:1 pos:2}
{id:2 pos:3}
{id:2 pos:4}
将返回:
{id:1 pos:0}
{id:1 pos:1}
{id:2 pos:3}
所以我可以删除它们。
【问题讨论】:
-
您的索引如何?在点击 Solr 之前,重复删除可能更有效。您可能必须在索引完成后实现自定义删除脚本才能获得您所要求的其他内容。
-
我正在使用 solrj 客户端进行索引。在建立索引之前删除重复项是不可能的,但如果有帮助,我确实知道何时遇到更新。 @MatsLindh