solrj api用于部分文档更新

Yon*_*oni 26 solr solrj

Solr 4 beta已经发布,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);
Run Code Online (Sandbox Code Playgroud)

产生这个文件:

<doc boost="1.0">
    <field name="id">test_123</field>
    <field name="description" update="set">foo</field>
</doc>
Run Code Online (Sandbox Code Playgroud)

在这个例子中,我为这个附加属性使用了"set"这个词,但它不起作用.Solr不像我预期的那样更新字段.根据此链接:http: //solr.pl/en/2012/07/09/solr-4-0-partial-documents-update/ 有效值为"set"和"add".

任何的想法?

Yon*_*oni 30

事实证明,问题上面显示的代码片段实际上是有效的.我第一次尝试时不知道出了什么问题,也许我只是忘了提交或者我的架构配置错误.

无论如何,这个问题非常本地化.但是,由于带有哈希映射的api文档记录很少,我想也许值得保留这个问题和答案.

哈希映射的关键字可以是以下三个值之一:

  • set - 设置字段.
  • add - 添加到多值字段.
  • inc - 增加一个字段.

在solrj单元测试中有一个这样的代码示例,在一个名为的方法中testUpdateField.

  • [链接] http://svn.apache.org/repos/asf/lucene/dev/trunk/solr/solrj/src/test/org/apache/solr/client/solrj/SolrExampleTests.java可能会哄某人 (4认同)