solrj api for partial document update

梦想与她 提交于 2019-11-26 13:09:04

问题


Solr 4 beta is out, the GA version will follow soon. Partial document updates has been around for a while as explained here: http://solr.pl/en/2012/07/09/solr-4-0-partial-documents-update/

However, I haven\'t figured out how to do it with solrj api.

Does anyone knows if it is possible with solrj? Or is solrj just not up-to-speed with this feature?

update: as I describe in the mailing list (see reply here), I found that in the solrj api, the value of a SolrInputField can be a map - it doesn\'t have to be a simple scalar value. If it is a map, solrj adds an additional update attribute to the field\'s xml element. For example, This code:

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);

yields this document:

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

In this example I used the word \"set\" for this additional attribute, but it doesn\'t work. Solr doesn\'t update the field as I expected. According to this link: http://solr.pl/en/2012/07/09/solr-4-0-partial-documents-update/ valid values are \"set\" and \"add\".

Any idea?


回答1:


As it turns out, the code snippet shown above in the question actually works. I don't know what was wrong the first time I tried it, perhaps I simply forgot to commit or my schema was misconfigured.

In any case, this question is very localized. However, since the api with the hash map is so poorly documented, I thought maybe it is worth to keep this question and answer.

The key of the hash map can be one of three values:

  • set - to set a field.
  • add - to add to a multi-valued field.
  • inc - to increment a field.

There is an example of this code in the solrj unit tests, in a method called testUpdateField.



来源:https://stackoverflow.com/questions/12183798/solrj-api-for-partial-document-update

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!