2013-04-26 3 views
3

Solr 4.x имеет эту новую новую функцию, которая позволяет указать, как при обновлении существующего документа будут обновляться поля с несколькими значениями. В частности, можно сказать, что если документ обновления заменит старые значения многозначного поля на новые или добавит новые значения к уже существующим.Solr, как использовать новые режимы обновления полей (атомные обновления) с помощью SolrJ

Я попытался это с помощью обработчика запроса, как описано здесь:

http://wiki.apache.org/solr/UpdateXmlMessages#Optional_attributes_for_.22field.22

Я использовал локон, чтобы отправить XML, где некоторые поля использовал update=add вариант:

<field name="skills" update="add">Python</field> 

Это работает так, как ожидалось.

Однако я не могу получить, как это сделать Java API (SolrJ).

Если я что-то вроде этого:

SolrInputDocument doc1 = new SolrInputDocument(); 
doc1.setField("ID_VENTE", "idv1"); 
doc1.setField("FACTURES_PRODUIT", "fp_initial"); 
solrServer.add(doc1); 
solrServer.commit(); 

SolrInputDocument doc2 = new SolrInputDocument(); 
doc2.setField("ID_VENTE", "idv1"); 
doc2.setField("FACTURES_PRODUIT", "fp_2");  
solrServer.add(doc2); 
solrServer.commit(); 

Значение поля «FACTURES_PRODUIT» становится «fp_2» (теряется начальное значение). Я также попытался:

doc2.addField("FACTURES_PRODUIT", "fp_2"); 

, но результат тот же. Я также изучил класс SolrInputField, но не нашел ничего подобного.

Итак, мой вопрос: как я могу использовать Java API Solr 4 для обновленных значений в поле с несколькими значениями, добавив (не заменяя) новые значения?

+0

Каков тип поданной «FACTURES_PRODUIT»? многозначное? – AlexZ

ответ

6

Хорошо, я решил это после некоторой отладки кода SolrJ. Вы должны это сделать:

SolrInputDocument doc2 = new SolrInputDocument(); 
    Map<String,String> fpValue2 = new HashMap<String, String>(); 
    fpValue2.put("add","fp2");   
    doc2.setField("FACTURES_PRODUIT", fpValue2); 
+0

Спасибо! Последняя вещь (может уловить других), чтобы добавить в это: doc2.setField ("ID_VENTE", "idv1"); – Chris

Смежные вопросы