Hallo Eddie,
Um solche Anfragen mit Teilwörtern zu beantworten, eignen sich typischerweise Tries ganz gut.
Mit einer Tiefe von 5 kannst Du schon (fast) alle Einträge einzeln ansprechen. Die Ergebnisse für Prefixe kannst Du in Knoten, die keine Blätter sind, ablegen. Ich nehme mal an, dass Du recht wenige (ca. 10) Ergebnisse einer Anfrage tatsächlich brauchst.
Damit solltest Du ungefähr doppelt so viele Einträge bekommen.
Die Frage ist nun, wie man den Baum darstellt. Ordner mit Dateien sollte eigentlich mit geeignetem Dateisystem funktionieren.
Alternativ dazu könnte man eine Tabelle dafür anlegen, die für alle Wörter und deren Prefixe Einträge enthält. Da bräuchte man aber wirklich für jeden Trie-Knoten ein Eintrag, wärend man bei der ersten Variante leicht Knoten zusammenfassen kann, wenn ein Knoten nur einen Unterknoten hat.
Es kann natürlich sein, dass sich deine Datenbankstruktur oder Anfragen auch noch so optimieren lassen und das ausreicht. Wenn die Berechnung der Ergebnisse aber wirklich recht aufwendig ist, könnte das eine Möglicheit sein, vorausberechnete Ergebnisse zu speichern.
Grüße
Daniel