Ik hoop dat iemand me met het volgende probleem kan helpen.
ik heb een db met een tabel waarin posts van een forum worden opgeslagen.
nu wil ik een zoekfunctie gaan maken waarmee er gezocht kan worden in deze tabel.
een aantal eisen waar het aan moet voldoen:
- er moet gezocht kunnen worden op één of meerdere woorden waarbij er gescheiden kan worden door een spatie of een komma
- bij zoeken naar meerdere woorden moeten alle opgegeven woorden voorkomen. (dus niet of de een of de andere maar gewoon alles moet in 1 post staan)
- er moet gezocht kunnen worden op delen van woorden. zoeken op bijv. aa moet matchen met zowel 'aan' als 'vandaag'
het probleem waar ik tegenaanloop is het gebruiken van LIKE. Hierbij is het gebruik van wildcards mogelijk in de vorm van '%'. Punt is alleen dat deze methode bij meerdere woorden de exacte string gaat zoeken (dus de woorden moeten naast elkaar staan). Evenzo is het zoeken naar bijv. het stukje text '50%' niet mogelijk omdat de % hierin wordt gezien als een wildcard.
Het zal er dus op neerkomen dat ik match() en against() moet gebruiken.
Het probleem daarin is alleen dat je hierin alleen een truncate operator hebt (*). Deze kan dus alleen aan het eind gezet worden. (zoeken op 'aa' vind wel 'aandacht' maar niet 'vandaag')
Mijn vraag is dus hoe moet ik mijn SQL query opbouwen zodat deze aan alle bovenstaande voorwaarden voldoet?
ik heb een db met een tabel waarin posts van een forum worden opgeslagen.
nu wil ik een zoekfunctie gaan maken waarmee er gezocht kan worden in deze tabel.
een aantal eisen waar het aan moet voldoen:
- er moet gezocht kunnen worden op één of meerdere woorden waarbij er gescheiden kan worden door een spatie of een komma
- bij zoeken naar meerdere woorden moeten alle opgegeven woorden voorkomen. (dus niet of de een of de andere maar gewoon alles moet in 1 post staan)
- er moet gezocht kunnen worden op delen van woorden. zoeken op bijv. aa moet matchen met zowel 'aan' als 'vandaag'
het probleem waar ik tegenaanloop is het gebruiken van LIKE. Hierbij is het gebruik van wildcards mogelijk in de vorm van '%'. Punt is alleen dat deze methode bij meerdere woorden de exacte string gaat zoeken (dus de woorden moeten naast elkaar staan). Evenzo is het zoeken naar bijv. het stukje text '50%' niet mogelijk omdat de % hierin wordt gezien als een wildcard.
Het zal er dus op neerkomen dat ik match() en against() moet gebruiken.
Het probleem daarin is alleen dat je hierin alleen een truncate operator hebt (*). Deze kan dus alleen aan het eind gezet worden. (zoeken op 'aa' vind wel 'aandacht' maar niet 'vandaag')
Mijn vraag is dus hoe moet ik mijn SQL query opbouwen zodat deze aan alle bovenstaande voorwaarden voldoet?