PDA

Arată versiune īntreagă : Motor Cautare



iozoo
02.12.2010, 19:57
Motor de cautare Romanesc.


Am citit multe pe internet despre motoare de cautare, despre multe proiecte facute, copiate etc.
Asa ca am decis ca poate fi un proiect amplu cu care sa-mi ocup timpul liber (asa putin cat este) ;;D
RO-bot (pentru ca asta este numele lui acum) este scris 100% PHP si MYSQL si este online din 21-11-2010.
Momentan "aduna informatii" numai cu extensia .ro si acceseaza doar pagina principala a fiecarui site, iar in cazul in care se inscrie manual vreun site accepta orice domeniu .com .org .info -etc.

Inca lucrez la el, asa ca schimbarile de multe ori sunt vizibile pe loc...
Astept pareri , opinii , sugestii , critici

Motorul este vizibil aici ecaut.ro (http://www.ecaut.ro)

netul
02.12.2010, 20:08
Eu sunt mai curios sa ne povestesti despre algoritmul de sortare a rezultatelor, pt ca am studiat mult timp algoritmi de cautare si un timp am lucrat si eu la un proiect de motor de cautare, pe care sper ca, candva, sa il pun in practica.

kaviedas
02.12.2010, 20:15
e un inceput bun
sper sa te ti de proiect

tolby
02.12.2010, 22:35
Eu nu inteleg dc pui astea in titlu ?
<meta name="ROBOTS" content="index,follow" />
<meta name="language" content="Romanian" />
<meta name="rating" content="general" />

Vrei sa iti optimizezi motorul de cautare pentru google? asta inseamna amatorism

Am cautat cateva site-uri de ale mele in motorul tau si le-am gasit cu titlul cu care le inscriam in directoare nicidecum cu titlul actual(deci ce sa cred,ca tu folosesti defapt baza de date a vreunui director).

Si cum zicea si netul: pe ce altgoritmi se bazeaza topul afisarilor?

Parerea mea personala(si nu vreau sa te descurajez, ci e doar o constatare) ca trebuie sa mananci mult mai mult php si ajax pe paine ca sa faci ceva calitativ.

A si nu mi se pare profesional sa pui cod adsense pe pagini chiar de la inceput.

iozoo
03.12.2010, 05:16
@tolby
1. meta tagurile sunt pentru roboti !!! pentru toate nu numai pentru google.
2. Undeva trebuie sa apara si acest site, deci principiul de constructie al unui site trebuie respectat.
3. daca erai profesionist observai ca bucata de cod unde apar rezultatele este mascat cu javascript pentru retine datele fata de alte boturi.
uite aici un exemplu google cache ecaut (http://webcache.googleusercontent.com/search?q=cache:9YOl6fDykWYJ:www.ecaut.ro/%3Fq%3DFOTO+site:ecaut.ro&hl=ro&gl=ro&strip=1)
4. De mancat mananc php, in continuare dar e nevoie si de timp si de practica.
5. Baza de pornire (ca trebuie sa pornesti de undeva) intradevar este o baza din una din directoarele mele. in fuctie de anumiti factori toate site-urile vor fi reindexate din acea baza care acum este deja mult mai mare.
Ca idee este deajuns sa inscrii din nou acelasi site la "addurl", va reindexa pe loc.
6. adsens pe prima pagina nu exista, pe paginile cu rezultat este inca, si imi este de real folos deocamdata, acel spatiu va fi folosit pentru propria reclama(acest lucru era evident si fara sa va mai spun)

iozoo
03.12.2010, 05:26
@netul
Algoritmul este deocamdata un principiu simplu pe care toate motoarele le-au pus public, urmeaza ca in timp real sa il finisez dupa cum vad rezultatele reale ale cautarilor pe site.
principiul e astfel :

O parte mare este alcatuit din numele adresei url dupa care urmeaza titlul, descrierea sau o parte din descrierea gasita pe site.
A da rezultate cat mai bune este 50% important si cum aduni datele pe care le retii in baza de date, de unde se vor cere rezultatele.
Toate astea sunt transformate in Numere care se pot ordona usor.
practic se atribuie o cifra la fiecare cuvant cautat/gasit.
Ex site-site.tld va fi mereu in fata lui site.tld

da alen
03.12.2010, 05:36
Nu prea ma pricep la motoare de cautare, dar, indiferent de cautare, da aceleasi rezultate.
Exemplu: auto, stiri auto, piese auto, curse auto. Am tras concluzia ca tine cont doar de auto
Bafta cu proiectul.

iozoo
03.12.2010, 06:38
@da alen
multumesc pentru observatie,
intradevar rezultatele erau diferite ca si numar total, dar pe prima pagina insa nu se vedea diferenta, cuvantul auto domina rezultatele.
In momentul de fata am rezolvat (zic eu).
acum am oferit egalitate la cautarile cu mai multe cuvinte.
Adica:
la o cautare cu 2 cuvinte pondere 50%+50% (primul cuvant+ cuvantul 2)
la 3 cuvinte 33.33%+33.33%+33.33%
etc...
In schimb cu cat mai multe cuvinte cu atat mai putine rezultate.()

netul
03.12.2010, 13:20
izoo, un Motor de Cautare e format dintr-un Crawler propriu care indexeaza siteurile si o baza de date proprie.
Care este crawlerul tau? Cum functioneaza? Pt ca din cate am citit, baza de date e formata din niste siteuri dintr-un director. In cazul asta, NU se poate vorbi de un motor de cautare, ci de o cautare simpla intr-un director.

Sfat:
Legat de algoritm, daca vre sa faci ceva serios, studiaza serios algoritmii de cautare si modul cum sorteaza google in rezultate (sunt mii si mii de factori care influenteaza afisarea rezultatelor). Faptul ca te bazezi doar pe numele din url, titlu si descriere nu e prea peofesionist (chiar deloc). Daca facea si Google asa, era plin de spam si nu mai folosea nimeni Google.

iozoo
03.12.2010, 13:35
@netul
te rog sa mai citesti odata primul post.
este scris clar "RO-bot" acest robotel(crawler) nu este in stare ca in doua zile sa scaneze tot www-ul, iar baza de date a fost doar linia de pornire!!!!
sai zicem o lista de site-uri de START !!! ele urmand sa fie reindexate natural.
Iar daca cineva scrie de capul lui un "Motor de cautare" cu tot arsenalul necesar, nu cred ca se poate face in 7~8 zile sa se compare si cu Google.
Oricum nici nu am de gand sa fac acest lucru!!!
"Crawlerul" este in functiune din 21-11-2010

netul
03.12.2010, 13:47
Ok, nu te supara pe mine :)
Daca citesti profilul meu, vezi ca, ca tema de Licenta a fost sa proiectez un algoritm de motor de autare propriu, cu baza de date proprie, asa ca sunt in tema :)
Ti-am dat un sfat legat de algoritm, eu am ajuns sa folosesc peste 50 de variabile pt a stabili "calitatea" unui link ca sa apara mai sus in cautari. Bineinteles, trebuie sa ai o baza de date suficient de mare, eu ajunsesem sa testez algoritmul pe o baza de date de vreo 50 de Giga (avea milioane de inregistrari).
La un moment dat resursele hardware o sa fie principalul obstacol in a face ceva de calitate. Sper ca intr-o buna zi sa duc la sfarsit proiectul. Domeniul e luat de mult. Din pacate, pt ce vreau eu sa fac, imi trebuie resurse hardware puternice.
Bafta cu proiectul.

