2017-09-05 87 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

相關問題