27

Solr 4 ベータ版がリリースされました。GA バージョンはまもなくリリースされます。ここで説明されているように、部分的なドキュメントの更新はしばらく前から行われています: http://solr.pl/en/2012/07/09/solr-4-0-partial-documents-update/

ただし、solrj apiでそれを行う方法がわかりませんでした。

solrjで可能かどうかは誰にもわかりますか? それとも、solrj はこの機能に対応していないのでしょうか?

更新:メーリング リストで説明したように (返信はこちらを参照)、solrj API では、SolrInputField の値をマップにすることができます。単純なスカラー値である必要はありません。マップの場合、solrj は追加のupdate属性をフィールドの xml 要素に追加します。たとえば、このコード:

SolrInputDocument doc = new SolrInputDocument();
Map<String, String> partialUpdate = new HashMap<String, String>();
partialUpdate.put("set", "foo");
doc.addField("id", "test_123");
doc.addField("description", partialUpdate);

このドキュメントを生成します:

<doc boost="1.0">
    <field name="id">test_123</field>
    <field name="description" update="set">foo</field>
</doc>

この例では、この追加属性に「set」という単語を使用しましたが、機能しません。Solr が期待どおりにフィールドを更新しません。このリンクによると: http://solr.pl/en/2012/07/09/solr-4-0-partial-documents-update/ 有効な値は「設定」と「追加」です。

何か案が?

4

2 に答える 2

31

結局のところ、上記の質問に示されているコード スニペットは実際に機能します。最初に試したときに何が問題だったのかわかりません。おそらく、単にコミットするのを忘れていたか、スキーマが正しく構成されていなかったのでしょう。

いずれにせよ、この質問は非常にローカライズされています。ただし、ハッシュ マップを使用した API の文書化は不十分であるため、この質問と回答を保持する価値があるのではないかと考えました。

ハッシュ マップのキーは、次の 3 つの値のいずれかになります。

  • set - フィールドを設定します。
  • add - 複数値フィールドに追加します。
  • inc - フィールドをインクリメントします。

このコードの例は、solrj ユニット テストの と呼ばれるメソッドにありtestUpdateFieldます。

于 2012-09-09T18:50:58.527 に答える