netul
03.12.2010, 13:48
PS: La un moment dat o sa ai nevoie sa optimizezi la sange codul si MySQL-ul, daca ajungi sa lucrezi pe milioane de inregistrari.
Iti recomand sa citesti: http://www.mysqlperformanceblog.com/

iozoo
03.12.2010, 13:49
Ca sa subliniez inca odata acest motor este inca in continua constructie, (cu toate ca multe lucruri nu se vad, poate doar rezultatele), si cred ca va fi in continua modelare, perfectionare.
Idea de baza este ca il construiesc de la 0, si in fiecare zi va fi cu o functie sau ceva nou :)

iozoo
03.12.2010, 14:03
@netul
Sfaturile sunt foarte bune!!! si inca odata mersii.
Resurse hardware intradevar sunt un lucru serios de luat in vedere(din cauza asta am subliniat timpul de pornire al crawlerului)

aniba
03.12.2010, 14:06
sa fim seriosi ...nu ca vrea cineva sa te descurajeze dar netul are dreptate. Daca toata lumea putea sa faca motoare de cautare peste noapte si de unul singur acum cautam pe Roogle.ro ca nah ... dar ca sa faci ceva de calitate cat de cat trebuie pe langa o echipa intreaga de ingineri si resursele financiare pentru derularea proiectului si aici ma refer la promovare/resurse hardware/salariile angajatilor etc ... nu cred ca 1 singura persoana poate face ceva de calitate avand in vedere ca motoarele de cautare sunt invetate de multi ani de zile, ani in care s-au perfectionat mult peste nivelul cunostintelor unei singure persoane.

