UI: Toggle Volltextsuche für Landtag-Suche #17

Closed
opened 2026-04-08 16:40:27 +02:00 by tobias · 1 comment
Owner

Problem

Die vier aktiven Adapter machen nach der April-2026-Adapter-Session fundamental verschiedene Suchen:

Bundesland Suchart Quelle
NRW Server-side Volltext OPAL nativ
MV Server-side Volltext ParlDok facet_fulltext=0 (#12)
LSA Client-side Title-Filter Quick-Win 730d-Window (#13)
BE Client-side Title-Filter Quick-Win 730d-Window (#13)

Folge: ein User, der "Schule" eingibt, bekommt für NRW dutzende Treffer, für MV ~20, für BE/LSA aber nur das, was zufällig "Schule" im Drucksachen-Titel stehen hat. Der User merkt diese Asymmetrie nicht — und kann auch nicht mal bewusst zwischen "schmaler präziser Title-Suche" und "breiter Volltextsuche" wählen.

Lösung

Toggle-Schalter (Checkbox) im Landtags-Suchblock (siehe #16) direkt unter dem Eingabefeld:

☐ Volltextsuche  (Standard: aus → nur in Titel und Urheber suchen)

Verhalten:

  • Aus (Default): Title-Filter wie bisher, gleiche Semantik in allen vier Adaptern, schnell, präzise
  • An: Server-side Volltext wo verfügbar; wenn der Adapter es nicht kann, eine sichtbare Hinweismeldung am Ergebnis: "Volltextsuche für BE noch nicht verfügbar — es wurde nur in Titeln gesucht (siehe #15)"

Implementierung

  1. Backend: /api/search-landtag bekommt einen neuen optionalen Query-Parameter fulltext=on. Der wird durch parlamente.search_all() an den jeweiligen Adapter durchgereicht.
  2. Adapter-API: Eine neue Capability supports_fulltext: bool als Attribut der Adapter-Klasse — True für NRWAdapter und ParLDokAdapter, False für PortalaAdapter (bis #14 + #15 durch sind).
  3. Adapter-search()-Signatur: Ein zusätzlicher fulltext: bool = False Parameter. Adapter, die es nicht können, raisen warnend oder fallen auf Title-Filter zurück + Adapter-Response trägt ein warning-Feld.
  4. Frontend: Checkbox neben dem Suchfeld, Default unchecked. Wert wird im Form-POST mitgeschickt.
  5. API-Response: Wenn der Adapter den fulltext-Wunsch nicht erfüllen konnte, bekommt das Response-Objekt ein warning-Feld mit Klartext-Erklärung. Frontend zeigt das oberhalb der Trefferliste an.

Akzeptanzkriterien

  • Toggle in der UI sichtbar, Default aus
  • Mit Toggle aus: Verhalten wie heute (Title-Filter)
  • Mit Toggle an + NRW: Volltext-Treffer
  • Mit Toggle an + MV: Volltext-Treffer
  • Mit Toggle an + BE/LSA: Title-Treffer + sichtbarer Hinweis "Volltextsuche noch nicht verfügbar"
  • Mit Toggle aus + jedem Bundesland: gleiches Verhalten (deterministischer Title-Filter)

Beziehung zu anderen Issues

  • Hängt von #16 ab (zwei getrennte Suchblöcke), weil der Toggle nur im Landtag-Block Sinn macht
  • Sobald #14 (LSA-Parser) und #15 (BE-HAR) durch sind, kann das supports_fulltext-Flag auf alle vier Adapter ausgedehnt werden und der Hinweis verschwindet automatisch
## Problem Die vier aktiven Adapter machen nach der April-2026-Adapter-Session fundamental verschiedene Suchen: | Bundesland | Suchart | Quelle | |---|---|---| | **NRW** | Server-side Volltext | OPAL nativ | | **MV** | Server-side Volltext | ParlDok `facet_fulltext=0` (#12) | | **LSA** | Client-side Title-Filter | Quick-Win 730d-Window (#13) | | **BE** | Client-side Title-Filter | Quick-Win 730d-Window (#13) | Folge: ein User, der "Schule" eingibt, bekommt für NRW dutzende Treffer, für MV ~20, für BE/LSA aber nur das, was zufällig "Schule" im Drucksachen-**Titel** stehen hat. Der User merkt diese Asymmetrie nicht — und kann auch nicht mal bewusst zwischen "schmaler präziser Title-Suche" und "breiter Volltextsuche" wählen. ## Lösung Toggle-Schalter (Checkbox) im Landtags-Suchblock (siehe #16) direkt unter dem Eingabefeld: ``` ☐ Volltextsuche (Standard: aus → nur in Titel und Urheber suchen) ``` Verhalten: - **Aus** (Default): Title-Filter wie bisher, gleiche Semantik in allen vier Adaptern, schnell, präzise - **An**: Server-side Volltext wo verfügbar; wenn der Adapter es nicht kann, eine sichtbare Hinweismeldung am Ergebnis: "Volltextsuche für BE noch nicht verfügbar — es wurde nur in Titeln gesucht (siehe #15)" ## Implementierung 1. **Backend:** `/api/search-landtag` bekommt einen neuen optionalen Query-Parameter `fulltext=on`. Der wird durch `parlamente.search_all()` an den jeweiligen Adapter durchgereicht. 2. **Adapter-API:** Eine neue Capability `supports_fulltext: bool` als Attribut der Adapter-Klasse — `True` für `NRWAdapter` und `ParLDokAdapter`, `False` für `PortalaAdapter` (bis #14 + #15 durch sind). 3. **Adapter-search()-Signatur:** Ein zusätzlicher `fulltext: bool = False` Parameter. Adapter, die es nicht können, raisen warnend oder fallen auf Title-Filter zurück + Adapter-Response trägt ein `warning`-Feld. 4. **Frontend:** Checkbox neben dem Suchfeld, Default unchecked. Wert wird im Form-POST mitgeschickt. 5. **API-Response:** Wenn der Adapter den `fulltext`-Wunsch nicht erfüllen konnte, bekommt das Response-Objekt ein `warning`-Feld mit Klartext-Erklärung. Frontend zeigt das oberhalb der Trefferliste an. ## Akzeptanzkriterien - [ ] Toggle in der UI sichtbar, Default aus - [ ] Mit Toggle aus: Verhalten wie heute (Title-Filter) - [ ] Mit Toggle an + NRW: Volltext-Treffer - [ ] Mit Toggle an + MV: Volltext-Treffer - [ ] Mit Toggle an + BE/LSA: Title-Treffer + sichtbarer Hinweis "Volltextsuche noch nicht verfügbar" - [ ] Mit Toggle aus + jedem Bundesland: gleiches Verhalten (deterministischer Title-Filter) ## Beziehung zu anderen Issues - Hängt von #16 ab (zwei getrennte Suchblöcke), weil der Toggle nur im Landtag-Block Sinn macht - Sobald #14 (LSA-Parser) und #15 (BE-HAR) durch sind, kann das `supports_fulltext`-Flag auf alle vier Adapter ausgedehnt werden und der Hinweis verschwindet automatisch
Author
Owner

Verworfen — der Use-Case "echte Server-side Volltextsuche" wird zurückgestellt, weil das Schema zwischen LSA und BE nicht uniform ist (LSA akzeptiert /VOLL, BE lehnt es mit Unable to generate query ab) und ein gemischtes Verhalten der Adapter (NRW+MV mit Volltext, BE+LSA ohne) verwirrender ist als ein einheitlicher Title-Filter überall.

Stattdessen wird die Suche in allen vier Adaptern auf Title + Urheber + Schlagwort über den gesamten Datenbestand der laufenden WP umgestellt, sortiert newest-first. Tracking dafür: #18.

Wenn die Volltextsuche später wieder gewünscht wird (sobald sie für alle vier Adapter gleich umsetzbar ist), kann dieses Issue reopened werden — die HAR-Findings im vorigen Kommentar sind wertvoll und sollten erhalten bleiben.

Verworfen — der Use-Case "echte Server-side Volltextsuche" wird zurückgestellt, weil das Schema zwischen LSA und BE nicht uniform ist (LSA akzeptiert `/VOLL`, BE lehnt es mit `Unable to generate query` ab) und ein gemischtes Verhalten der Adapter (NRW+MV mit Volltext, BE+LSA ohne) verwirrender ist als ein einheitlicher Title-Filter überall. Stattdessen wird die Suche in allen vier Adaptern auf **Title + Urheber + Schlagwort über den gesamten Datenbestand der laufenden WP** umgestellt, sortiert newest-first. Tracking dafür: #18. Wenn die Volltextsuche später wieder gewünscht wird (sobald sie für alle vier Adapter gleich umsetzbar ist), kann dieses Issue reopened werden — die HAR-Findings im vorigen Kommentar sind wertvoll und sollten erhalten bleiben.
Sign in to join this conversation.
No description provided.