Autor | Zpráva | ||
---|---|---|---|
Tori Profil |
#1 · Zasláno: 30. 9. 2011, 17:13:23 · Upravil/a: Tori
Pěkné odpoledne.
Vymýšlím fulltextové vyhledávání pro statické webstránky (na CD) a chtěla bych použít spíš JavaScript, než portable server. Jednotlivá slova (musí být alespoň 3 znaky dlouhá) rozdělím do stromu 1aba: [id1, id2] aba: [id1, id2] id: { nazev: "stranka1", url: "str1.html", poradi: 25 } id: { nazev: "stranka1", url: "str1.html", poradi: 25 } Zajímalo by mne: - je to použitelné řešení nebo to mám udělat nějak jinak? má tohle řešení nějaké nevýhody/úskalí? - nevím, jaký je limit paměti, kterou může využít JS v prohlížeči. Objem dat bude okolo 10 - 15 tis. jednotlivých slov pro ten strom, + řádově několik tisíc dalších záznamů (v podstatě rejstříky autorů, názvů apod.), které se budou ukládat i prohledávat jiným způsobem (nejspíš pole[prvniPismeno][fráze]) a zaberou míň místa. Soubor s indexem může mít několik MB (odhad od boku) - bude ještě stačit paměť? Nebude se načítat stránka hodinu? Předem moc děkuju za rady / názory. |
||
hunter_dave Profil |
#2 · Zasláno: 2. 10. 2011, 08:19:20
Pokud chceš vyhledávat na straně klienta použij AJAX. Napiš si nějaký php script pro vyhledávání a volej ho javascriptem pomocí nějaké knihovny jako je jQuery.
|
||
Tori Profil |
#3 · Zasláno: 2. 10. 2011, 10:23:28
hunter_dave:
Chci vyhledávání ve statických .html stránkách, uložených na CD. Žádné php, žádná databáze, logicky teda ani AJAX. |
||
Leo Profil |
#4 · Zasláno: 2. 10. 2011, 10:33:55
S JS z CD bude potíž v IE, kde si uživatel musí v nastavení prohlížeče nejdřív JS na lokálních datech povolit (nevím, jestli je to defaultní nastavení i v IE+, ale dřív bylo). Kromě toho asi existuje omezení na paměť, ale mnohem dřív to asi selže na maximální době vykonávání skriptu, pokud se to nenapíše šikovně. Leo
|
||
Davex Profil |
#5 · Zasláno: 2. 10. 2011, 12:19:59
Leo:
„S JS z CD bude potíž v IE, kde si uživatel musí v nastavení prohlížeče nejdřív JS na lokálních datech povolit“ Nemusí. Stačí přidat zapínací komentář do hlavičky stránky. <head><!-- saved from url=(0014)about:internet --> <head><!-- saved from url=(0014)about:internet --> „Kromě toho asi existuje omezení na paměť“ Nevím jak nové verze, ale v IE6 se mi běžně podařilo donutit počítač JavaScriptem swapovat. Jen když skript běžel moc dlouho, tak se zobrazil dialog s varováním. |
||
_es Profil |
#6 · Zasláno: 2. 10. 2011, 13:15:57
Tori:
„logicky teda ani AJAX“ To nie je logické, AJAX je len stiahnutie súboru do pamäte v JS - nie je nutný server. Môžeš si dáta s pozíciou slov rozdeliť na mnoho súborov a načítavať cez AJAX len príslušný súbor - tým sa ušetrí pamäť - stačí vždy načítať len zlomok celkových dát. |
||
Tori Profil |
#7 · Zasláno: 2. 10. 2011, 13:42:41
_es:
Aha, omlouvám se. Tohle je zajímavý nápad, určitě vyzkouším, děkuju. Co by v tomto případě bylo lepší - nechat formulář normálně odeslat a pak podle query string načíst příslušný soubor, anebo blokovat odesílání formuláře a jen přepisovat obsah proměnné novým souborem? A vlastně - myslel jste načítat html soubory, které se mají prohledávat (řádově stovky, i když malých), anebo .js s odpovídající částí indexu / stromu? |
||
_es Profil |
#8 · Zasláno: 2. 10. 2011, 14:00:12
Tori:
„nechat formulář normálně odeslat“ Písala si o statických stránkach na CD, na (zmysluplné) odoslanie a prijatie formulára je už potrebný nejaký server. „myslel jste načítat html soubory, které se mají prohledávat (řádově stovky, i když malých), anebo .js s odpovídající částí indexu / stromu?“ Myslel som načítavať extra súbory určené len na to vyhľadávanie, teda buď súbory v nejakom vlastnom formáte - napríklad položky oddeľované medzerami alebo vo formáte JSON - ten stačí spracovať cez metódu eval a s výsledným objektom v JS normálne pracovať. Je ešte možné aj pracovať s JS súbormi s dátami, no tam to treba spraviť nejako tak, aby sa pri vyhľadávaní postupne nezvyšovala obsadená pamäť. |
||
Leo Profil |
#9 · Zasláno: 2. 10. 2011, 14:01:33
Davex:
„Nemusí. Stačí přidat zapínací komentář do hlavičky stránky.“ Díky za info. Leo |
||
Chamurappi Profil |
#10 · Zasláno: 4. 10. 2011, 00:59:28
Reaguji na _es:
„Môžeš si dáta s pozíciou slov rozdeliť na mnoho súborov a načítavať cez AJAX len príslušný súbor - tým sa ušetrí pamäť“ Možná by šlo využít hlavičku Range — pak by mohl být datový soubor jen jeden, ale musel by mít jasné uspořádání, aby JS věděl, o který rozsah bajtů si má říkat. Takové řešení by bylo kapku náročnější na přípravu, ale rozhodně zajímavé :-)
Reaguji na Tori: „Kromě toho asi existuje omezení na paměť“ Pokud vím, tak přísné limity na paměť jsou v iPhonech a iPadech, tuším, že je tam hranice 5 a 10 MB. Ale do těch stejně cédéčko stejně nedostaneš. V normálních desktopových prohlížečích jsem zatím na žádný limit nenarazil, i dva gigabajty jsou docela v pohodě. |
||
_es Profil |
#11 · Zasláno: 4. 10. 2011, 08:38:38
Chamurappi:
„Možná by šlo využít hlavičku Range“ Fungovalo by to aj pri statickom načítaní súboru z CD - ak by to nešlo cez server a vo všetkých prehliadačoch? |
||
Časová prodleva: 3 měsíce
|
|||
Tori Profil |
#12 · Zasláno: 5. 1. 2012, 17:50:45 · Upravil/a: Tori
Davex:
„Stačí přidat zapínací komentář do hlavičky stránky.“ ... a za komentářem (přidávám pro jistotu i před něj) musí být windowsí odřádkování, čili 0x0D, 0x0A. http://msdn.microsoft.com/en-us/library/ms537628(v=vs.85).aspx pro případné zájemce. Zatím to funguje pěkně, děkuju za rady. Nicméně se objevil problém při spouštění z USB/CD kvůli protokolu file:// a same-origin policy (nevím, jak je to česky, pardon). Zatím jsem našla - nezkoušela - knihovnu easyXDM, ale nechci brát kanón na něco, co je možná vrabec. Mohl by mne někde postrčit k jednoduššímu řešení, je-li jaké? Děkuju a pěkný večer. Tu variantu s hlavičkou Range jsem zatím nezkoušela, až až bude funkční toto. edit: JSONP a dynamické přidávání/vyhazování <script>ů vypadá taky zajímavě. |
||
Časová prodleva: 13 let
|
Toto vlákno je staré, již dlouho do něj nikdo nepřispíval.
Informace a odkazy zde uváděné už nemusejí být aktuální. Nechcete-li řešit zde uvedenou konkrétní otázku, založte si vlastní vlákno, nepište do tohoto. Vložíte-li sem nyní příspěvek, upoutáte pozornost mnoha lidí a někteří z nich si jen kvůli vám přečtou i všechny předcházející příspěvky. Předpokládáte-li, že váš text skutečně bude hodnotný, stiskněte následující tlačítko:
Běda vám, jestli to bude blábol.
0