Pregunta

Estoy utilizando SolrJ como cliente para la indexación de documentos en el servidor Solr.

Estoy teniendo un problema al borrar los índices por 'id' desde el servidor Solr. Estoy utilizando el código siguiente para eliminar los índices:

server.deleteById("id:20");
server.commit(true,true);

Después de esto cuando de nuevo búsqueda de los documentos, el resultado de la búsqueda contiene el documento anterior también. No saber lo que está mal con este código. Por favor me ayude con la edición.

Gracias!

¿Fue útil?

Solución

Cuando se llama a deleteById, sólo tiene que utilizar el ello, sin sintaxis de consulta:

server.deleteById("20");
server.commit();

Otros consejos

Después de eliminar el documento, cometió el servidor y añadir las siguientes líneas. Después de que el servidor de cometer línea.

  UpdateRequest req = new UpdateRequest();
  req.setAction( UpdateRequest.ACTION.COMMIT, false, false );
  req.add( docs );
  UpdateResponse rsp = req.process( server );

Utilice el método deleteByQuery () para eliminar los documentos que coincidan con la consulta:

server.deleteByQuery("id:20");
server.commit();

Así que la deleteById sólo funcionará si está formando su clave usando sólo un atributo. Por lo tanto, no tenía caso en que la identificación era una combinación de múltiples atributos como employeeid + deptId. Sin embargo, mi mesa tenía employeeid y deptId en columnas separadas, así como con los índices creados en él. Así que cuando quería borrar un registro que tenía sólo el employeeid y no deptId. He utilizado el comando curl borrar donde puede especificar la columna y su valor y se eliminará el registro completo.

por ejemplo. rizo http: // localhost: 8983 / Solr / actualización --Hojas ' 'H' Content-type: text / xml; charset = utf-8'

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top