Jen pro zajímavost co mě napadlo, že by se dalo udělat. Bylo by to
náročnější na paměť. Soubor by měl být víceméně jen pro čtení. Za
předpokladu, že uživatel chce hledat běžný text, případně čísla...
Velikost v paměti by se zdvounásobila, pokud by chtěl hledat i s ohledem na
velikost znaků

Základní abeceda má myslím 26 znaků + 10 čísel + oddělovače jako
čárka, středník, pomlčka, podtržítko. tj 40 znaků (=> 40 možných
separátorů). Rozparsovat soubor pomocí prvního separátoru "a" nebo "A" (bez
ohledu na velikost písmene). Tím získáš první pole a_arr, které bude
zabírat +/- 10MB. Další znak bude "b". Rozparsuješ originální soubor
získáš b_arr atd. Rozparsuješ všechny a bude ti to v paměti zabírat cca
400MB (660MB sada i s uppercase oddělovačem).

Samotné hledání by probíhalo tak, že když uživatel zadá hledaný text
např. "ten, který", použiješ pole kde je čárka jako oddělovač. Projdeš
všechny pole a hledáš slovo "který" pouze na začátku každého elementu
pole. Když najdeš, zkontroluješ jestli předchozí element končí na slovo
"ten". Pokud ano, pak si našel slovo. Takto by se dalo mnohonásobně urychlit
hledání. Pro úsporu místa v paměti by se nepoužívaná pole dala dočasně
uložit na disk.

-- 
<http://forum.pspad.com/read.php?1,69189,69194>
PSPad freeware editor http://www.pspad.com

Odpovedet emailem