0
私は3000のドキュメントを持つコアにSolrインデックスを持っています。javaを使用してsolrインデックスの既存のフィールドを更新するには?
一意のキーPaperIDに基づいて、コア全体の1つのフィールドの値を変更したいとします。
私は次のJavaコードを使用していますが、既存の値を更新する代わりに、新しい文書を追加します。
if (solrDocument.get("PaperID").equals(solrDocument2.get("PaperID"))) {
String Mscore = (String) solrDocument.get("ID");
String ModifyScore = (String) solrDocument.get("Author");
//solrDocument.setField("ID", ModifyScore);
//update the field
System.out.println(Mscore);
System.out.println(ModifyScore);
System.out.println(solrDocument2.get("Mscore") + "\n");
SolrInputDocument sid = new SolrInputDocument();
Map<String, Object> fieldModifier = new HashMap<String, Object>(1);
fieldModifier.put("set", ModifyScore);
sid.setField("ID", fieldModifier);
//solr.add(sid);
solr.commit();
}
誰もがそれに応じて私を導くことができる...あなたが.add
コマンドをコメントアウトしましたので、あなたのコードは、何も変更されていませんよろしく
ありがとう@MatsLindh、今すぐユニークなキーのIDフィールドを使用して動作します。しかし、それはインデックスの最初のレコードを見落とし、また、最初のレコードを印刷しません。私はsolrjとsolrの間のどこに問題があるのかわかりません。 –
これは、solrDocument1とsolrDocument2を取得するコードを参照しなければ言うことはできませんが、2つのドキュメントの値を比較しているので、最初の繰り返しで有用なものと比較しているわけではありません。 – MatsLindh
ありがとう@MatsLindhコードは長いので、あなたの電子メールをチェックする理由です。私は両方のインデックスのIDを比較しており、それに応じてフィールドを更新します。 –