ďťż

Wyszukiwarka i bot

       

Podstrony


telcocafe

Czy nie wie ktoś jak zrobić wyszukiwarkę podobną do "Google". Nie chodzi mi o plagiat.
Chciałbym użyć PHP, CSS i MySQL. Proszę o kod wyszukiwarki i bota wraz z opisaniem wykorzystanych poleceń.
Z góry dziękuję.



tak, google sprzedaje bota za jakie 30 000$ dolarow licencja na 500 000 podstron. Za 500 000$ jest chyba full wersja... Potem napiszesz skrypt php do interpretacji danych wygenerowanych przez googlebot'a.
Za pomoca php nie zrobisz czegos takiego jak googlebot. Jak ty to sobie w ogole wyobrazasz?
Użytkownik sokol edytował ten post 27 kwiecień 2007, 20:09

Proszę o kod wyszukiwarki i bota wraz z opisaniem wykorzystanych poleceń.

Odsyłam Cię do regulaminu tego działu
Użytkownik sauron edytował ten post 27 kwiecień 2007, 20:15
Przepraczam. To moglibyście dać mi linka do tworzenia jakiejś prostej wyszukiwarki np. takiej jak znajduje się w CMS-ie Joomla



Tam jest zwykla wyszukiwarka tego co jest w serwisie. Po za tym kod jest rozpowszechniany na zasadach GPL czyli mozesz go sobie obejrzec a nawet pozyczyc!

dla MySQL możesz wykorzystać opcję pełnotekstowego wyszukiwania - przykład. Inna opcja to np. xapian, który posiada API dla PHP i jest wydajnym rozwiązaniem. Jeżeli chodzi o pająki indeksujące to musisz podszkolić się z programowania sieciowego, niekoniecznie w PHP - lepszy może być Python (pomoc np. Twisted) lub w przypadku większych projektów C/C++ :)

Jednym słowem: musisz być dobrym programistą, a jak nie to musisz programiście zapłacić ładną sumkę za takie dzieło :)

zeby efektywnie korzystać z xapiana musisz miec serwer dedykowany! Co troche kosztuje

profesjonalna wyszukiwarka nie jest przeznaczona na serwery typu yoyo.pl :P

Znalazłem skrypt wyszukiwarki w Ekspercie 2/2005.
Oto i on:

Plik szukaj.html:
<html>
<head>
</head>
<body>
<form method="POST" action="szukaj.php">Szukaj
<input type="text" name="zapytanie" size="20">
<input type="submit" value="Szukaj" name="s1">
</form>
</body>
</html>

i plik szukaj.php:
<?
if (isset($_POST["zapytanie"])) $zapytanie=strtolower($_POST["zapytanie"]);
else $zapytanie="";

$zakazane_pliki=array("funkcje.php","hasla.php","szukaj.php");
$dozwolone_rozszerzenia=array("htm","html","php");

if ($zapytanie!="") {
echo "Wyniki wyszukiwania frazy <b>$zapytanie</b>:<br>";
przeszukuj(".",$zapytanie, $zakazane_pliki,$dozwolone_rozszerzenia);
}
else echo "Nie wpisales zadnej frazy!";

function przeszukuj($nazwa_folderu,$zapytanie,$zakazane_pliki,$dozwolone_rozszerzenia)
{

if (!isset($nazwa_folderu)) $nazwa_folderu=".";

$folder=opendir($nazwa_folderu);

while ($plik=readdir($folder))
{
if ((!in_array($plik, $zakazane_pliki)) && in_array(substr($plik,strrpos($plik,".")+1),$dozwolone_rozszerzenia))
{
$zawartosc=implode("",file($nazwa_folderu."/".$plik));
$zawartosc2=strip_tags(strtolower($zawartosc));
$pozycja=strpos($zawartosc2, $zapytanie);
$start=strpos($zawartosc, "<title>")+7;
$stop=strpos($zawartosc, "</title>");

if ($start===false || $stop===false)
$tytul="brak tytułu strony";
else
$tytul=substr($zawartosc,$start,($stop-$start));

if ($pozycja!==false)
{
echo "<a href=".$nazwa_folderu."/".$plik.">".$tytul."</a> <br>";
}
}

if ($plik!="." && $plik!=".." && is_dir($nazwa_folderu."/".$plik))
przeszukuj($nazwa_folderu."/".$plik, $zapytanie, $zakazane_pliki, $dozwolone_rozszerzenia);
}

closedir($folder);
}

