2017-09-05 7 views
0

私は、タイムスタンプを保持するカスタム文字列フィールドをSolrに持っています。私はこのフィールドを原子的更新によって持ついくつかのドキュメントを更新します。例:Solr新しい値が大きい場合にのみ、アトミックフィールド更新が発生する

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

ここで、doc1が存在し、last_interactフィールドにはすでに値が設定されているとします。 原子の更新は、新しい値が既存の値よりも大きい場合にのみ発生します。たとえば、last_interactの現在の値が555の場合、last_interactの値が増えているので、上記の更新でlast_interactの値を変更することができます。しかし、現在の値が99999の場合、更新によって値が変更されるべきではありません。

これを行うには?

私はすでにStatelessScriptUpdateProcessorFactoryプロセッサを実装していましたが、関数processAdd(cmd){}のjavaスクリプトファイルでルールを適用しましたが、まだ成功していません。この機能では、提出されたドキュメントのフィールドにアクセスできますが、既存のドキュメントのフィールドにはアクセスできないためです。

答えて

0

Solrにはソリューションが組み込まれていません。

あなたは可能性:

  1. アップデートを送信する前に、クライアント側からのクエリで値を確認してください。
  2. あなたのUpdateRequestProcessorを変更し、そこからクエリの値を参照するだけで、URP内でクエリを発行することはできません。これはより多くの作業になりますが、クライアントコードで心配する必要はありません。
+0

2番目の方法で、UpdateRequestProcessor JSファイルの中からSolrに問い合わせる方法を詳しく教えてください。 –

+0

JSではなく、JavaでURPを書いていますが、必要なことは何でもできます.JSのSolrに質問を送ることはできますか?あなたはURLなどを投稿することができます – Persimmonium

関連する問題