2017-09-05 49 views
0

我在Solr中有一个自定义字符串字段,它包含一个时间戳。我通过原子更新更新了一些有此字段的文档。例如:Solr原子场更新只有在新值更大时才会发生

{id:doc1, last_interact:{set:8888} } 

现在让我们说doc1存在,它的last_interact字段已经有一个值。 我想只有当新值大于现有值时才会发生原子更新。因此,举例来说,如果last_interact的当前值是555,则上面的更新允许更改last_interact值,因为它正在增加它。但是,如果当前值为99999,则更新不应更改该值。

如何实现这一目标?

我已经尝试过实现一个StatelessScriptUpdateProcessorFactory处理器,并且在函数processAdd(cmd){}中的java脚本文件中应用规则,但没有成功;因为在这个函数中,我可以访问提交文档的字段,但不能访问现有文档的字段。

回答

0

Solr没有内置的解决方案。

您可以:

  1. 发送更新前,请与来自客户端的查询值。
  2. 修改您的UpdateRequestProcessor,并从查询中查找值,但无法阻止您在URP内发出查询。这将是更多的工作,但您的客户端代码不需要担心它。
+0

在第二种方式中,您能否详细说明如何从UpdateRequestProcessor JS文件中查询Solr。 –

+0

我写我的URPs在Java中,而不是JS,但你可以做任何你需要的,你可以发送一个查询到JSR的Solr?你可以发布一个URL等 – Persimmonium

相关问题