Voor een artikel zoekmachine heb ik volgende situatie:
Een gebruiker kan een zoekopdracht ingegeven via een tekstveld en daarbij gebruik maken van een 'wildcard' (in ons geval *):
Bv: *ABC*DEF*GEF*
De zoektekst wordt gefilterd zodat alleen de letters en cijfers overblijven en de * wordt vertaald naar een % teken, zodat we in onze query krijgen:
SELECT test FROM tbl_test WHERE test LIKE '%ABC%DEF%GEF%';
Het veld test in onze database is een tekst veld in een MyISAM tabel.
Dit werkt uitstekend maar naarmate onze database groeit loopt dit toch trager en trager omdat we geen gebruik kunnen maken van een index. Heb wat opzoekingswerk gedaan en kwam uit bij een FULLTEXT index op ons test veld. Nu vroeg ik me af is dit dan de ideale oplossing, en hoe zou je dit dan vertalen naar een MATCH AGAINST statement waarbij je exact dezelfde zoekresultaten krijgt? Ik zou graag de zoekmethode behouden omdat deze zeer makkelijk werkt, maar aan database kant weet ik niet of dit de ideale oplossing is. Graag jullie meningen
Een gebruiker kan een zoekopdracht ingegeven via een tekstveld en daarbij gebruik maken van een 'wildcard' (in ons geval *):
Bv: *ABC*DEF*GEF*
De zoektekst wordt gefilterd zodat alleen de letters en cijfers overblijven en de * wordt vertaald naar een % teken, zodat we in onze query krijgen:
SELECT test FROM tbl_test WHERE test LIKE '%ABC%DEF%GEF%';
Het veld test in onze database is een tekst veld in een MyISAM tabel.
Dit werkt uitstekend maar naarmate onze database groeit loopt dit toch trager en trager omdat we geen gebruik kunnen maken van een index. Heb wat opzoekingswerk gedaan en kwam uit bij een FULLTEXT index op ons test veld. Nu vroeg ik me af is dit dan de ideale oplossing, en hoe zou je dit dan vertalen naar een MATCH AGAINST statement waarbij je exact dezelfde zoekresultaten krijgt? Ik zou graag de zoekmethode behouden omdat deze zeer makkelijk werkt, maar aan database kant weet ik niet of dit de ideale oplossing is. Graag jullie meningen
