Ignorując na razie część problemu dotyczącą SQL, algorytm, którego użyłbym, jest dość prosty:zacznij od pobrania każdego słowa ze słownika i utworzenia jego wersji z literami w kolejności posortowanej wraz ze wskaźnikiem wstecz do oryginalnej wersji tego słowa.
Dałoby to tabelę z wpisami takimi jak:
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 */
Następnie, gdy otrzymamy dane wejściowe (powiedzmy „tac”), sortujemy jego litery, szukamy go w naszej tabeli posortowanych liter połączonych z tabelą oryginalnych słów, co daje nam listę słów, z których można utworzyć to wejście.
Jeśli ja gdybym to robił, miałbym tabele do tego w bazie danych SQL, ale prawdopodobnie użyję czegoś innego do wstępnego przetworzenia listy słów na posortowaną formę. Podobnie, prawdopodobnie zostawiłbym sortowanie liter danych wejściowych użytkownika do tego, czego używałem do tworzenia interfejsu, więc SQL pozostałby z tym, w czym jest dobry:zarządzaniem relacyjnymi bazami danych.