いくつか見られる挙動についての質問

トピック作成者:ks-solruserml-bot (2024/08/29 11:24 投稿)
3
OpenOpen

(The bot translated the original post https://lists.apache.org/thread/pz21kh7v8sqbbwjzczn9os8t382xngs3 into Japanese and reposted it under Apache License 2.0. The copyright of posted content is held by the original poster.)

SolrJ 4.7.2では、アトミックアップデートリクエストにおいて、いくつかのフィールドがnull(文字列ではなくオブジェクト)に設定されている場合、そのフィールドはアトミックアップデートの処理時に無視され、変更が行われません。

一方、SolrJ 9では、アトミックアップデートリクエストでnullに設定されたフィールドがドキュメントから削除されます。

これはクライアントの動作であり、サーバーの動作はSolr 4でもSolr 9でも同じです。

どちらの動作が正しいのでしょうか?SolrJ 9の動作が正しいと推測しますが、問題を報告すべきかどうかを確認したいです。

よろしくお願いします。
Shawn

返信投稿者:ks-solruserml-bot (2024/08/29 11:24 投稿)

こんにちは、Shawn

私は通常、フィールドを削除したい場合、アトミックアップデートでフィールドの値をnullに設定します。例えば、ドキュメントが「isVisible": false」というフィールドでソフト削除された場合、アトミックアップデートで「content」フィールドをnullに設定して削除したいと考えます(このフィールドは大きく、もう必要ないため)。

そのため、製品の動作としては、SolrJ 9でのあなたが言及した動作を常に期待しています。

-Rahul

返信投稿者:ks-solruserml-bot (2024/08/29 11:24 投稿)

現在、SolrJを使用してSolrと通信する自作のJavaサービスを複数持つ顧客に対応しています。

これまで見たところ、彼らはSolrとSolrJ 4.7での誤った動作に依存していたようです。新しい環境をSolrとSolrJバージョン9で設定すると、突然システムが同じように動作しなくなりました。

まさに「これがどうやって今まで動いていたのか?」という状況で、彼らの開発者が実際に観察されたことを意図的に行っていたとは信じがたいと思っています。

よろしくお願いします。
Shawn

返信投稿者:ks-solruserml-bot (2024/08/29 11:24 投稿)

正しいことをすると間違った結果が生じる状況にあるのですね :) クライアントコードが特定のサービスに限定されていない場合、私はサーバー側から対処します。具体的には、UpdateRequestProcessorFactoryを拡張したカスタムの更新プロセッサを作成し、それをsolrconfig内のカスタム更新チェーンに追加します。このプロセッサは、Solrドキュメント内のそのようなnullフィールドをチェックし、チェーンの下流に進む前にそれらをすべて削除します。

-Rahul

トピックへ返信するには、ログインが必要です。

KandaSearch

Copyright © 2006-2024 RONDHUIT Co, Ltd. All Rights Reserved.

投稿の削除

この投稿を削除します。よろしいですか?