Może nie jest to zadanie dla php - ale czemu nie;)
Jak napisali byscie wyszukiwarke na ok 20mln stron??
DeyV
20.10.2003, 15:58:30
Zanim zaczniemy nad tym myśleć, może powiedz coś więcej?
Co chcesz osiągnąć? Skąd ta pewność, żę będzie 20 mln.?
Jak ma działać?
Bo niestety - ale w tej chwili trudno powiedzieć cokolwiek na ten temat.
20 mln - liczba abstrakcyjna - aby wyraźić ze chodzi o duzy projekt z naprawde wydajna baza danych.
Co do samego projektu podzielił bym go na 3 części -
napisanie robota chodzacego po stronach i zapisującego dane - chyba najprosztszy etap
2 - stwozenie wydajnego systemu przeszukiwania bazy danych
3 - określenie reguł na miejsce strony pod szukaną frazą
MaKARON
20.10.2003, 23:09:41
Kiedyś nad tym myślałem, ale projekt jest tak zaj...
[cenzura] zawikłany że dałem sobie spokój (na etapie projektu), zabrałem się za to za projekt mniejszej bazy, ale o podobnych założeniach WTF (What The Faq) - baza faq'ów z wyszukiwarką. Mimo prostego pomysłu, projekt był bardzo skomplikowany - właśnie trzeci punkt był bardzo ważny w moim projekcie... który również padł, ale powstało część kodu. Może kiedyś znów spróbuję...

jeżeli znalazłaby się ekipa