?>

Czy ktoś pomógłby mi zmienić ten kod tak aby wykorzystywał bazę danych MySQL i nie wyszukiwał plików, tylko stron internetowych zapisanych w bazie. Baza danych zawierała by Tytuł strony, jej opis, adres i słowa kluczowe.
Czy jest podobny projekt do xapian tylko na Windowsa. Mam serwer na Krasnalu.

ten "kod" z Eksperta sobie odpuść bo to wielka pomyłka a napisanie wyszukiwarki od zera na bazie pełnotekstowego wyszukiwania MySQL jest znacznie prostsze, nie wspominając o wydajności. Jeżeli nie planujesz niczego dużego to MySQL "na krasnalu" powinno starczyć. Jeżeli planujesz znacznie większy projekt to zacznij od dobrego serwera :)

dla czego sądzisz że to pomyłka? Ja po drobnych modyfikacjach używam tego kodu i nie narzekam!

bo to otwiera wszystkie pliki po kolei i szuka identycznej frazy. Przy większej ilości plików (i większym ich rozmiarze) wymaga to sporo czasu oraz generuje dużo operacji I/O na dysku. A jak chce się robić wyszukiwarkę opartą o bazę danych to lepiej odpuścić sobie bazowanie na kodzie "Eksperta" tylko napisać to porządnie bez naleciałości kodu nie mającego nic wspólnego z wyszukiwarką bazodanową.
Użytkownik Riklaunim edytował ten post 28 kwiecień 2007, 17:32
To moglibyście wysłać mi skrypt, który wyszukiwał by stron www w bazie. Proszę o wysłanie na maila.
mail: dariusz.mysliwiec [małpa] gmail.com


To moglibyście wysłać mi skrypt, który wyszukiwał by stron www w bazie. Proszę o wysłanie na maila.
mail: dariusz.mysliwiec [małpa] gmail.com


Po pierwsze:

Odsyłam Cię do regulaminu tego działu
Po drugie:

dla MySQL możesz wykorzystać opcję pełnotekstowego wyszukiwania - przykład. Inna opcja to np. xapian, który posiada API dla PHP i jest wydajnym rozwiązaniem. Jeżeli chodzi o pająki indeksujące to musisz podszkolić się z programowania sieciowego, niekoniecznie w PHP - lepszy może być Python (pomoc np. Twisted) lub w przypadku większych projektów C/C++ :)

Jednym słowem: musisz być dobrym programistą, a jak nie to musisz programiście zapłacić ładną sumkę za takie dzieło :)


Chyba wybiorę wyszukiwanie pełnotekstowe. Chciałbym ten skrypt napisać, ale strona poświęcona tej metodzie jest tak napisana, że nic nie rozumiem. Nie widzę funkcji łączenia się z bazą danych i formularza w którym mógłbym wpisywać szukane słowo. Jak to wyświetla dane?

bo przykład wykorzystuje frameworka CI, który zajmuje się m.in. obsługą bazy danych. Z podanego przykładu ważne są jedynie dwa zapytania:
ALTER TABLE nazwa_tabeli ADD FULLTEXT(pole1, pole2);
gdzie pole,pole2 to nazwy pól, które mają być objęte wyszukiwaniem. Zapytanie należy wykonać raz, np. w phpMyAdmin.

By wyszukać wystarczy wykonać zapytanie:
"SELECT *, MATCH(pole1, pole2) AGAINST ('".$fraza."') AS score FROM nazwa_tabeli WHERE MATCH(pole1, pole2) AGAINST ('".$fraza."') ORDER BY score DESC"
Gdzie pole1 i pole2 to nazwy tych samych pól co podane przy ALTER TABLE. Wykonanie zapytania zwróci wynik tak jak zwykły SELECT. Oprócz pól z tabeli będzie miało wartość "score" oznaczającą stopień dopasowania :)
Użytkownik Riklaunim edytował ten post 30 kwiecień 2007, 10:45
close :| i ciesz sie ze bez %

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nvm.keep.pl

  • Sitedesign by AltusUmbrae.