solrj api para la actualización parcial del documento
(1)
Como resultado, el fragmento de código que se muestra arriba en la pregunta realmente funciona. No sé qué fue lo que pasó la primera vez que lo intenté, tal vez simplemente olvidé comprometerme o mi esquema estaba mal configurado.
En cualquier caso, esta pregunta está muy localizada. Sin embargo, dado que la API con el mapa hash está tan poco documentada, pensé que tal vez valiera la pena mantener esta pregunta y respuesta.
La clave del mapa hash puede ser uno de tres valores:
- set - para establecer un campo.
- add - para agregar a un campo multivaluado.
- inc - para incrementar un campo.
Hay un ejemplo de este código en las pruebas de la unidad solrj, en un método llamado testUpdateField
.
Solr 4 beta está fuera, la versión de GA seguirá pronto. Las actualizaciones parciales de documentos han estado disponibles por un tiempo, como se explica aquí: http://solr.pl/en/2012/07/09/solr-4-0-partial-documents-update/
Sin embargo, no he descubierto cómo hacerlo con solrj api.
¿Alguien sabe si es posible con solrj? ¿O simplemente no está actualizado con esta función?
actualización: como describo en la lista de correo (ver respuesta aquí ), encontré que en Solrj api, el valor de un SolrInputField puede ser un mapa, no tiene que ser un valor escalar simple. Si se trata de un mapa, solrj agrega un atributo de update
adicional al elemento xml del campo. Por ejemplo, este código:
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);
produce este documento:
<doc boost="1.0">
<field name="id">test_123</field>
<field name="description" update="set">foo</field>
</doc>
En este ejemplo usé la palabra "establecer" para este atributo adicional, pero no funciona. Solr no actualiza el campo como esperaba. De acuerdo con este enlace: http://solr.pl/en/2012/07/09/solr-4-0-partial-documents-update/ los valores válidos son "establecer" y "agregar".
¿Alguna idea?