login  Naam:   Wachtwoord: 
Registreer je!
 Scripts:

Scripts > PHP > Zoekmachines > Fulltext Search

Fulltext Search

Auteur: rambo - 20 oktober 2004 - 14:48 - Gekeurd door: Dennisvb - Hits: 13581 - Aantal punten: 3.70 (5 stemmen)




Met dit script kun je zoeken in zogenaamde 'Fulltext' tabellen. Dit is anders dan te zoeken dmv 'LIKE' omdat je daarmee niet in kolom-types TEXT etc. kan zoeken.
Je moet er wel voor zorgen dat je tabel van het type MyIsam is, en je moet bij elke kolom waarin je wilt zoeken, zorgen dat Fulltext 'aanstaat'.
Dit kun je dmv deze query doen:

  1. ALTER TABLE `TABEL NAAM` ADD FULLTEXT (
  2. `KOLOM 1` ,
  3. `KOLOM 2`
  4. )


In dit voorbeeld maak ik gebruik van de volgende tabel:

  1. CREATE TABLE `nieuws` (
  2. `nieuws_id` int(11) NOT NULL auto_increment,
  3. `categorie` varchar(255) NOT NULL default '',
  4. `onderwerp` varchar(255) NOT NULL default '',
  5. `datum` date NOT NULL default '0000-00-00',
  6. `member_id` int(11) NOT NULL default '0',
  7. `intro` tinytext NOT NULL,
  8. `nieuwsbericht` text NOT NULL,
  9. PRIMARY KEY (`nieuws_id`),
  10. FULLTEXT KEY `volledigetekst` (`onderwerp`,`intro`,`nieuwsbericht`)
  11. ) TYPE=MyISAM AUTO_INCREMENT=5 ;

Ik heb gemerkt dat het pas begint te werken als er meer dan 3 rows zijn, dus.....zorg daarvoor 
Ik hoop dat het een beetje duidelijk is...
Je kunt de Fulltext Search voor nog meer doeleinden gebruiken dan een zoekfunctie, maar in dit geval gebruik ik het zo.

Code:
  1. <?php
  2. mysql_connect("host", "gebruiker", "wachtwoord"); //Connecten met DB
  3. mysql_select_db("database_naam");
  4.  
  5. if(isset($_POST['submit'])) {
  6. ?>
  7. <table>
  8. <tr>
  9. <td>
  10. <b>Categorie:</b>
  11. </td>
  12. <td>
  13. <b>Titel:</b>
  14. </td>
  15. <td>
  16. <b>Score:</b>
  17. </td>
  18. </tr>
  19. <?php
  20. $query = "SELECT * FROM tabel WHERE MATCH (onderwerp, intro, nieuwsbericht) AGAINST ('" . $_POST['zoekwoord'] . "')";
  21. $resultaat = mysql_query($query) or die(mysql_error()); //Query uitvoeren
  22.  
  23. if(mysql_num_rows($resultaat)== 0) { //Mysql_num_rows geeft 0 als er geen resultaten zijn, of als de zoekterm in meer dan 50% van de resultaten voorkomt.
  24. echo "<tr>
  25. <td>Geen of te veel resultaten, maak je zoekopdracht specifieker.</td>
  26. </tr>
  27. ";
  28. } else {
  29.  
  30. while($zoek = mysql_fetch_assoc($resultaat)) {
  31. ?>
  32. <tr>
  33. <td>
  34. <?php
  35. echo $zoek['categorie'];
  36. ?>
  37. </td>
  38. <td>
  39. <?php
  40. echo $zoek['onderwerp'];
  41. ?>
  42. </td>
  43. </tr>
  44. <?php
  45. }
  46. } //einde 'aantal'-lus
  47.  
  48. echo "</table>";
  49.  
  50. } else {
  51. //Formulier weergeven
  52. ?>
  53. <form method="post" action="">
  54. Zoeken naar: <input type="text" name="zoekwoord"/><br/>
  55. <input type="submit" name="submit" value="Zoek"/>
  56. </form>
  57. <?php
  58. }
  59. ?>
Download code! Download code (.txt)

 Stemmen
Niet ingelogd.

 Reacties
Post een reactie
Lees de reacties (5)
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.057s