iozoo
03.12.2010, 15:32
@netul are dreptate !!! dar tu @aniba NU, sau ma rog partial.
Ai dreptate ca un motor de cautare nu se face peste noapte !!!
dar pana nu sunt oameni ca mine, ca netul si ca inca cativa care sa lucreze sa investeasca munca bani timp etc.. pe anumite proiecte (motor de cautare in cazul de fata), nu vor fi echipele si inginerii de care vorbesti.
O singura persoana porneste un proiect o afacere sau orice vrei, dupa care daca merge, se dezvolta, se extinde !!!, daca nu nu.
Deci eu am pornit-o, am investit deja si voi merge inainte astai clar.

socu
03.12.2010, 17:24
Daca vrei sa faci un motor de cautare puternic si rapid sigur niciodata nu o sa-l faci in PHP. Pentru inceput o sa ai nevoi de un server pentru teste, si apoi sa incepi sa-l faci intr-un limbaj de programare compilat cum ar fi C/C++. Ar fi o greseala sa-l faci in PHP daca tu vrei sa fii un concurent pentru restul motoarelor.
Oricum, parerea mea este ca nu conteaza cat de bun motor de cautare ai, conteaza brand-ul. Cati folosesc Bing? Putini, cu toate ca mie mi se pare foarte ok. Deja pe toate forumurile vezi "Google It" nu cred ca vezi "Bing It". Probabil ca va intra in dex Google in curand, asa popular e.

Daca tu chiar vrei sa faci motorul, atunci te sfatuiesc sa iti faci un plan inainte de toate in care se cuprinzi in primul rand resursele software apoi cele hardware (care le ai pe bani oricand). Dupa ce o sa il ai gata facut poate dura o vesnicie sa-l promovezi.

tolby
03.12.2010, 17:30
Daca vrei sa faci un motor de cautare puternic si rapid sigur niciodata nu o sa-l faci in PHP.



Are dreptate ca un motor de cautare nu o sa il faci cu un limbaj de programare ca php(nu ca ar fi un limbaj prost).

Google folosest ca framework django,te sfatuiesc sa il inveti.

iozoo
03.12.2010, 17:48
Daca vrei sa faci un motor de cautare puternic si rapid sigur niciodata nu o sa-l faci in PHP. Pentru inceput o sa ai nevoi de un server pentru teste, si apoi sa incepi sa-l faci intr-un limbaj de programare compilat cum ar fi C/C++. Ar fi o greseala sa-l faci in PHP daca tu vrei sa fii un concurent pentru restul motoarelor.

100% de acord !!!
Deocamdata asta ramane la nivelul de plan, pentru ca inca nu detin un server.
faptul ca nu am inca un server raman la PHP, deocamdata.......

