Zoeken binnen je website

artikel details Artikel details
In Artikels » PHP
Door BigSmoke
26-02-2008 17:40
Bron
PHP, zoeken, website
share Share
Toevoegen aan eKudos Toevoegen aan NUjij Toevoegen aan Technorati Toevoegen aan Del.icio.us facebook E-mail naar een vriend Plaatsen/stemmen op MSN Reporter Blig it! Voeg toe op netjes.be
artikels Soortgelijke artikels
Volledig artikel Cronjobs
Volledig artikel Cheat Sheets
Volledig artikel Mysql Injectie
Volledig artikel Informatie opvragen zonder...
Volledig artikel PHP variabelen en operatoren


Adverteren bij Daisycon

Eén van de belangrijkste doelen van een website is dat bezoekers snel vinden wat ze zoeken. Hoe sneller ze een bepaald document vinden hoe kleiner de kans is dat ze naar andere sites gaan. Het is niet altijd makkelijk om een hele database aan artikels en informatie overzichtelijk weer te geven. Daardoor maken veel bezoekers gebruik van een zoeksysteem om binnen jouw site te zoeken.

Het is dus van primair belang dat jouw site een goed werkende zoekfunctie heeft. Als ik informatie van een bepaalde site nodig heb en deze niet direct vind of als hun zoekfunctie niet goed werkt maak ik gebruik van google om binnen de website te zoeken. site:webhog.be artikels over PHP. Natuurlijk doet niet iedereen dit en is de verleiding veel groter om een andere website te zoeken waar de informatie wel snel beschikbaar is.

Hoe kunnen we een goedwerkend zoeksysteem maken?



Allereerst kan je vrij gemakkelijk met PHP records zoeken door gebruik te maken van een gelijkaardige onderstaande query.

$query = "SELECT * FROM tabel WHERE LOWER(tabel.document) LIKE LOWER('%$keyword%')";

Met deze query zal alles worden doorzocht ongeacht hoofd of kleine letters. Dit is een fout die vele zoekscript maken. Stel er zit een document in de database waarin het woord 'hond' op die manier voorkomt. Maar als de bezoeker nu zoekt op 'Hond' met een hoofdletter zal niets worden gevonden. Door gebruik te maken van LOWER is dit probleem van de baan.

Wat als de bezoeker meer dan 100 pagina's aan resultaten krijgt en maar 1 bepaald document zoekt?



Het is niet practisch als de bezoeker al deze pagina's moet aflopen om het juiste document te vinden. Een oplossing hiervoor is om het resultaat van de zoekterm op te splitsen in categorieën. Stel de database zit vol met hotels. Er zitten hotels van 1, 2, 3, 4 en 5 sterren in. De bezoeker zoekt een welbepaald hotel dat "Mercurio" noemt. Hij krijgt echter een hele lijst met hotels waar deze naam in voorkomt. Maar de bezoeker weet ook dat het hotel dat hij zoekt 4 sterren heeft. Hij zou dan bijvoorbeeld een tab kunnen aan klikken met hotels die Mercurio heten met 4 sterren. Zo sluit hij al 80% van ongewenste Mercurio hotels uit.

Het is ook handig als een bezoeker de resultaten kan ordenen. Als hij weet dat het hotel in de database staat van in het begin van de website kan hij de resultaten tonen van oud naar nieuw.

Enkele andere gebruiksvriendelijke tips



1. Je zou je zoeksysteem zodanig moeten maken dat hij spellingsfouten kan detecteren en corrigeren om zo de gewenste resultaten weer te geven. Je denkt waarschijnlijk nu dat dit vrij onmogelijk is om te doen als je geen database hebt met correcte schrijfwijzes van woorden. Maar niets is minder waar.

Je kan namelijk op het woord dat je krijgt (als je vermoed dat hierin een fout inzit) nagaan door eventueel gebruik te maken van str_replace een stuk vervangen en op dit nieuwe verbeterde woord in de database zoeken. Het keyword dat de meeste resultaten toont kan gezien worden als de correcte schrijfwijze van het woord. Bij moderne zoekmachines wordt zo tewerk gegaan. Dan krijg je een bericht met Did you mean ... .

2. Een andere manier om gerichte resultaten te tonen is door elk woord waarop gezocht wordt op te splitsen op een spatie en naar de opgesplitste resultaten te zoeken.

3. Zorg dat punten commas en andere leestekens uit het zoekwoord worden gehaald bij het zoeken. Zodat enkel op tekst en cijfers kan worden gezocht. Een punt komt immers op het einde van elke zin voor.

Een simpel zoeksysteem


Basis zoeksysteem waar de bovenvernoemde tips niet in verwerkt zijn.

if(isset($_POST['zoekwoord'])){
    $keyword=addslashes($_POST['zoekwoord']);
    $query = "SELECT * FROM tabel WHERE LOWER(tabel.document) LIKE LOWER('%$keyword%')";
    $zoeken = mysql_query($query);
    $aantal=mysql_num_rows($zoeken);
    if($aantal == 0){
        echo 'Geen resultaten gevonden';
    }else{
        //verwerk resultaten
    }
}else{
    print '<form method="post" action="">
    <input type="text" name="zoekwoord" value="Zoeken" />
    <input type="submit" name="submit" value="Zoek!" />
    </form>';
}   




1. Reactie door stevenv16 op 03-02-09 07:02
En hoe moet ik dit doen als de zoek kader in mijn flash header staat?
Om op dit artikel te reageren dient u een account aan te maken.


webhog