add document dele and rebuild faiss index
This commit is contained in:
@@ -70,19 +70,12 @@ class DocumentService
|
||||
}
|
||||
|
||||
/**
|
||||
* Aktiviert eine Version (setzt andere inaktiv) und aktualisiert den Index.
|
||||
*
|
||||
* Beim Aktivieren wird deterministisch sichergestellt, dass nur diese
|
||||
* Version im Index vorhanden ist:
|
||||
* - alle Chunks des Dokuments werden aus index.ndjson entfernt (streaming compaction)
|
||||
* - die aktive Version wird neu ge-chunkt und appended
|
||||
* - FAISS wird vollständig aus index.ndjson neu gebaut
|
||||
* Aktiviert eine Version
|
||||
*/
|
||||
public function activateVersion(DocumentVersion $version): void
|
||||
{
|
||||
$document = $version->getDocument();
|
||||
|
||||
// Aktiv-Status in DB konsistent setzen (genau 1 aktive Version)
|
||||
foreach ($document->getVersions() as $existingVersion) {
|
||||
$existingVersion->setActive(false);
|
||||
}
|
||||
@@ -90,8 +83,6 @@ class DocumentService
|
||||
$version->setActive(true);
|
||||
$document->setCurrentVersion($version);
|
||||
|
||||
// Wichtig: Aktivierung soll einen Job auslösen. Damit der Job NICHT an "INDEXED" scheitert,
|
||||
// setzen wir hier bewusst auf PENDING.
|
||||
$version->setIngestStatus(DocumentVersion::INGEST_PENDING);
|
||||
|
||||
$this->em->flush();
|
||||
@@ -106,6 +97,31 @@ class DocumentService
|
||||
$this->em->flush();
|
||||
}
|
||||
|
||||
/**
|
||||
* HARD DELETE
|
||||
*
|
||||
* Entfernt das Dokument vollständig aus der Datenbank.
|
||||
* Chunks und Vector-Index werden NICHT hier behandelt,
|
||||
* sondern im Ingest-Job (TYPE_DOCUMENT_DELETE).
|
||||
*/
|
||||
public function delete(Document $document): void
|
||||
{
|
||||
// 1. FK-Zyklus auflösen
|
||||
$document->setCurrentVersion(null);
|
||||
$this->em->flush(); // <-- WICHTIG: zuerst FK nullen!
|
||||
|
||||
// 2. Versionen entfernen (falls kein cascade remove existiert)
|
||||
foreach ($document->getVersions() as $version) {
|
||||
$this->em->remove($version);
|
||||
}
|
||||
|
||||
$this->em->flush(); // <-- Versionen löschen
|
||||
|
||||
// 3. Dokument löschen
|
||||
$this->em->remove($document);
|
||||
$this->em->flush();
|
||||
}
|
||||
|
||||
/**
|
||||
* Berechnet SHA256 Checksum
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user