oricum mersi de sfat.

iozoo
03.12.2010, 17:52
Si inca un lucru ce vad ca inca persista.
NU vreau si nici nu pot sa concurez cu motoare ca google yahoo bing baidu AlltheWeb Lycos etc...

socu
03.12.2010, 18:02
Cand am zis ca ai nevoie de un server nu ma refeream neaparat sa cumperi unul. Si calculatorul tau poate fi server, daca ii mai bagi 1-2Gb de RAM e si mai bine, doar sa nu fie alte aplicatii ce ruleaza intuil si sa ii ia din performanta. Asa ca nu trebuie sa ramai la PHP chiar daca e simplu de folosit si are tone de functii, e totusi un limbaj interpretat si la viteza se intrece cu melcul. La inregistrari de ordinul 10^10 o sa dureze mai mult decat daca ai cauta inregistrare cu inregistrare in baza de date.

LE: Daca nu vrei sa concurezi cu greii, atunci cu cine vrei?

iozoo
03.12.2010, 19:34
Nu stiu de ce trebuie sa 'concurez' neaparat ?
Eu am spus tot timpul ca este loc pentru toti, in special intr-un loc virtual.

netul
03.12.2010, 20:39
Daca vrei sa faci un motor de cautare puternic si rapid sigur niciodata nu o sa-l faci in PHP. Pentru inceput o sa ai nevoi de un server pentru teste, si apoi sa incepi sa-l faci intr-un limbaj de programare compilat cum ar fi C/C++. Ar fi o greseala sa-l faci in PHP daca tu vrei sa fii un concurent pentru restul motoarelor.


Intr-adevar, PHP si MySQL nu sunt recomandate in cazul unui motor de cautare FOARTE COMPLEX, insa daca te limitezi la o baza de date cateva sute de Giga si ai si hardware-ul necesar, poti sa faci ceva DECENT si in PHP si MySQL. Bineinteles, iti trebuie ca serverul MySQL sa fie pus pe server (sau servere separate), mult RAM, putere f mare de procesare si mai ales HDD-uri f rapide.
Bineinteles ca, in sute de giga nu o sa indexezi nici 0.1% din paginile romanesti, dar e si asta un inceput. Daca faci un algoritm destept, o sa conteze mai mult calitatea rezultatelor decat cantitatea.

PS: Baza de date ce indexeaza siteurile (folosita de crawlere) NU trebuie sa fie aceeasi cu baza de date pe care se face cautarea.
In general, comanda INSERT in baze de date f mari e destul de greoaie, mai ales daca folosesti si indecsi. Ar fi crima ca sa fie aceeasi baza de date in care se face INSERT cand indexezi siteuri cu cea in care faci SELECT cand selectezi rezultatele.
Intai indexezi in baza de date separata, filtrezi anumite rezultate (porn & spam de exemplu), apoi updatezi baza de date principala in care faci cautarea.

Despre subiectul asta se pot scrie carti intregi. O sa revin si cu alte sfaturi legate de asta.

iozoo
03.12.2010, 21:32
Acest lucru este chiar interesant, pentru ca din motive hardware ma gandeam sa folosesc mai multe servere pentru crawling.
Inca nu mi-am facut o imagine clara cat de repede pot oferi rezultatele obtinute de bot, din alta baza de date.
Inca folosesc aceasi baza de date, si ai mare dreptate cu viteza, una din metode este sa limitez rezultatele.(adica oricum nu va fi vizitat de utilizator rezultatul cu nr 100 sau mai in spate)
cred ca in cel mai scurt timp am sa fac cateva teste cu mai multe baze de date sa vad ce rezultate ies.

socu
03.12.2010, 22:03
pentru viteza ai putea face si un cache sa nu interoghezi de N ori serverul mai ales pentru cuvintele foarte cautate ca: filme, muzica, sex, etc. si care returneaza o gramada de rezultate.