Einzelnen Beitrag anzeigen

Benutzerbild von juergen
juergen

Registriert seit: 10. Jan 2005
Ort: Bönen
1.164 Beiträge
 
Delphi 11 Alexandria
 
#1

Konzeptfrage: **schnelles** Suchverfahren in Strings gesucht

  Alt 15. Dez 2009, 20:22
Hallo zusammen,

bis jetzt hatte mir das Suchen innerhalb xList-Abkömmlingen über pos gereicht. Auch bei 30.000 Einträgen ist das Ganze noch ziemlich flott.
Nun nutzen die Anwemder mein Tool anders wie geplant und lesen sich alle Dateien aller möglichen Partitionen in eine TStringList ein....
(zw. 100.000 - 600.000 Einträgen!!!)

Hier genügt das oben genannte Suchverfahren aus zeitlichen Gründen nicht mehr.

Jetzt habe ich schon einiges gelesen, u.a. über Boyer-Moore mit teilweise auch widersprüchlichen Anwendungsempfehlungen.
Man kann da sehr viel lesen.
Durch die Komplexität fällt es mir schwer zu erkennen, welches Verfahren für meine Anforderungen nun zu empfehlen ist.
Hier bräuchte ich Eure Ratschläge.

Meine Vorgaben sind:
- es wird immer nur mit 1 Suchwort gesucht
- gefunden werden sollen dann alle Vorkommen (Suchwort=ich wird auch in nicht gefunden)
- die zu durchsuchenden Strings sind Dateinamen von Dateien
- jeder Treffer muss in eine Listbox "landen"
- ab dem 3. Buchstaben wird erst angefangen zu suchen

Meine Fragen:
1.) welche Datenhaltung ist hier zu empfehlen? Im Moment findet diese in 2 TStringList statt (1 TStringList für Pfad + Dateiname, in der 2. TStringList stehen nur die Dateinamen, die zu durchsuchen sind).
2.) welcher Such-Algorithmus ist zu empfehlen?
3.) Gelesen hatte ich auch oft von sortierten (?) Array. Spielt das hier überhaupt eine Rolle? Die Daten in der TStingList sind nach Dateiname sortiert. Das Suchwort kann ja überall vorkommen.

Vielen Dank schon mal für Eure Unterstützung!
Jürgen
Indes sie forschten, röntgten, filmten, funkten, entstand von selbst die köstlichste Erfindung: der Umweg als die kürzeste Verbindung zwischen zwei Punkten. (Erich Kästner)
  Mit Zitat antworten Zitat