(php+ADOdb+Smarty) - pisałem w tej sprawie do właściciela faq.pl, ale nawet nie odpowiedział.
KaMeLeOn: Panie MaKARON... Na forum php.pl uważamy na słownictwo.
raf2001
25.10.2003, 18:20:57
Można by było także oprzeć swoją wyszukiwarke na zasadzie "złodziejskiej". A chodzi mi o to:
Skrypt wysyła zapytanie (odpowiednie swormułowanie oczywiście) do jednej ze stron (google - światowe szukanie, netsprint - polskie). póznij pobrać strone wynikową sformatować aby pasowała do strony (w tym usuwanie linków sponsorowanych, czy coś takiego). koncepcja prosta, chyba gorzej z wykonaniem
Seth
25.10.2003, 18:23:18
To co propunejesz raf2001 jest wbbrew pozorom latwe do napisania.
Wystarczy skorzystac z API goole i uzyc do niego jakiejs gotwej klasy do jej obslugi i wydawac zapytania w postaci <zapytanie> site:<adres strony>.
Nitryt14
18.02.2004, 20:41:04
Piszecie o robotach buszujących w necie.
Ale w czym byście napisali takiego robota
Według mnie nie jest to wcale takie proste jak się to wydaje.
NItry14: W czym? Chociażby w php. A jak nie php to Java, C++........
Oczywiście wszystko musi wydajnie chodzić przy tak dużej ilości.
Jednak nie jest łatwe napisanie takiego robota.
raf2001
19.02.2004, 16:01:53
mój sposób niebyl by bardzo wydajny, ale jakoś by to szło. Moim zdaniem zrobienie takiego systemu, to dla znających sie dobrze na php to okolo 2 dni roboty (jestem teoretykiem, wiec tego raczej niezrobie). Skrypt był by oparty na takiej architekturze:
1. Ktoś w inpucie wpisuje czego szuka
2. skrypt odwołuje się do jednej z wyszukiwarek (lista wyników zrobiona tak w zapytaniu, aby na jednej stronie bylo jak najwięcej odpowiedzi)
3. skrypt "podkrada dane" ze strony i formatuje z nich własne, wyświetlając je (z podziłame na strony):
podkradanie tych danych mogło być przeprowadzone na dwa sposoby:
a. w realu - czyli przykładowo odwołujemy sie do wyszukiwarki, aby pobrać dane (w tym przypadku np 25 rekordów) i poprostu je wyświetlić na stronie skryptu
b. w pamięci (tak to nazwalem) - skrypt odwołuje się do wyszukiwarki, pobiera maxymalną ilośc rekordów (rekordy, to ilośc wyświetlen wyników na jednej stronie np 150.), oborka ich podzielenie ich na nowe strony np po 20 rekordów i wyswietlenie
Taka jest moja teoria a kto co jak zrobi to jego sprawa 8)
ps. skrypty mogły by być 2: php lub perl. Moim zdaniem perl łatwiej by to załatwił (ale go nieznam więc to tylko moje domysły)
Seth
19.02.2004, 16:18:36
Tutaj
http://www.google.pl/intl/pl/apis/ sa informacje jak pobierac wyniki z googli uzywajac ich API. Przyklady sa dla Javy i .NET'a ale nic nie stoi na przeszkodzie aby napsiac to w php.
raf2001
19.02.2004, 16:40:55
to moze niech ktoś zrobi taki skrypcik, w najprostszej formie (osobiście nielubie class, więc wolałbym bez tego). skrypcik: thief
bumelang
19.02.2004, 17:17:08
Generalnie pisanie robotów jest sprawą dużo trudniejszą niż się wydaje i php się do tego nie nadaje z 2 powodów:
1) przechowywanie indeksów - zwykła baza danych takiego zadania się nie ima - jeśli taka metoda przechowywania danych zostanie zastosowana, to nie będzie to tak wydajne, ani skalowalne jak rozwiązanie autorskie; z reguły buduje się specjalne indeksy słów na jakiś drzewach binarnych itp. - jak nie trudno zgadnąć w php napisanie czegoś takiego jest - jeśli nawet możliwe - mało sensowne
2) język polski - zagadnienie normalizacji (czyli sprowadzanie słów do form pierwotnych - bezokolicznika dla czasowników czy mianownika l.p. dla rzeczowników); realizują to specjalne algorytmy działające z reguły na indeksach wszystkich słów języka polskiego we wszystkich formach i próbujące wyznaczyć odopowiednie znaczenie z kontekstu gramatycznego; przykładem takiego podejścia do tego zadania jest NetSprint; w każdym razie ta złożoność obliczeniowa też nie jest dla php
W reszcie - jak ktoś już wcześniej zauważył wyszukiwarka najpierw buduje indeks (co w przypadku 2 mln. stron może potrwać bardzo długo) a dopiero potem z niego korzysta.
Jeśli kogoś interesuje dobra wyszukiwarka OpenSource w ogóle, to jest nią bez wątpienia Lucene (http://jakarta.apache.org/lucene/docs/index.html), ale jest napisana w Javie i niestety nie obsługuje normalizacji dla języka polskiego - z resztą generalnie polskie algorytmy normalizacji nie są dostępne w bezpłatnych implementacjach.
Nie polecam w każdym razie pisania wyszukiwarki bez odpowiedniej wiedzy, a już na pewno nie w php
raf2001
19.02.2004, 18:18:41
nasze założenia się różnią, ty mówisz o tworzeniu od podstaw wyszukiwarki, ja tylko o "złodziejstwie" (

). moja zasada jest moim zdaniem prosta w zrozumieniu (chodz może trudna w zrobieniu, no ale...). Pozatym czy ktoś mialby czas na zabawe w robienie polskiego googl'a.
Ps. google.pl opiera się na kilku wyszukiwarkach polskich,więc pół roboty by było z glowy :wink:
Seth
19.02.2004, 18:25:57
Cytat
Ps. google.pl opiera się na kilku wyszukiwarkach polskich,więc pół roboty by było z glowy :wink:
:?:
raf2001
19.02.2004, 19:08:03
Gdzies czytałem, że google nieposiada własnej bazy, opiera sie na onecie, wp i innych tego typu polskich wyszukiwarkach. niewiem co on dokładnie robi, ale opiera się (czy indeksuje onet,wp i inne i potem z tego kożysta, niewiem dokładnie, ale takie cos było)
ps. przynajmniej tak mi się zdaje
spenalzo
19.02.2004, 19:20:27
Chyba odwrotnie... Onet korzysta z googli przy szukaniu po zagranicznych stronach.
Nalfein][WR
19.02.2004, 19:26:58
Bzdura. Google ma własną bazę danych, rozproszoną na wiele komputerów. Korzysta z całkiem innych algorytmów, indeksuje strony inaczej (np. napisz w google "masło maślane" i "maślane masło" - otrzymasz inne zestawy wyników, gdyż Google uwzględnia odległość dopasowanych wyrazów) i nie ma porównania z takim sobie Onetem. Z kolei WP ogłasza upadłość - jak WP padnie to Google polskie też? Bzdura do kwadratu.
raf2001
20.02.2004, 20:44:21
nieważne, ale napewno jakoś z siebie kożystają (mniejsza już o to który z którego, jak znajde opis to zacytuje). Teraz może ktoś ma inny pomysł na wyszukiwarke niż moje?
Nalfein][WR
20.02.2004, 21:14:26
Ja pisałem w odpowiedzi na Twój post - pisaliśmy je ze spenalzo w tym samym czasie prawie

Mozliwe, że Onet korzysta z Google, ale na odwrót nie bardzo "z przyczyn technicznych".
Ja bym zrobił wyszukiwarkę w oparciu o Google - są bardzo szybkie, mają wygodny dostęp przez WebServices - nie trzeba parsować wyników z HTML-a. Czegóż chcieć więcej
raf2001
21.02.2004, 10:20:14
skryptu
cichy
21.02.2004, 10:28:40
napisanie skryptu to akurat sprawa banalna...
Kiedyś sobie coś takiego napisałem, ale było to dawno temu gdy jeszcze moja znajomość php była niska.
Zrobiłem to tak że pobierałem strone google z wynikami i obrabiałem u siebie poprzez wyrażenia regularne.
Pozdro
raf2001
21.02.2004, 10:51:39
SETH mówił i myśle ze to było by lepsze rozwiązanie zrobić tego zlodziejaszka na googleapi. nietrzeba by było się zbytnio męczyć, a i wyniki by były szybciej pobierane (tak myślę)
Nalfein][WR
21.02.2004, 13:05:41
No to raf2001 - uczyć się WebService i zabierać się do roboty! Są gotowe klienty SOAP, dokument WSDL też Google chyba udostepniają, a więc sprawa będzie sprowadzała się do napisania:
[php:1:bfedcab052]
<?php
$client = new WebServiceClient('http://www.google.com/.../api.wsdl');
$result = $client->search('sex drugs alcohol');
print_r($result);
?>
[/php:1:bfedcab052]
Toż to takie trudne? Pokombinuj. Znajdź klienta (w PEAR chyba nawet był) i poczytaj example o nim i o użyciu Google API

To już chyba nawet nie jest temat na PRO ;P
raf2001
21.02.2004, 13:09:13
temat jest na pro, bo moje rozwiązanie to jedna propozycja, a jeszcze były inne. :wink:
ps. ja bopiero zaczynam z php (bardziej teoretycznie umiem więcej). Pozatym co to SOAP, musze jeszcze wiele się nauczyć bo w poruwnaniu do innych to.... lepiej niemówic
splatch
24.02.2004, 14:46:03
Czytalem o zaawansowanej wyszukiwarce, ale zrobionej w Javie. Potrzebny jest do tego pakiet JDK, albo J2SDK nie pamietam dokladnie, ale wyszukiwarka po prostu fajna, jesli jestes ciekaw to zamow archiwalny numer php Soluations z rozowa okladka - www.phpsolmag.org
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.