【问题标题】:Solr Atomic field update should happen only if new value is biggerSolr 原子字段更新仅在新值更大时才发生
【发布时间】:2017-09-05 21:34:29
【问题描述】:

我在 Solr 中有一个自定义字符串字段,其中包含时间戳。我通过原子更新更新了一些具有此字段的文档。例如:

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

现在假设 doc1 存在并且它的 last_interact 字段已经有一个值。 我希望仅当新值大于现有值时才发生原子更新。因此,例如,如果 last_interact 的当前值为 555,则允许上述更新更改 last_interact 值,因为它正在增加它。但如果当前值为 99999,则更新不应更改该值。

如何做到这一点?

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

【问题讨论】:

    标签: javascript solr updates atomic processor


    【解决方案1】:

    Solr 中没有内置解决方案。

    你可以:

    1. 在发送更新之前,请使用来自客户端的查询检查值。
    2. 修改您的 UpdateRequestProcessor,然后通过查询从那里查找值,没有什么可以阻止您在 URP 内发出查询。这将是更多的工作,但您的客户端代码不需要担心它。

    【讨论】:

    • 第二种方式,请您详细说明如何从UpdateRequestProcessor JS文件中查询Solr。
    • 我用 Java 编写 URP,而不是 JS,但你可以做任何你需要的事情,你可以用 js 向 Solr 发送查询,对吧?您可以发布网址等
    猜你喜欢
    • 2014-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-18
    • 2017-08-11
    • 1970-01-01
    相关资源
    最近更新 更多