Domanda

Sto usando solrj come client per l'indicizzazione di documenti sul server solr.

Sto avendo problema durante l'eliminazione degli indici da 'id' dal server solr. Sto usando seguente codice per eliminare gli indici:

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

Dopo questo, quando ho di nuovo cercare i documenti, il risultato della ricerca contiene anche il documento di cui sopra. Non so cosa c'è di sbagliato con questo codice. Si prega di aiutarmi con problema.

Grazie!

È stato utile?

Soluzione

Quando si chiama deleteById, basta usare l'id, senza sintassi di query:

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

Altri suggerimenti

Dopo aver eliminato il documento, commettere il server e aggiungere le seguenti righe. Dopo che il server commettere riga.

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

Utilizzare il metodo deleteByQuery () per eliminare i documenti corrispondenti alla query:

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

Così il deleteById funziona solo se si sta formando la chiave utilizzando un solo attributo. Così, ho dovuto caso in cui l'id era una combinazione di attributi multipli come employeeId + deptid. Ma, il mio tavolo aveva employeeId & deptid come colonne separate e con gli indici creati su di esso. Così, quando ho voluto eliminare un record ho avuto solo l'employeeId e non deptid. Ho usato il comando curl per eliminare in cui è possibile specificare la colonna e il suo valore e sarà eliminare l'intero record.

es. ricciolo http: // localhost: 8983 / solr / aggiornamento --data ': '-H' Content-Type: text / xml; charset = utf-8'

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top