Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Integracja wyszukiwarek/ki (google) z wewnętrzną wyszukiwarką
Forum PHP.pl > Forum > PHP
dudi1261
Witam.
Tworzę portal na ktorym bedzie mozna stworzyc wlasna strone. Nie mam pojecia jak zintegrowac wyszukiwarke na mojej stronie z google (i jesli sie da jednoczesnie z innymi wyszukiwarkami). Integracja mialaby dzialac w ten sposob, ze internauta wpisuje w google "kurs html" i w jednej pozycji na liscie znalezionych stron wyszukiwarki znajduje sie link do mojej strony w której jest wynik z wyszukiwania "kurs html". Widzialem wiele razy cos takiego i mysle ze to przyciagnie uzytkownika na moj portal i ze bedzie mogl prosciej znalezc konkretna strone niz korzystajac z wyszukiwarki stron na moim portalu.
masiakla
Sprawdzaj czego szuka user u ciebie w wyszukiwarce, plus to co możesz wyciągnąć z referera i na jakiejś podstronie twórz linki z query do twojej wyszukiwarki. Możesz chyba tez próbować umieszczać je w sitemapie.
dudi1261
Nie rozumie prawie niz z Twojej wypowiedzi. Prosilbym jasniej i konkretniej. Prawdopodobnie trudno by bylo wypozycjonowac portal tak by wpisujac w google przykladowa nazwe strony to moja wyszukiwarka bylaby na pierwszej stronie? Nie znam sie na dzialaniu wyszukiwarek, a w pozycjonowanie dopiero sie zaglebiam, bo wczesniej nie bylo mi to potrzebne.
masiakla
Tworzysz powiedzmy w portalu podstronę "ostatnio wyszukiwane" łapiesz to co user szuka u ciebie i dodajesz tam link z zapytaniem do twojej wyszukiwarki. Druga część sprawdzasz skąd przybywa użytkownik, jeżeli to jest google to w refererze będziesz miał adres(nie zawsze, ale załózmy, że jednak większośc userów przesyła referera) podobny do tego
Kod
http://www.google.pl/search?client=opera&rls=pl&q=szukanafraza&sourceid=opera&ie=utf-8&oe=utf-8
, pobierasz np regexpem szukanafraza i wrzucasz odnośnik z zapytaniem do twojej wyszukiwarki na podstronę "ostatnio wyszukiwane". Google indeksuje te adresy i po robocie. Można dodatkowo umieścić w sitemap.xml. Tyle na ten temat.
dudi1261
Nie do konca rozumie, ale udalo mi sie wywnioskowac iz mam pobierac link z jakiego uzytkownik przychodzi do mojej wyszukiwarki. Wybierac z tego linku zawartosc $_GET['q'], wstawiac w link w mojej wyszukiwarce i znajduje to o co uzytkownik pytal na google. Zatem musze wyszukiwarke dodac do mapy strony i w tytule wstawic np. "Wyszukiwanie na portalu ...". Zadko taki tekst przyciaga ;D Moglbys zaproponowac lepsza nazwe, bardziej kuszaca do klikniecia? smile.gif
masiakla
Ja zawsze pisze "ostatnio wyszukiwane frazy" i tam umieszczam całość tego dziadostwa, nie ma dla tego chyba jakiejś bardziej przyciągającej nazwy, z resztą wątpię aby użytkownik użytkownik dysponujący wyszukiwarką na stronie, korzystał z ostatnio wyszukiwane frazy.
dudi1261
Moj ostatni post mial brzmiec bardziej jak pytanie czy to zadziala winksmiley.jpg Nie napisales nie, zatem prawdopodobnie bedzie dzialalo. Do startu mojego portalu jeszcze troche czasu minie, a ja kurcze nie mam jak tego wytestowac ;d
Znasz jakis szybki sposob bym mogl to sprawdzic?

