Hoi,

ik ben bezig met een zoekmachinescript en nu is het zoekscript aan de beurt.

Nu heb ik gewoon met LIKE gedaan in de query, maar dan zoekt het script ook gewoon op halve woorden dus

testtest

ik zoek op test en hij vind ook testtest.

Hoe kan ik ervoor zorgen dat hij alleen op hele woorden zoekt in de database?

Alvast bedankt,
Arthur
Simpele antwoord: voeg spaties toe voor en na je zoekwoord. Dan matcht hij alles wat begint met een spatie, vervolgens je zoekwoord, en dan weer eindigd met een spatie.

Je ruikt het probleem al, woorden die aan het begin staan, of aan het eind staan, of direct volgen op een ( of koppelteken, en woorden die een punt of ) of aanhalingsteken voorafgaan worden overgeslagen.
Dat werkt niet helemaal:

$zoekterm = mysql_real_escape_string($_GET['zoek']);
$zoekterm = " ".$zoekterm." ";

Hij vind nu helaas helemaal niets meer.
Dan doe je het zo:


CONCAT(' ', tekst, ' ') LIKE '% zoekwoord %'
OR  tekst LIKE CONCAT('%', "\n", 'zoekwoord %')
OR  tekst LIKE CONCAT('%', "\n", 'zoekwoord', "\n", '%')
OR  tekst LIKE CONCAT('% zoekwoord', "\n", '%')
OR  tekst LIKE '%(zoekwoord %'
OR  tekst LIKE '%(zoekwoord)%'
OR  tekst LIKE '% zoekwoord)%'
OR  tekst LIKE '% zoekwoord.%'
OR  tekst LIKE '% zoekwoord,%'
OR  tekst LIKE '% zoekwoord:%'
OR  tekst LIKE '% zoekwoord;%'
OR  tekst LIKE '%\'zoekwoord %'
OR  tekst LIKE '%\'zoekwoord\'%'
OR  tekst LIKE '% zoekwoord\'%'
OR  tekst LIKE '%"zoekwoord %'
OR  tekst LIKE '%"zoekwoord"%'
OR  tekst LIKE '% zoekwoord"%'

En zo kan je nog enkele weken doorgaan... Succes ;-)

Ik zou het persoonlijk met een regex oplossen.
Kan je dat met regex uitleggen?
Kan iemand mij helpen?

Reageren