Ahoj všichni. Chtěl bych se zeptat, jak byste dělali fulltextové prohledávání webu.
Nejde mi o konkrétní kód scriptu ani nic podobného, jen nástin přístupu.
Už jsem tu někde četl názor, že je dobré si udělat databázi klíčových slov s přiřazenými odkazy. Tohle mi ale nepřijde dobrý, jelikož si myslím, že je těžké ji udržovat aktuální.
Napadlo mě prostě po zadání dotazu nechat prohlídnout všechny soubory a odfiltrovat tagy atd. V rámci jednoho webu by to snad šlo (nebo to je moc náročné na čas a počítač?).
Jak se to teda běžně dělá, nebo jak to děláte vy?
Dík a mějte se.
zkus to a uvidis co to napacha
mozna je dobry mit web stavenej tak ze mas nejakej script (php) k vytvoreni a funkci stranky a text do nej natahnes z externiho souboru
kde prvni radek textoveho souboru budeobsahovat klicova slova (nebudou se zvobrazovat) a pri prohledavani vyprat rislusny txt a zviorazit jeho obsah
kdysi jsem napsal skript kterej prohledal aktualni adresar pokud nasel soubory typu html vypsal tabulku odkazu typu <A alt=popis >nazev </A>
nazev a popis precet z prvniho radku prisluseho html
prvni radek html vypadal takto
<!-- Nazev;popis //--!>
Hmm, dík za tip, ale přiznám se, že takhle komplet generovaný stránky je na mě moc a psát ke každýmu řádku klíčový slova se mi taky moc nechce. Je to ale zajíavej nápad.
Já zkusím napsat skript na to otrocký komplet prohledávání a uvidím, co to udělá. Přinejhorším mě Míra přerazí (ale já myslím, že ne) :-))
Hmm, a co si napsat skript, kterej vzdycky udela image souboru s nazvem napr. img_soubor.php a ten bude bez tagu (vysekas prikazem $content=ereg_replace("<[^>]>","",$content); ) a potom jednoduse prohledavat fsechny tyhle soubory, bude to sice porad celkem pomaly, ale aspon neco... Nebo by slo ty image taky psat do DB, ale to zalezi na rozsahu tviho webu, estli by to unes... Yo a radsi nech pekne soubory projit pres PHP nebo ti to bude delat i to, co nema, zkus misto FOpen("soubor.php","r"); pouzit FOpen("http://negdo.wz.cz/soubor.php","r");
S tím imagem to má cosi do sebe. Daly by se ty soubory dobře vytvářet a automaticky kontrolovat podle data image a zdrojáku. Docela by se to zrychlilo, jelikož tagů je na stránce přeci jen víc (tedy jak na který) a taky při prohledávání bych je nemusel filtrovat. S tou databází bych to asi nespojoval. To už by mi ji zbytečně zasekalo.
Docela inspirativní nápad. Dík.
myslim ze jestli ti jde skutecne jen o fulltext (takze zadna klicova slova) tak jsou ty image skoro zbytecny - proste nejak ziskas seznam souboru ktery chces prohlidnout (budto ho napises treba do nejakyho pole nebo prohledas adresarovou strukturu nejakyma dir funkcema) ..no a pak to normalne projedes (budto fopen("http://...") nebo ob_*+include), vysekas tagy a pripadne seradis podle poctu shod..
jestli ti jde o rychlost tak bych mozna automaticky ukladal vysledky skriptu osekany o tagy pravidelne do nejakyho souboru (vsechny do jednoho, oddeleny nejakou hlavickou s nazvem toho souboru) a pak projizdel jenom ten soubor..
bohdan Ano, ja to myslel tag si vysekat tagy a pak to ukladat bud do DB, nebo do souboru, moznost ukladat to do 1 souboru taky jde...
jo promin, neprecet jsem si to poradne:)
rekl bych ale ze na podminkach wz je uplne jedno jestli ty tagy vysekavas za behu, jestli projizdiz jenom image nebo jestli to ukladas do db/jednoho souboru.. stejne fulltext na strankach nikdo nepouziva :-))
a jestli se stranka generuje 0.1 nebo 0.05 sec... ja vim ze je to prasarna, ale budto bych to resil poradne pres databazi nebo bych se na to vykaslal uplne a prohledaval ty soubory tak jak jsou.
Mno to ye pravda, stejne to nema vyznam, bud to chce poradne pres DB nebo vubec.... WZ je stejne tag zatizenej, ze si myslim, ze to bude "trochu" pomalejsi....
jeste k te rychlosti..
to odstranovani tagu by asi bylo lepsi udelat pomoci
preg_replace(/<[^>]>/,'',$content)
u delsich textu je ten rozdil uz docela zretelny
omlouvam se :-),
preg_replace('/<[^>]>/','',$content)
omlouvam se :-),
preg_replace('/<[^>]>/','',$content)
To verim, ale gdyz se to dela jednou, tag je to uplne jedno...
A k čemu slouží Strip_tags() ? Já jsem do dneška očesání tagů řešil přes tuto funkci. Nebo je to pomalé ? Nespolehlivé ? Náročné ?
A ve spojení se soubory co třeba fgets()?
Jinak dík pánové za rady. Zdá se mi, že ten fulltext asi fakt naprogramuju :-)
Mno ja pouzivam na cteni souboru FRead, fgets ujde, ale cte to radek, to vetsinou nepotrebuju, ja ctu vetsinou celey fajl - $content=fread(FOpen("/root/www/php/test.conf","r"),filesize("/root/www/php/test.conf");
Doufam, ze sem to napsal spravne.... At zije chaos v kodu, taghle psat to se v tom pak nigdo nevyzna :-)
Yo a este jedna chybka, misto
$content=ereg_replace("<[^>]>","",$content);
by melo bejt
$content=ereg_replace("<[^>]*>","",$content);
u preg nefim, jag to je, s tim moc neumim, sem zvyklej na grepa :-)
Jinak strip_tags(); sem na rychlosti netestoval, tag nefim, proc neco resit jednoduse, gdyz to de slozite :-)
No já ten fgets uváděl proto, že rovnou extrahuje ty HTML tagy, ale taky nevím ,jestli to použiji.
sakra.. :-)
preg_replace('/<[^>]*>/','',$content)
jo k tomu chaosu.. chybi ti tam zavorka ;-)
A teď jsi zapomněl středník :-)
preg_replace('/<[^>]*>/','',$content)
--->
preg_replace('/<[^>]*>/','',$content);
:-) Jsem zvědav, kdo to napíše správně hned napoprvé :-)))
Andrew Mno fgets(); precte 1 radek... fgetss(); precte radek a odstrani z nej tagy -> Gdyz budes mit jeden tag na fic radku, tag se to posere...
2Pavel: strednik neni imho soucasti prikazu :-)
na konverzi html do textu by to mozna chtelo udelat trochu lepsi funkci nez striptags (treba replace entit - napr. pomoci get_html_translation_table()).
neskodilo by taky odstraneni skriptu a stylu...
Bohdan Mno na to by taky sel urcite napsat nakej vyraz, ted me nic nenapada, jag to nacpat do jednoho, ale zkusim se nad tim zamyslet...
Sorry, já jsem se nějak přehlíd s tím fgets() a fgetss(). Jinak já jsem psal, že to asi nepoužiju, že to je jen pro úplnost.
No jo, odstranění scriptů atd. je problém už na úroveň striptags.