gwoe-antragspruefer/docs/reference/adapter-capabilities.md

4.5 KiB
Raw Blame History

Adapter-Capabilities: Vergleichsmatrix

Stand: 2026-04-10. Automatisch aus parlamente.py + bundeslaender.py extrahiert.

Übersicht

16 Bundesländer + Bundestag, alle aktiv.

BL Adapter WP Suche Fuzzy Typ-Filter API
BUND BundestagAdapter 21 Server (DIP REST) + Title-Filter Nein Server (f.drucksachetyp) REST JSON
NRW NRWAdapter 18 Server (HTML-Form) + AND-Filter Nein Server (dokTyp) HTML POST
LSA PortalaAdapter 8 Server (eUI) + Title-Filter Nein Server (ETYPF=Antrag) eUI 2-Step
BE PortalaAdapter 19 Server (eUI, 730d-Fenster) + Title-Filter Nein Client-only eUI 2-Step
BB PortalaAdapter 8 Server (eUI) + Title-Filter Nein Server (ETYPF=Antrag) eUI 2-Step
RP PortalaAdapter 18 Server (eUI) + Title-Filter Nein Server (ETYPF=Antrag) eUI 2-Step
MV ParLDokAdapter 8 Server (ParlDok JSON) + Typ-Filter Nein Client (type=="Antrag") REST JSON
HH ParLDokAdapter 23 Server (ParlDok JSON) + Typ-Filter Nein Client (type=="Antrag") REST JSON
TH ParLDokAdapter 8 Server (ParlDok JSON) + Typ-Filter Nein Client (Substring "Antrag" in type) REST JSON
SH StarFinderCGI 20 Server (CGI, dtyp=antrag) + Title-Filter Nein Server (dtyp) Legacy CGI
HE StarWebHEAdapter 21 Server (eUI, VTDRS) + Title+Typ-Filter Nein Client ("antrag" in typ) eUI 2-Step
HB PARiSHBAdapter 21 Server (PARiS-Servlet) + Typ-Filter Nein (Thesaurus only) Client ("antrag" in typ) HTML POST
BW PARLISAdapter 17 Server (eUI, async Polling) + Title-Filter Nein Server (lines.l4=Antrag) eUI async
BY BayernAdapter 19 Server-Volltext (Solr) + Typ-Filter Ja (Solr) Client (typ=="antrag") HTML Scraping
SL SaarlandAdapter 17 Server-Volltext (Umbraco) + Typ-Filter Umbraco-Relevanz Client (DocumentType) REST JSON
SN SNEdasXmlAdapter 8 Statisch (manueller XML-Export) + Title-Filter Nein N/A XML Import

Such-Architekturen

Volltext-Suche server-seitig

Nur BY (TYPO3-Solr) und SL (Umbraco) bieten echte Volltextsuche über den gesamten Dokumentkorpus. Alle anderen filtern entweder nur den Titel client-seitig oder nutzen eingeschränkte Server-Filter (WP + Datum).

Client-seitige Title-Filterung

Die Mehrheit (portala/eUI, ParlDok, StarFinder, BUND) holt einen breiten Satz von Treffern nach WP/Datum/Typ und filtert dann im Python-Code per all(t in title.lower() for t in query_terms). Das bedeutet:

  • Nur Titel-Matches — Inhalte der Drucksachen werden nicht durchsucht
  • AND-Logik — alle Suchbegriffe müssen im Titel vorkommen
  • Keine Fuzzy-Toleranz — Tippfehler oder Synonym-Drift werden nicht abgefangen
  • Performance ok — max. 1000-1500 Treffer pro Request (via chunksize)

Sonderfälle

BL Besonderheit
SN Kein Scraping möglich (robots.txt); manueller wöchentlicher XML-Export aus EDAS
BE document_type=None weil Berlin's ETYPF andere Values nutzt; 730-Tage-Fenster als Workaround
TH Anträge heißen "Antrag gemäß § 79 GO" → Substring-Match statt Exact-Match; kinds=["Drucksache", "Vorlage"]
BW Async 2-Step mit Search-ID-Polling (2-15 Versuche × 2s Pause), JSON-in-HTML-Comments
HE Perl-Data::Dumper in HTML-Comments, Hex-Escape-Decoding (\x{e9}é)
NI Nicht implementiert — NILAS-StarWeb braucht Session-Cookie, HAR-Capture nötig

Historien-Tiefe (ältere WPs)

Alle Adapter sind aktuell auf eine feste Wahlperiode konfiguriert. Keiner unterstützt Queries über mehrere WPs hinweg. Ältere Drucksachen aus früheren WPs sind nicht abrufbar ohne Adapter-Rekonfiguration.

Für eine künftige Multi-WP-Suche müsste pro Adapter geprüft werden, ob das Backend WP-übergreifende Queries unterstützt:

API-Typ Multi-WP möglich?
portala/eUI Ja (WP-Term aus dem JSON-Tree weglassen)
ParlDok Ja (facet_lp weglassen)
StarFinder/PARiS Ja (WP-Param weglassen)
TYPO3-Solr (BY) Ja (wahlperiodeid[] weglassen)
DIP-API (BUND) Ja (f.wahlperiode weglassen)
Umbraco (SL) Ja (Filter.Periods=[])
EDAS-XML (SN) Nur innerhalb des exportierten Datenbestands

Fehlende Adapter

BL Status Blocker
NI (Niedersachsen) Issue #22 offen NILAS-StarWeb erfordert Session-Cookie, HAR-Capture vom User nötig