In de praktijk
Voor dit artikel maak ik gebruik van de volgende tabel:
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?
CREATE TABLE `artikelen` (
`id` INT( 11 ) DEFAULT '0' NOT NULL ,
`titel` VARCHAR( 50 ) NOT NULL ,
`content` TEXT NOT NULL ,
UNIQUE (`id`),
FULLTEXT (`titel` ,`content` )
);
?>
CREATE TABLE `artikelen` (
`id` INT( 11 ) DEFAULT '0' NOT NULL ,
`titel` VARCHAR( 50 ) NOT NULL ,
`content` TEXT NOT NULL ,
UNIQUE (`id`),
FULLTEXT (`titel` ,`content` )
);
?>
Met de volgende inhoud:
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?
INSERT INTO artikelen VALUES (0, 'MySQL Tutorial', 'DB staat voor database...');
INSERT INTO artikelen VALUES (1, 'Hoe gebruik je MySQL efficient?', 'Nadat je de volgende stappen....');
INSERT INTO artikelen VALUES (2, 'MySQL optimaliseren', 'In deze tutorial laten we je zien...');
INSERT INTO artikelen VALUES (3, '1001 MySQL tips ', '1. Start mysql nooit als root...');
INSERT INTO artikelen VALUES (4, 'MySQL vs PostgreSQL', 'In de volgende database vergelijking...');
INSERT INTO artikelen VALUES (5, 'MySQL beveiliging', 'Als je mysql goed hebt geinstalleerd...');
?>
INSERT INTO artikelen VALUES (0, 'MySQL Tutorial', 'DB staat voor database...');
INSERT INTO artikelen VALUES (1, 'Hoe gebruik je MySQL efficient?', 'Nadat je de volgende stappen....');
INSERT INTO artikelen VALUES (2, 'MySQL optimaliseren', 'In deze tutorial laten we je zien...');
INSERT INTO artikelen VALUES (3, '1001 MySQL tips ', '1. Start mysql nooit als root...');
INSERT INTO artikelen VALUES (4, 'MySQL vs PostgreSQL', 'In de volgende database vergelijking...');
INSERT INTO artikelen VALUES (5, 'MySQL beveiliging', 'Als je mysql goed hebt geinstalleerd...');
?>
We werken eigenlijk met één functie (against() hoort erbij) namelijk match(). Je gebruikt match() altijd in combinatie met against().
* Match(veld1, veld2 etc) - Geeft aan in welke velden gezocht moet worden. (meerdere velden gescheiden door komma's)
* Against(zoekterm) - De term waarnaar gezocht moet worden in de velden.
Je kan ook nog een BOOLEAN zoekopdracht uitvoeren, dat wil zeggen een zoekterm met + - etc. (Dit werkt alleen in MySQL versies 4.0.1 of hoger!)
Against('+zoekterm1 -zoekterm2', IN BOOLEAN MODE)
Operatoren zijn:
+ Het woord / de woorden gemarkeerd met + moeten voorkomen in het resultaat.
- Het woord / de woorden gemarkeerd met - mogen absoluut niet voorkomen in het resultaat.
< Maakt een woord minder belangrijk voor de score.
> Maakt een woord belangrijker voor de score.
( )Deze dienen geplaatst te worden om een groep woorden, zodat je maar één operator hoeft te gebruiken. (bv. +('mysql root'))
~ De resultaten waarbij woorden gevonden gemarkeerd met een ~ worden veel lager geplaatst. (Lagere relevantie)
* Wildchard
" Een groep woorden die omgeven wordt door " " wordt in zijn geheel gezocht.
Voorbeelden operatoren:
ZoektermResultaat
Appel banaan Bevat een van deze woorden
+appel -banaan Appel, maar banaan komt er niet in voor.
+appel peer Appel, maar word hoger in de resultaten gezet als ook peer erin voorkomt.
+appel +(>peer <banaan)Appel en peer of banaan, maar appel + peer word hoger in de resultaten gezet dan appel + banaan.
+appel *Appel, Appelflap etc.
"grote huis" Wel: "het grote huis", Niet: "het grote mooie huis"