Als ik voorlopig het SQL-gedeelte van het probleem negeer, is het algoritme dat ik zou gebruiken vrij eenvoudig:begin met het nemen van elk woord in je woordenboek en maak er een versie van met de letters in gesorteerde volgorde, samen met een verwijzing naar naar de originele versie van dat woord.
Dit zou een tabel opleveren met items als:
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 */
Wanneer we dan een invoer ontvangen (zeg, "tac"), sorteren we de letters, zoeken het op in onze tabel met gesorteerde letters die zijn samengevoegd met de tabel van de originele woorden, en dat geeft ons een lijst van de woorden die kunnen worden gemaakt van die ingang.
Als ik als ik dit zou doen, zou ik de tabellen daarvoor in een SQL-database hebben, maar waarschijnlijk iets anders gebruiken om de woordenlijst voor te verwerken in de gesorteerde vorm. Evenzo zou ik het sorteren van de letters van de invoer van de gebruiker waarschijnlijk overlaten aan wat ik ook gebruikte om de front-end te maken, zodat SQL zou kunnen doen waar het goed in is:relationeel databasebeheer.