Frage

Ich bin mit solrj als Client für die Indizierung von Dokumenten auf dem solr Server.

Ich habe Probleme, während die Indizes von ‚id‘ Löschen vom solr Server. Ich bin folgenden Code verwendet die Indizes zu löschen:

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

Danach, wenn ich wieder für die Dokumente suchen, enthält das Suchergebnis, die genannten Unterlagen auch. Weiß nicht, was mit diesem Code falsch läuft. Bitte helfen Sie mir mit der Ausgabe aus.

Danke!

War es hilfreich?

Lösung

Wenn Sie deleteById nennen, nur die ID verwenden, ohne Abfragesyntax:

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

Andere Tipps

Nachdem Sie das Dokument löschen, begehen Sie den Server, und fügen Sie die folgenden Zeilen. Nachdem der Server verpflichten Linie.

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

Verwenden Sie die Methode deleteByQuery () , um die Dokumente löschen Sie die Suche entsprechen:

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

So ist die deleteById funktioniert nur, wenn Sie Ihren Schlüssel bilden nur ein Attribut verwendet wird. So hatte ich Fall, in dem die ID eine Kombination mehrerer Attribute wie employeeId + deptId war. Aber, hatte mein Tisch employeeId & deptId als separate Spalten als auch mit Indizes für sie erstellt. Also, wenn ich wollte eine Platte, die ich hatte nur die employeeId und nicht deptId löschen. Ich benutzte den curl Befehl zu löschen, in dem Sie die Spalte und seinen Wert angeben können, und es wird den gesamten Datensatz löschen.

z. curl http: // localhost: 8983 / Solr / update --data ‚ '-H' Content-type: text / xml; charset = utf-8'

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top