Archiv nach Schlagwörtern durchsuchen

! DoScanArchive.obas (c) Andre Koppel Software 2014
! Das Programm durchsucht die PDF-Dateieen im Dokumentenarchiv
! nach auffälligen Wörtern. Für jedes Dokument, in dem entsprechende
! Wörter vorkommen, wir die passende Datensatznummer ausgegeben.

! Wir brauchen viel RAM, daher fordern wir ein MB an. Wir gehen hier mal
! davon aus, dass kein Dokument mehr als 500000 Zeichen enthält. Wenn das
! nicht reichen sollte, dann kann man die Werte einfach erhöhen
DIMOPTION ON
DIMOPTIONBASE 1
DEF POOL 200000000
INIT VARSPACE

DIM SuchList$[50000]; wordlist$[100000000]; a$[50000]
Suchlist$="Mahnung Rechtsanwalt Gerichtsvollzieher Verschwiegenheit Sanierung Insolvenz "
Suchlist$=Suchlist$&"HZA Obergerichtsvollzieher"

GesamtWoerter=0
GesamtTreffer=0
GesamtDokumente=0
Suchlist$=LIST WORDLIST$(LOWER$(Suchlist$);0)
DISP "Folgende Suchliste wird verarbeitet:\n" Suchlist$ "\n"
! Wenn wir wissen wollen, was aktuell an Eingangspost vorhanden ist,
! erzeugen wir dafür eine Liste. Wir verwenden dafür das Systemkommando
! LIST SYSTEM$ mit dem Parameter "archivelist". Mit ":p" geben wir an,
! das wir nur die Einträge des aktuellen Verfahrens sehen wollen. ":e"
! gibt an, dass wir nur am Posteingang interessiert sind.
a$=LIST SYSTEM$("archivelist:p:e")
l=LIST LEN(a$)
DISP "Einträge: " l "\n"
DISP a$ "\n"
! Wir wollen wissen, wie lange das alles dauert
SETSW 0
RUNSW

! Wir verarbeiten jetzt die Liste mit den Datensatznummern der Archiveinträge
FOR i=1 TO l
  ON ERROR GOTO ErrorNext
  asnr=IVAL(LIST GET$(a$;i))
  DISP "Verarbeite Eintrag: " i ", Nummer: " asnr "\n"
  Info$=PDF INFO$(asnr)
  DISP "PDF-Infos: " Info$ "\n"
  wordlist$=TEXT FROM PDF$(asnr)
  dl=SLEN(wordlist$)
  IF NOT dl THEN CONTINUE
  nbytes=SLEN(wordlist$)
  DISP "Datei enthält " nbytes " Bytes"
  wordlist$=LOWER$(wordlist$)
  wordlist$=LIST WORDLIST$(wordlist$;0)
  words=LIST LEN(wordlist$)
  DISP " und " words " Wörter\n"
  IF NOT words THEN CONTINUE
  GesamtDokumente=GesamtDokumente+1
  wordlist$=LIST INTERSECTION$(Suchlist$;wordlist$)
  words=LIST LEN(wordlist$)
  IF words THEN
    DISP "Dokument " asnr " enthält " words " Treffer\n"
    DISP "Ergebnisliste: " wordlist$ "\n"
    GesamtTreffer=GesamtTreffer+1
    GesamtWoerter=GesamtWoerter+words
  END IF
  ErrorNext:
NEXT
dauer=SWTIME
DISP GesamtWoerter " Wörter in " GesamtTreffer " von " GesamtDokumente " Dokumenten\n"
DISP "Gesamtdauer: " dauer "[Sek]" "\n"


Schatten