<i><b>Jak zrobić wyszukiwarkę?</b></i>
Zacznijmy od początku:
zakładamy, że chcemy zrobić własną wyszukiwarkę do forum phpBB.
Na początku dodajemy do istniejącej tabeli prefix_posts_text jedno pole:
ALTER TABLE prefix_posts_text ADD FULLTEXT (post_subject,post_text)
Jeżeli wszystko przebiegło pomyslne to możemy zająć się stworzeniem zapytania formularza wyszukiwania.
Do wyszukiwania używamy funkcji mysqla
MATCH(col1,col2,..) AGAINST ('szukany_tekst')
która zwraca wyniki trafności wyszukiwania.
Teraz zróbmy z tego zapytanie:
<?php $q=mysql_query(\"SELECT MATCH(post_subject,post_text) AGAINST ('\".$_POST[\"f\"].\"') AS stopien, post_text, post_ID,post_subject FROM prefix_posts_text ORDER B
Y stopien DESC\") or die(mysql_error());?>
zakładając, że w zmiennej $_POST["f"] mamy szukane wyrażenie.
Jeżeli zapytanie działa, to jedziemy dalej, jeżeli nie to szukamy rozwiązania w manualu.
Teraz przypisujemy odpowiednie wartości do tablic:
<?php for($i=0; $i<mysql_num_rows($q); $i++) { if($t[\"stopien\"]>0) { $stopnie[]=$t[\"stopien\"]; $IDs[]=$t[\"post_ID\"]; $sub[]=$t[\"post_subject\"]; $post[]=$t[\"post_text\"]; } } ?>
Teraz przygotujmy wyświetlanie wyników.
Ponieważ zwracane wyniki trafności nie są za każdym razem identyczne, wyszukujemy najwiekszą wartość:
<?php ?>
Teraz (w pętli) z proporcji obliczamy procenty trafności każdego zapytania, i wyświetlamy dane:
<?php for($i=0; $i<count($stopnie); $i++) { // instrukcje wyświetlające } ?>
I wyszukiwarka gotowa :-)
:arrow: <b>Przykład</b>
Powyżej można zobaczyć przykład działania wyszukiwarki podpiętej pod phpBB.
<i><b>Metoda działania wyszukiwarki.</b></i>
(na podstawie moich obserwacji)
Trafność zostaje wyliczona w następujący sposób - jest liczona ilosc szukanych słów i podstawiona do ilości ogólnej wyrazów w ciągu i na podstawie tego zostaje zwrócona wartość. Czyli mówiąc prościej - na górze strony wyszukiwania (największa trafność) będą posty z najwyższym stosunkiem wyrazów do szukanego ciągu, czyli np. najkrótsze posty z największą ilością szukanych słów.
Ograniczeniem jest długość ciągu - wyszukiwarka działa dopiero przy szukanych wyrażeniach dłuższych niż 3 znaki.