Solr 4 beta已经发布,GA版本即将推出。如此解释:http://solr.pl/en/2012/07/09/solr-4-0-partial-documents-update/,部分文档更新已存在一段时间。
然而,我还没有找到如何使用solrj api进行部分文档更新。
有人知道是否可以在solrj中实现吗?还是说solrj还没有支持这个功能?
更新:正如我在邮件列表中所描述的(请参见回复here),我发现在solrj api中,SolrInputField的值可以是一个map——它不必是一个简单的标量值。
如果它是一个映射,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”。有什么想法吗?
ArrayList
插入值,然后将partialUpdate
声明为Map<String, Object> partialUpdate = new HashMap<String, Object>();
,键为add
。 - veer7