2010-04-17 8 views
9

Ich verwende solrj als Client für die Indizierung von Dokumenten auf dem solr-Server.Löschen des Index von Solr mit solrj als Client

Ich habe Probleme beim Löschen der Indizes mit 'ID' vom Solr-Server. Ich verwende folgenden Code, um 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. Ich weiß nicht, was mit diesem Code falsch läuft. Bitte helfen Sie mir mit Problem.

Danke!

Antwort

16

Wenn Sie deleteById nennen, benutzen Sie einfach die ID, ohne Abfragesyntax:

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

i verwendet, um dieses, aber diese Arbeit wird in meinem Fall nicht –

+0

diese Arbeit, auch wenn Die Dokument-IDs sind ganze Zahlen? –

1

Nachdem Sie das Dokument löschen, um den Server zu begehen und die folgenden Zeilen hinzufügen. Nach der Server-Commit-Zeile.

-1

Also funktioniert die deleteById nur, wenn Sie Ihren Schlüssel mit nur einem Attribut bilden. Also, ich hatte Fall, wo die ID eine Kombination aus mehreren Attributen wie EmployeeId + DeptId war. Aber, meine Tabelle hatte Mitarbeiter ID & DEPTID als separate Spalten sowie Indizes erstellt. Als ich also einen Datensatz löschen wollte, hatte ich nur die employeeId und nicht deptId. Ich habe den Befehl curl verwendet, um zu löschen, wo Sie die Spalte und ihren Wert angeben können, und löscht den gesamten Datensatz.

z. curl http://localhost:8983/solr/update --data ':' -H 'Inhaltstyp: text/xml; charset = utf-8'

0

Verwenden Sie die Methode deleteByQuery() die Dokumente Anpassung der Abfrage zu löschen:

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