Fulltext indexes met mysql

Ik las gister een artikel over MySQL indexes op www.databasejournal.com. Ik was echt verwonderd dat het zo simpel was. Omdat Sander Draaier recent een berichtje plaatste op het forum met de vraag hoe MySQL indexes werkt, schrijf ik er een artikel over.

Ik ga er vanuit dat je een al wat geavanceerdere MySQL gebruiker bent en weet dat je PHMyAdmin of een ander database management programma moet gebruiken om de SQL codes uit te voeren.

De functies in MySQL MATCH() kan in versies vanaf 3.23.23 gebruikt worden. De wat geavanceerdere variant IN BOOLEAN MODE is beschikbaar vanaf versie 4. Ik leer je in deze tutorial hoe je FULLTEXT kan zoeken in een MySQL database. Dit is alleen mogelijk in de MyISAM tabellen. Dit is de standaard MySQL tabel. Heb je dus iets anders ingesteld, dan kun je TYPE=MyISAM; achter je tabel creëer code zetten (voorbeeld zometeen).

MySQL FULLTEXT indexes is makkelijk en vooral geen overbodige luxe om te gebruiken omdat het erg snel is. Als je bijvoorbeeld een tabel in je database hebt met 50 rijen en er 10 keer per minuut iets wordt aangevraagd dan is dit al handig om te gebruiken. Al helemaal dus als je een tabel in je database hebt met 50.000 rijen (zoals het forum op PHPhulp) en die 100+ keer per minuut benaderd wordt. Om deze tutorial te begrijpen en om er zoveel mogelijk van te leren kun je de volgende tabel aanmaken:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?
CREATE TABLE fulltext_test (
msg VARCHAR(150),
FULLTEXT(msg)
)
TYPE=MyISAM;
?>


Je ziet nu waarschijnlijk een nieuwe optie, FULLTEXT(msg);. Om zo meteen gebruik te kunnen maken van FULLTEXT indexes moet de kolomnaam waarop je wilt zoeken geïndexeerd zijn. Dit doe je dus met de functie FULLTEXT(). In de functie moet de naam van de kolom worden opgegeven. In dit geval is dit de naam: ‘msg’.

Zet de volgende waardes in deze tabel:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?
INSERT INTO fulltext_test VALUES
('4 uur phphulp, dat zouden meer mensen moeten doen'),
(
'altijd weer die phphulp, het zou verboden moeten worden'),
(
'phphulp, zoals php ooit bedoelt was'),
(
'handig, van phphulp.'),
(
'elke klus, een phphulp klus'),
(
'PHPhulp, geen fratsen, dat scheelt..'),
(
'PHPhulp, daar plukt ú de vruchten van...'),
(
'phphulp, bent u binnenkort ook een ex-man en heeft u een extra-werkgever nodig?');
?>




Ik raad je aan om deze test tabel aan te maken met deze test waardes zodat je het helemaal zult begrijpen. Als je al een tabel hebt en je wilt het toch daarop toepassen dan kun je de volgende SQL code gebruiken (via ALTER).

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?
ALTER TABLE fulltext_test ADD FULLTEXT(msg);
?>

De naam ‘msg’ moet je dan vervangen met de naam van jou kolom waarop je FULLTEXT indexes wilt toepassen.

« Lees de omschrijving en reacties

Inhoudsopgave

  1. Fulltext indexes met mysql
  2. Zoeken in een tabel
  3. Samenvatting

PHP tutorial opties

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.