Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Dziwne zachowanie szukarki
bumfank
post 19.05.2007, 10:34:16
Post #1





Grupa: Zarejestrowani
Postów: 87
Pomógł: 0
Dołączył: 29.02.2004
Skąd: /dev/null

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


Witam serdecznie, sciagnalem skrypt wyszukiwarki z tutoriala ZEND`owego
iii dziala a zarazem nie dziala:

na stronie:

http://infoparty.pl/this.php - dziala
http://infoparty.pl/tracklist.php - nie dziala

wpiszcie np armin

mimo ze w obu miejscach kod jest praktycznie taki sam ( roznia sie tylko glowne ify z $c na $_POST ):


  1. <?
  2. if(!$c) { 
  3. ?>
  4. <form action="this.php?c=1" method=POST>
  5. <b>Find Results with: </b><br>
  6. Any of these words: <input type="text" length=40 name="any"> <br>
  7. All of these words: <input type="text" length=40 name="all"> <br>
  8. None of these words: <input type="text" length=40 name="none"> <br>
  9. <input type="submit" value="Search">
  10. </form>
  11. <? 
  12.  } else if($c) {
  13. include("include/config.php");
  14.  
  15.  if((!$all) || ($all == "")) { $all = ""; } else { $all = "+(".$all.")"; }
  16.  if((!$any) || ($any == "")) { $any = ""; } 
  17.  if((!$none) || ($none == "")) { $none = ""; } else { $none = "-(".$none.")"; }
  18.  $query = "
  19.  SELECT *,
  20. MATCH(`nazwa`) AGAINST ('$all $none $any' IN BOOLEAN MODE) AS `score` 
  21. FROM `tracklisty` 
  22.  WHERE MATCH(`nazwa`) AGAINST ('$all $none $any' IN BOOLEAN MODE) ORDER BY `score` DESC";
  23. $artm1 = MySQL_query($query);
  24. if(!$artm1) { 
  25.  echo MySQL_error()."<br>$query<br>"; 
  26. }
  27. echo "<b>Article Matches</b><br>";
  28. if(MySQL_num_rows($artm1) > 0) {
  29.  echo "<table>";
  30. echo "<tr><td>Score </td><td>Title </td><td>Body</td></tr>";
  31.  while($artm2 = MySQL_fetch_array($artm1)) {
  32. $val = round($artm2['score'], 2);
  33. $val = $val*10;
  34. echo "<tr><td>$val</td>";
  35. echo "<td>{$artm2['nazwa']}</td>";
  36. echo "</tr>";
  37.  }
  38. echo "</table>";
  39.  }
  40.  else { 
  41. echo "No Results were found in this category.<br>"; 
  42.  }
  43.  echo "<br>"; 
  44.  } 
  45.  
  46.  
  47. ?>


help? :-)

Ten post edytował bumfank 19.05.2007, 10:39:17


--------------------
Drukuj24.pl - Drukowanie to koszt
Go to the top of the page
+Quote Post
phpion
post 19.05.2007, 15:46:02
Post #2





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Wina leży zapewne w zapytaniu SQL. Korzystasz z indexów FULLTEXT, lecz wyszukiwanie z użyciem MATCH ... AGAINST spisuje się dobrze tylko przy większej ilości rekordów. Dla testu wywal:
  1. WHERE MATCH(`nazwa`) AGAINST ('$all $none $any' IN BOOLEAN MODE)

i równocześnie wyświetlaj 'score' dla każdego rekordu. W rezulatacie pewnie otrzymasz wszystkie wpisy z bazy danych i dla każdego score będzie wynosiło 0.
Poczytaj na mysql.com o FULLTEXTach; z tego co pamiętam był tam jakiś związek z występowaniem szukanej frazy w ponad 50% rekordów (coś takiego).
Go to the top of the page
+Quote Post

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: 7.07.2025 - 15:29