2010-04-17 14 views
9

Estoy usando solrj como cliente para indexar documentos en el servidor de solr.Borrando el índice de Solr usando solrj como cliente

Tengo un problema al eliminar los índices por 'id' del servidor solr. estoy usando siguiente código 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 sé qué está yendo mal con este código. Por favor, ayúdenme con el problema.

Gracias!

Respuesta

16

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

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

i utilizado este, pero esto no funciona en mi caso –

+0

es que esto funciona incluso si los documentos ID son enteros? –

1

Después de eliminar el documento, cometen el servidor y añadir las siguientes líneas. Después de la línea de confirmación del servidor.

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

Así que la deleteById sólo funcionará si está formando su clave usando sólo un atributo. Entonces, tenía un caso donde el ID era una combinación de atributos múltiples como employeeId + deptId. Pero, mi tabla tenía employeeId & deptId como columnas separadas también con los índices creados en él. Entonces, cuando quise eliminar un registro, solo tenía el ID de empleado y no el deptId. Utilicé el comando curl para borrar donde puede especificar la columna y su valor, y eliminará todo el registro.

E.g. curl http://localhost:8983/solr/update --data ':' -H 'Tipo de contenido: text/xml; charset = UTF-8'

0

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

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