Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL?][Pliki?] Sprawdzenie, czy słowo istnieje w słowniku
Forum PHP.pl > Forum > Przedszkole
messmaker
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źć?
wookieb
Słowniki plikowe odpadają na początku. Za wolno bedzie trwało ich przeglądanie. Najsensowniejszym rozwiązaniem będzie właśnie baza. Zaindeksuje sobie to co potrzeba i nie będziesz musiał się o nic martwić. W swoim życiu spotykałem się z większymi bazam danych i mysql dawał radę.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.