Wenn ich den SQL-Teil des Problems für den Moment vernachlässige, ist der Algorithmus, den ich verwenden würde, ziemlich einfach:Beginnen Sie damit, jedes Wort in Ihrem Wörterbuch zu nehmen und eine Version davon mit den Buchstaben in sortierter Reihenfolge zusammen mit einem Zeiger zurück zu erstellen zur ursprünglichen Version dieses Wortes.
Dies würde eine Tabelle mit Einträgen wie:
ergebensorted_text word_id
act 123 /* we'll assume `act` was word number 123 in the original list */
act 321 /* we'll assume 'cat' was word number 321 in the original list */
Wenn wir dann eine Eingabe erhalten (z. B. "tac"), sortieren wir die Buchstaben, schlagen sie in unserer Tabelle der sortierten Buchstaben nach, die mit der Tabelle der ursprünglichen Wörter verbunden ist, und das gibt uns eine Liste der Wörter, aus denen erstellt werden kann diese Eingabe.
Wenn ich würde ich dies tun, hätte ich die Tabellen dafür in einer SQL-Datenbank, aber wahrscheinlich etwas anderes verwenden, um die Wortliste in die sortierte Form vorzuverarbeiten. Ebenso würde ich das Sortieren der Buchstaben der Benutzereingabe wahrscheinlich dem überlassen, was ich zum Erstellen des Frontends verwendet habe, sodass SQL das tun müsste, was es gut kann:relationale Datenbankverwaltung.