Files
go-documenter/doc/requirements/05-volltextsuche.md
T
Christoph Kroczek 6e6cb0dc8d M0: arc42-Konzeptdokument, Gherkin-Anforderungen und OpenAPI-Vertrag
- doc/architecture.md: arc42-Detaildokument mit Mermaid-Diagrammen
  (Bausteinsicht, Klassendiagramm, Statusmodell, 5 Sequenzdiagramme),
  Speicherkonzept, DEC-01..19-Entscheidungen mit Trade-offs
- doc/requirements/: 7 Features als Gherkin-Szenarien (TDD-Grundlage)
  mit Traceability-Tabellen Szenario <-> Stdlib-Testname
- doc/openapi.yaml: API-Vertrag fuer alle 9 Endpunkte (Quelle der Wahrheit)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-13 15:20:48 +02:00

2.6 KiB

Feature: Volltextsuche und Index-Rebuild

Als API-Client möchte ich Dokumente über ihren Inhalt und ihre Metadaten finden und den Suchindex jederzeit neu aufbauen können.

Funktionalität: Volltextsuche

  Szenario: Dokument ist über seinen Inhalt findbar
    Angenommen ein verarbeitetes Dokument, dessen Text "Stromabrechnung Stadtwerke" enthält
    Wenn GET /v1/search?q=stadtwerke aufgerufen wird
    Dann enthält das Ergebnis das Dokument mit id, title, original_name, archive_path und snippet

  Szenario: Suche berücksichtigt Metadaten
    Angenommen ein angereichertes Dokument mit dem Tag "versicherung"
    Wenn GET /v1/search?q=versicherung aufgerufen wird
    Dann wird das Dokument gefunden, auch wenn der Begriff nicht im Text vorkommt

  Szenario: Umlaute und Diakritika werden tolerant behandelt
    Angenommen ein Dokument, dessen Text "Gebührenbescheid" enthält
    Wenn nach "gebuhrenbescheid" gesucht wird
    Dann wird das Dokument gefunden

  Szenario: Treffer sind nach Relevanz sortiert
    Angenommen mehrere Dokumente enthalten den Suchbegriff unterschiedlich häufig
    Wenn gesucht wird
    Dann sind die Treffer nach BM25-Relevanz absteigend sortiert

  Szenario: OCR-Inhalte sind durchsuchbar
    Angenommen ein gescanntes Dokument, dessen Text nur per OCR gewonnen wurde
    Wenn nach einem Begriff aus dem OCR-Text gesucht wird
    Dann wird das Dokument gefunden

Funktionalität: Index-Rebuild über die API

  Szenario: Rebuild stellt einen konsistenten Index wieder her
    Angenommen ein inkonsistenter oder leerer FTS-Index bei gefüllter documents-Projektion
    Wenn POST /v1/admin/search/rebuild aufgerufen wird
    Dann wird der Index vollständig aus der Projektion neu aufgebaut
    Und alle zuvor findbaren Dokumente sind wieder findbar

  Szenario: Rebuild erfordert Authentifizierung
    Angenommen kein oder ein falscher API-Token
    Wenn POST /v1/admin/search/rebuild aufgerufen wird
    Dann antwortet das System mit 401

Traceability

Szenario Go-Test (Pakete internal/search, internal/api)
Dokument ist über seinen Inhalt findbar TestSearch_FindsDocumentByContent
Suche berücksichtigt Metadaten TestSearch_FindsDocumentByTag
Umlaute und Diakritika werden tolerant behandelt TestSearch_DiacriticsInsensitive
Treffer sind nach Relevanz sortiert TestSearch_ResultsOrderedByBM25
OCR-Inhalte sind durchsuchbar TestSearch_FindsOCRContent
Rebuild stellt einen konsistenten Index wieder her TestSearchRebuild_RestoresConsistentIndex
Rebuild erfordert Authentifizierung TestSearchRebuild_RequiresAuth