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"