Når jeg i øjeblikket ignorerer SQL-delen af problemet, er den algoritme, jeg ville bruge, ret enkel:start med at tage hvert ord i din ordbog og producere en version af det med bogstaverne i sorteret rækkefølge, sammen med en peger tilbage til den originale version af det ord.
Dette ville give en tabel med poster som:
sorted_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 */
Når vi så modtager et input (f.eks. "tac"), sorterer vi dets bogstaver, slår det op i vores tabel over sorterede bogstaver, der er knyttet til tabellen over de originale ord, og det giver os en liste over de ord, der kan oprettes fra det input.
Hvis I gjorde dette, ville jeg have tabellerne til det i en SQL-database, men sandsynligvis bruge noget andet til at forbehandle ordlisten til den sorterede form. Ligeledes ville jeg nok lade sorteringen af bogstaverne i brugerens input være til det, jeg brugte til at oprette front-end, så SQL ville blive overladt til at gøre, hvad den er god til:relationel databasestyring.