Solr 4ベータ版がリリースされ、GAバージョンが間もなくリリースされます。ここで説明されているように、ドキュメントの部分的な更新はしばらくの間行われています: http://solr.pl/en/2012/07/09/solr-4-0-partial-documents-update /
しかし、私はsolrj apiでそれを行う方法を理解していません。
誰かがそれがsolrjで可能かどうか知っていますか?それとも、solrjはこの機能を備えていませんか?
update:メーリングリストで説明したように(返信 こちら を参照)、solrj apiで値がSolrInputFieldはマップにすることができます-単純なスカラー値である必要はありません。マップの場合、solrjはフィールドのxml要素に追加のupdate
属性を追加します。たとえば、このコード:
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/ 有効な値は「set」と「add」です。
何か案が?
結局のところ、上記の質問のコードスニペットは実際に機能します。初めて試したとき、何が問題だったのかわかりません。単にコミットするのを忘れたか、スキーマが正しく構成されていなかった可能性があります。
いずれにせよ、この質問は非常にローカライズされています。ただし、ハッシュマップを使用したAPIはあまり文書化されていないため、この質問と回答を続けることは価値があると思いました。
ハッシュマップのキーは、次の3つの値のいずれかになります。
このコードの例は、solrjユニットテストのtestUpdateField
というメソッドにあります。