Witam,
Stoję przed następującym problemem:
Dany jest słownik złożony z posortowanych alfabetycznie 2 738 864 słów. Rzecz w tym, żeby sprawdzić, czy podany string w danym słowniku jest czy go nie ma.
Dotąd wpadłem na trzy teoretycznie możliwe rozwiązania problemu:
Sposób 1: Plik tekstowy ze słowami w kolejnych liniach
Jednak jest to rozwiązanie obrzydliwie niewydajne, przeskanowanie całego pliku zajmuje 3~4 sekundy.
Sposób 2: Zapisanie słów w tabeli MySQL z indeksem na kolumnie slowo
W tym momencie baza rozrośnie się o blisko 200MB i przyznam, że nie wiem na ile takie rozwiązanie będzie wydajne.
Sposób 3: Podzielenie słownika na kilka plików
Polegałby na stworzeniu wielu słowników na podstawie słownika głównego, np. _a.txt, _b.txt, _c.txt itd. Dzięki temu skrypt szukałby tylko wśród słów zaczynających się na tę samą literę, co powinno drastycznie skrócić czas wykonywania. Można podzielić pliki na jeszcze mniejsze _a_a.txt, _a_b.txt, _a_c.txt itd.
Doradźcie, proszę, jak to ugryźć?