@ edit
Nie za bardzo potrafie sie posluzyc regexpem (preg_match). Jaka funkcja?
masiakla
preg_match_all, co do testów to jest pewnie jakiś plugin do firefoxa, który pozwala zmienić referera. Od bidy z curlem można tez coś szybko nabazgrać.
dudi1261
Wydaje mi się, ze najlepiej jest napisac wyrazenie regularne ktore znajduje "q="fraza"&". Niestety nie moge pojąć tych wyrazen i nie bardzo rozumie jak je ulozyc.
masiakla
Kod
#http(s?)://(www\.)?google.[a-z]{2,3}/search\?(.*)&q=(.+)&?.*#Uis

mniej więcej nie chce mi się sprawdzać więc może się trafić, że zbierze coś za dużo.

no i zbiera poniżej poprawione:
Kod
#https?://(www\.)?google.[a-z]{2,3}/search\?.*&?q=([^&]+)&?.*#is

wszystko będzie w trzeciej grupie
phpion
Zamiast wyrażeń regularnych można skorzystać z parse_url + parse_str.
masiakla
Można też to zrobić za pomocą strpos oraz substr, ale regexpy wydają mnie się najwygodniejsze.
dudi1261
gdy wstawiam oba podane przez masiakla wyrazenia regularne to wyswietla sie blad:
Warning: preg_match_all() expects at least 3 parameters, 2 given in /home/qsite/ftp/szukaj.php on line 5
masiakla
preg_match_all rezultaty zwraca poprzez referencję, wpisz nazwę jakiejś zmiennej jako trzeci argument i w niej będziesz miał wszystkie grupy. Więcej w dokumentacji funkcji
dudi1261
Juz mam prawie wszystko smile.gif Zrobilem nieco inaczej, mianowicie:

Kod

      function parseUrl($url) {
        $out = explode('q=', $url);
        $out = explode('&', $out[1]);
        return $out[0];
      }
      $fraza = parseUrl($_SERVER['HTTP_REFERER']);
      header('Location: /szukaj/'.$fraza.'.qs');


kolega nieco pomogl. Potrzebuje if'a, ktory ma wyszukiwac w refererze czy domena to "google." (koncowki moga byc rozne). Jak to zrobic?
masiakla
  1. preg_match("#google\.[a-z]{2,3}#is", $url)

ogólnie mogłeś to zrobić tak:
  1. preg_match_all("#https?://(www\.)?google.[a-z]{2,3}/search\?.*&?q=([^&]+)&?.*#is", $url, $matches);
  2. print_r($matches);

W jednej funkcji masz zawarte że to z google, że ma różne końcówki, może być http jak i https.

Na pewno działa http://img.mephir.net/screens/snap0290.jpg
dudi1261
Zapomnialem dodac $url w moim kodzie winksmiley.jpg Wstawiajac Twoje podane wyzej kody nie dzialalo

// Mam juz wszystko gotowe smile.gif testuje aktualnie na moim portalu. Dzieki za pomoc smile.gif

Pozdrawiam
jang
Cytat(masiakla @ 6.09.2010, 17:57:20 ) *
ogólnie mogłeś to zrobić tak:
  1. preg_match_all("#https?://(www\.)?google.[a-z]{2,3}/search\?.*&?q=([^&]+)&?.*#is", $url, $matches);
  2. print_r($matches);


Jeśli https to wtedy link zaczyna się tak:
  1. https://encrypted.google

więc albo np.:
  1. preg_match_all("#https?://(www\.)?(encrypted\.)?google.[a-z]{2,3}/search\?.*&?q=([^&]+)&?.*#is", $url, $matches);

albo jeśli info o tym, czy to połączenie bezpieczne czy nie, jest niepotrzebne to np. tak:
  1. preg_match_all("#https?://[a-z]{3,9}\.google.[a-z]{2,3}/search\?.*&?q=([^&]+)&?.*#is", $url, $matches);
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.
Invision Power Board © 2001-2025 Invision Power Services, Inc.