Schnittmenger zweier Listen als neue Liste liefern

Beispiele

! Das Programm durchsucht die PDF - Dateien im Dokumentenarchiv nach
! auffälligen Wörtern. Für jedes Dokument, in dem entsprechende Wörter
! vorkommen, wird 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 100000000 Zeichen enthält.
! Wenn das nicht reichen sollte, dann kann man die Werte einfach erhöhen.
! Da während der Verarbeitung temporär mehr Speicher benötigt wird,
! reservieren wir die vierfache Menge an Speicher.
DIMOPTION ON
DIMOPTIONBASE 1
DEF POOL 200000000
INIT VARSPACE
DIM SuchList$ [50000]; wordlist$ [100000000]; a$ [50000]
Suchlist$ =" Mahnung Rechtsanwalt Gerichtsvollzieher Verschwiegenheit "
Suchlist$ = Suchlist$ & " Sanierung Insolvenz "
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 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"
wordlist$=TEXT FROM PDF$ (asnr)
dl=SLEN(wordlist$)
IF NOT dl THEN CONTINUE
nbytes=SLEN(wordlist$)
DISP " Datei enthält " nbytes " Bytes \n"
wordlist$=LOWER$(wordlist$)
wordlist$=LIST WORDLIST$(wordlist$ ; 0)
words=LIST LEN(wordlist$)
IF NOT words THEN CONTINUE
wordlist$=LIST INTERSECTION$(wordlist$ ; Suchlist$)
words=LIST LEN(wordlist$)
IF words THEN
DISP " Dokument " asnr " enthält " words " Treffer \n"
END IF
ErrorNext:
NEXT
Diese Programm stellt nicht die effizienteste Methode des durchsuchens des Archivs dar, sie soll nur aufzeigen, welche Möglichkeit hier besteht.

Referenz

LIST INTERSECTION$( Liste1$ ; Liste2$ )
Die Funktion liefert als Ergebnis eine Liste, deren Elemente die Schnittmenge der Listen 1 und 2 bilden. Anders ausgedrückt sind in der Ergebnisliste nur die Elemente enthalten, die in beiden Listen vorhanden sind.
Die Funktion kann angewendet werden, um aus einer Liste von Begriffen - z.B. eine Text- oder eine PDF-Datei - all die Begriffe herauszusuchen, die in einer anderen Liste vorgegeben werden.

Siehe auch



Schatten