| | |
Autor | Správa |
---|
Registrovaný: 21.10.08 Príspevky: 230 Témy: 62 Bydlisko: Bratislava | Napísal pogo: 01.07.2009 13:49 | |
|
Nikdy som nerobil hladanie a neviem ako najefektivnejsie ho spravit.. mohli by ste mi napisat ako by to bolo najlepsie?.. pripadne dat link na nejaku stranku kde by to bolo vysvetlene..
|
|
Registrovaný: 11.08.07 Príspevky: 4088 Témy: 34 Bydlisko: Brno | Napísal Ďuri: 01.07.2009 14:02 | |
|
Ale ake hladanie? Coho? Pouzivas databazu?
|
|
Registrovaný: 21.10.08 Príspevky: 230 Témy: 62 Bydlisko: Bratislava | Napísal autor témy pogo: 01.07.2009 14:08 | |
|
Hladanie v clankoch, ktore mam ulozene v databaze...
|
|
Registrovaný: 26.11.06 Prihlásený: 22.01.24 Príspevky: 4118 Témy: 319 Bydlisko: HE/BA | Napísal Flety: 01.07.2009 14:26 | |
|
Keď už je reč o tom hľadaní, skúšal si čo také hľadanie robí? Lebo by pred tým než napíšeš takúto tému bolo treba vyskúšať to hľadanie.
|
|
Registrovaný: 21.10.08 Príspevky: 230 Témy: 62 Bydlisko: Bratislava | Napísal autor témy pogo: 01.07.2009 14:40 | |
|
Hej.. viem co robi hladanie ..
Mam napisanych napr. 5 clanokv.. a ked dam hladat nejake slovo, ktore sa nachadza v 3 z tych 5 clankov, tak mi zobrazi odkazy na tie clanky.. . to by som vedel spravit.. len neviem ako vyriesim ich poradie (cize prve by mal byt odkaz na ten clanok, ktory obsahuje najviac slov)
ako na wikipedii http://sk.wikipedia.org/w/index.php?tit ... s%C5%A5+na
|
|
Registrovaný: 11.08.07 Príspevky: 4088 Témy: 34 Bydlisko: Brno | Napísal Ďuri: 01.07.2009 14:52 | |
|
Klasicke hladanie by som riesil pomocou SQL "LIKE" operatoru, ale kedze potrebujes zoradit podla poctu slov, asi by som nacital vsetky clanky do pola a pomocou preg_match_all() by som zistoval pocet najdenych slov.
edit: radsej pouzi substr_count().
|
|
Registrovaný: 21.10.08 Príspevky: 230 Témy: 62 Bydlisko: Bratislava | Napísal autor témy pogo: 01.07.2009 15:08 | |
|
dobry napad Dury , skusim to natiadnut do pola
|
|
Registrovaný: 26.11.06 Prihlásený: 22.01.24 Príspevky: 4118 Témy: 319 Bydlisko: HE/BA | Napísal Flety: 01.07.2009 15:28 | |
|
Myslím, že to bude náročne pre parser, skúšal by som nájsť nejakú funkciu v MySQL, ktorá vie spočítať dĺžku výsledku. A keď nie tak si aspoň natiahni len tie výsledky, ktoré sa zhodujú s DB a potom porovnávaj výskyt.
|
|
Registrovaný: 09.07.08 Prihlásený: 17.01.15 Príspevky: 1585 Témy: 96 | |
Registrovaný: 21.10.08 Príspevky: 230 Témy: 62 Bydlisko: Bratislava | Napísal autor témy pogo: 01.07.2009 17:38 | |
|
to rooobertek: a ako by sa dal ten fulltext vyuzit v praxi?(nejaky kod), bo na tej stranke tomu moc nerozumiem...
|
|
Registrovaný: 09.07.08 Prihlásený: 17.01.15 Príspevky: 1585 Témy: 96 |
vytvoríš si tabulku (ty už ju máš). Na jeden stĺpec pridáš fulltextový index (jednoduchý zákrok, znie to pre teba možno odstrašujúco, ale nie je to nič ťažké).
Hľadanie sa robí takýmto spôsobom : Kód: SELECT * FROM tabulka WHERE MATCH(stlpec) AGAINST("to co hladas") Toto ti vyhľadá a automaticky zoradí výsledky podľa toho, čo je ako relevantné. No ale ako hovorím, je to dobré hlavne pri veľa záznamoch. Pridanie toho fulltextového indexu : Kód: ALTER TABLE tabulka ADD FULLTEXT(stlpec);
|
|
Registrovaný: 21.10.08 Príspevky: 230 Témy: 62 Bydlisko: Bratislava | Napísal autor témy pogo: 01.07.2009 22:56 | |
|
aha.. dik, ale nejak mi nechce fungovat toto..
Kód: $hladat = mysql_query("SELECT * FROM clanky WHERE MATCH(clanok) AGAINST('text')"); echo mysql_num_rows($hladat);
vypise mi vzdy 0 aj ked sa v zazname nachadza slovo text.. Typ tabulky mam ako myISAM bo ako innoDB mi tam neslo dat ten fulltext
|
|
Registrovaný: 31.05.09 Prihlásený: 02.06.17 Príspevky: 562 Témy: 37 Bydlisko: BegyBen |
Fulltext podporuje len typ tabulky myISAM ...
Skus takto:
Kód: $hladat = mysql_query("SELECT * FROM clanky WHERE MATCH(clanok) AGAINST('text' IN BOOLEAN MODE)"); echo mysql_num_rows($hladat);
_________________ "Ženy jsou jako domény. Ty nejlepší jsou zabrané, ale pořád můžete získat nějaké z exotických zemí." |
|
Registrovaný: 09.07.08 Prihlásený: 17.01.15 Príspevky: 1585 Témy: 96 |
nezabudol si vytvoriť fulltext index?
_________________ neříkejte, že něco nejde udělat, protože se vždycky najde nějaký blbec, co neví, že to nejde – a udělá to! |
|
Registrovaný: 31.05.09 Prihlásený: 02.06.17 Príspevky: 562 Témy: 37 Bydlisko: BegyBen |
rooobertek píše: nezabudol si vytvoriť fulltext index? Ved pisal ze ho tam dal. Pogo: Citácia: Typ tabulky mam ako myISAM bo ako innoDB mi tam neslo dat ten fulltext
_________________ "Ženy jsou jako domény. Ty nejlepší jsou zabrané, ale pořád můžete získat nějaké z exotických zemí." |
|
Registrovaný: 09.07.08 Prihlásený: 17.01.15 Príspevky: 1585 Témy: 96 |
snacker, to som si nevšimol, zásadne nečítam dôležitejšie informácie
Potom by sa ešte mohlo stať, že si trafil slovo z blacklistu http://dev.mysql.com/doc/refman/5.1/en/ ... words.html
_________________ neříkejte, že něco nejde udělat, protože se vždycky najde nějaký blbec, co neví, že to nejde – a udělá to! |
|
Registrovaný: 31.05.09 Prihlásený: 02.06.17 Príspevky: 562 Témy: 37 Bydlisko: BegyBen |
Fuha, zaujimavy blacklist, o nom som nevedel. Ale podla mna to neni v tom, pretoze pravdepodobne hladal slovo
AGAINST( 'text' )");
Raz som riesil nieco podobne a tiez mi to nechcelo vyhladat nejake slovo, skusal som hocico a nakoniec pomohlo ked som hladal v booleanovskom mode. Neviem presne preco, no odvtedy "ho nosim stale pri sebe"
_________________ "Ženy jsou jako domény. Ty nejlepší jsou zabrané, ale pořád můžete získat nějaké z exotických zemí." |
|
Registrovaný: 09.09.07 Prihlásený: 07.11.16 Príspevky: 3114 Témy: 233 Bydlisko: Nové Zámky |
Ja riesim vyhladavanie tak, ze si vytvaram XML subor s celym obsahom webu (potrebujem ho aj k niecomu inemu).. Obsahuje aj vsetok text malymi pismenami a bez diakritiky.. a potom hladany text vyhladavam v nom
_________________ "It took a lot of work, but this latest Linux patch enables support for machines with 4096 CPUs, up from the old limit of 1024." "Do you have support for smooth full-screen flash video yet?" "No, but who uses that?"
- ak dlho neodpisujem do témy, zabudol som na ňu, takže ma upozornite SS, ak chcete moju odpoveď |
|
Registrovaný: 26.11.06 Prihlásený: 22.01.24 Príspevky: 4118 Témy: 319 Bydlisko: HE/BA | Napísal Flety: 02.07.2009 17:47 | |
|
Kvôli čomu tie slová nefungujú, čo sú v tom blackliste? To je tak naschval alebo je to chyba DB
|
|
Registrovaný: 09.07.08 Prihlásený: 17.01.15 Príspevky: 1585 Témy: 96 |
Sú to slová s častým výskytom, ktoré ale výsledky vyhľadávania iba deformujú, keďže nie sú kľúčové. Tak to vidím ja, možno to je nejako inak...
_________________ neříkejte, že něco nejde udělat, protože se vždycky najde nějaký blbec, co neví, že to nejde – a udělá to! |
|
Registrovaný: 26.11.06 Prihlásený: 22.01.24 Príspevky: 4118 Témy: 319 Bydlisko: HE/BA | Napísal Flety: 02.07.2009 19:05 | |
|
Ešteže sú anglické a u Slovákov sa veľmi nepoužívajú
|
|
Registrovaný: 09.07.08 Prihlásený: 17.01.15 Príspevky: 1585 Témy: 96 |
ak si chceš dať slovenské, musíš prekompilovať mysql
_________________ neříkejte, že něco nejde udělat, protože se vždycky najde nějaký blbec, co neví, že to nejde – a udělá to! |
|
Registrovaný: 21.10.08 Príspevky: 230 Témy: 62 Bydlisko: Bratislava | Napísal autor témy pogo: 02.07.2009 20:24 | |
|
Doplnil som tam IN BOOLEAN MODE a uz to slape:).. Potom som skusal tie slova z blacklistu a on ich fakt nevedel najist.. dost divne...
|
|
Registrovaný: 31.05.09 Prihlásený: 02.06.17 Príspevky: 562 Témy: 37 Bydlisko: BegyBen |
Vravel som ti mal som presne podobny problem raz
_________________ "Ženy jsou jako domény. Ty nejlepší jsou zabrané, ale pořád můžete získat nějaké z exotických zemí." |
|
Registrovaný: 21.02.07 Prihlásený: 21.02.10 Príspevky: 3984 Témy: 96 |
pogo: to akoby si hladal na slovensku "a, o, i, ale, alebo, keď, možno, ..." Proste to sú slová ktoré sú spojky, častice, (niekedy číslovky) ... Nie sú plnovýznamové, a prote by mohlo dôjsť k deformácií výsledku typu: Hľadáš "Janko a Marienka", ale prvých 100 výsledkov budú stránky kde sa v texte vyskytuje a najviackrát
BlackShadow: do XML? Keby si mal stránku kde by si mal 300 článkov (dávam menej lebo 12 000 je veľa, že? ) chceš povedať, že:
1. vytvorenie súboru bude rýchle
2. jeho čítanie je rýchle
3. hľadanie v ňom je rýchle
???
Podľa mňa dosť neefektívne riešenie
|
|
Registrovaný: 21.10.08 Príspevky: 230 Témy: 62 Bydlisko: Bratislava | Napísal autor témy pogo: 03.07.2009 17:09 | |
|
A ako spravim to poradie? ..
Myslim to ze to bude zoradene podla poctu najdenych slov.. bo toto mi to tak nezoradi
//edit: skusal som toto ale problem je v tom ze kazdemu zaznamu da score 1
Kód: $hladat = mysql_query("SELECT *,MATCH(clanok) AGAINST('$hladane' IN BOOLEAN MODE) as score FROM clanky WHERE MATCH(clanok) AGAINST('$hladane' IN BOOLEAN MODE) ORDER BY score DESC");
|
|
Registrovaný: 07.07.09 Prihlásený: 16.07.09 Príspevky: 3 Témy: 0 | Napísal Joel: 16.07.2009 8:15 | |
|
ALTER TABLE tabulka ADD FULLTEXT(stlpec);
tento kod musim pouzivat vzdy pri vyberani dat z databazy?
alebo staci to urobit raz v databazovom rozhrni?
|
|
Registrovaný: 27.07.07 Príspevky: 3948 Témy: 51 Bydlisko: Bratislava |
pre vyberanie dat z tabulky sluzi SELECT, alter je urceny na zmenu "struktury" tabulky...
_________________ NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE |
|
Registrovaný: 07.07.09 Prihlásený: 16.07.09 Príspevky: 3 Témy: 0 | Napísal Joel: 16.07.2009 8:48 | |
|
mam ma mysli ze pri odoslani formulara urobim tento skript:
1)
SELECT *, MATCH(stlpec1, stlpec2, stlpec3) AGAINST('slovo') AS score FROM tabulka
WHERE MATCH(stlpec1, stlpec2, stlpec3) AGAINST('slovo')
ALTER TABLE tabulka ADD FULLTEXT(stlpec);
2)
alebo v databazovom rozhrani urobim:
ALTER TABLE tabulka ADD FULLTEXT(stlpec)
a potom uz pri vyhladavani staci SELECT *, MATCH(stlpec1, stlpec2, stlpec3) AGAINST('slovo') AS score FROM tabulka
WHERE MATCH(stlpec1, stlpec2, stlpec3) AGAINST('slovo')
co je spravne 1) alebo 2)? hladal som to na viacerych forach a vsade pisu inak
|
|
Registrovaný: 04.04.08 Prihlásený: 27.02.12 Príspevky: 531 Témy: 27 Bydlisko: Nitra | Napísal P3CKIV: 16.07.2009 10:57 | |
|
Tento SQL:
Kód: ALTER TABLE tabulka ADD FULLTEXT(stlpec)
Pustíš len raz, napr. v PMA alebo nejakom inom DB adminovi A tento kód: Kód: SELECT *, MATCH(stlpec1, stlpec2, stlpec3) AGAINST('slovo') AS score FROM tabulka WHERE MATCH(stlpec1, stlpec2, stlpec3) AGAINST('slovo')
Použiješ pri vyhľadávaní
_________________ V príprave... |
|
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
| Firefox hladanie na stránke v Sieťové a internetové programy | 3 | 509 | 02.12.2006 23:04 aaggii | | Google hladanie zakomponovane na stranke v PHP, ASP | 25 | 1268 | 21.07.2008 19:02 Blackshadow | | hladanie v Správy pre vedenie fóra | 2 | 1339 | 04.03.2007 0:16 JanoF | | Hladanie v Internetový marketing, SEO, reklama | 8 | 701 | 29.03.2011 20:50 walther | | hladanie v PHP, ASP | 2 | 581 | 31.03.2009 18:27 tatysp | | hladanie cisla v Krčma | 7 | 4842 | 16.09.2010 11:53 ac.milan | | Hľadanie predmetov v Počítačové hry | 0 | 1331 | 30.06.2010 21:14 klatisko25cm | | (JS) Hladanie v JavaScript, VBScript, Ajax | 8 | 593 | 11.03.2010 16:08 mylan | | Hladanie v array v PHP, ASP | 5 | 473 | 19.03.2012 21:38 w3r0 | | Hľadanie v súbore v PHP, ASP | 5 | 481 | 13.12.2011 18:26 shaggy | | Hladanie v teme v Správy pre vedenie fóra | 4 | 1048 | 09.11.2008 21:35 Blackshadow | | hľadanie duplicitných súborov v Ostatné programy | 1 | 835 | 02.07.2009 12:53 Horalka | | hladanie gulatej lampy [ Choď na stránku: 1, 2 ] v Voľný čas a hobby | 54 | 7115 | 31.12.2006 13:11 Kamahl | | Hladanie pripon C# v Technológia .NET | 8 | 677 | 26.04.2012 10:44 Rdf | | hladanie v DB v PHP, ASP | 3 | 455 | 23.10.2008 18:01 pa3ck | | hladanie v databaze v PHP, ASP | 2 | 766 | 12.03.2010 14:05 1daemon1 |
| Nemôžete zakladať nové témy v tomto fóre Nemôžete odpovedať na témy v tomto fóre Nemôžete upravovať svoje príspevky v tomto fóre Nemôžete mazať svoje príspevky v tomto fóre
|
|