Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Opis jak zrobić wyszukiwarkę z wyświetlaniem trafności
spenalzo
post 22.08.2003, 20:30:56
Post #1





Grupa: Zarejestrowani
Postów: 2 064
Pomógł: 1
Dołączył: 22.01.2003
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Ponieważ zaciekawiło mnie to co napisał Dragossani w <b>tym</b>wątku, postudiowałem manual do MySQLa i oto co z tego wynikło - wyszukiwarkę z określaniem trafności można zrobić jednym zapytaniem :-)

<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:
  1. 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
  1. MATCH(col1,col2,..) AGAINST ('szukany_tekst')

która zwraca wyniki trafności wyszukiwania.

Teraz zróbmy z tego zapytanie:
  1. <?php
  2. $q=mysql_query(&#092;"SELECT MATCH(post_subject,post_text) AGAINST ('\".$_POST[\"f\"].\"') AS stopien, post_text, post_ID,post_subject FROM prefix_posts_text ORDER B
    Y
  3. stopien DESC&#092;") 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:
  1. <?php
  2.  for($i=0; $i<mysql_num_rows($q); $i++)
  3.  {
  4. if($t[&#092;"stopien\"]>0)
  5. {
  6.  $stopnie[]=$t[&#092;"stopien\"];
  7.  $IDs[]=$t[&#092;"post_ID\"];
  8.  $sub[]=$t[&#092;"post_subject\"];
  9.  $post[]=$t[&#092;"post_text\"];
  10. }
  11.  }
  12. ?>


Teraz przygotujmy wyświetlanie wyników.
Ponieważ zwracane wyniki trafności nie są za każdym razem identyczne, wyszukujemy najwiekszą wartość:
  1. <?php
  2.  $max=$stopnie[@array_search(@max($stopnie),$stopnie)];
  3. ?>


Teraz (w pętli) z proporcji obliczamy procenty trafności każdego zapytania, i wyświetlamy dane:
  1. <?php
  2. for($i=0; $i<count($stopnie); $i++)
  3. {
  4.  $proc=floor(($stopnie[$i]*100)/$max);
  5.  // instrukcje wyświetlające
  6. }
  7. ?>


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.


--------------------

Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 24.07.2025 - 13:37