Hallo.
Ik heb een vraag, waar ik niet helemaal uitkom.
Ik heb een on-line puzzelwoordenboek gemaakt en werkt prima zoals ik wil.
Maar nu wil ik iets uitbreiden, waar ik totaal niet uitkom.
De woorden zitten momenteel als volgt in de database:
De uitbreiding die ik wil doen, is om op lengte te kunnen zoeken. Stel, je typt in bij omschrijving 'deel' en bij aantal letters '6'. Dan moet je de moet je als resultaat krijgen:
Deel van een huis - keuken, zolder
Straathandelaar - venter
Weg - straat
Dat lukt op zich wel, met de volgende mysql query:
"SELECT * FROM woorden WHERE (omschrijving LIKE '".$zoekwoord."%' OR omschrijving LIKE '".$zoekwoord2."%' OR omschrijving LIKE '".$zoekwoord3."%') AND (betekenis
REGEXP '[, ][a-zA-Z.\\-]{".$aantletters."}[, ]' OR betekenis
REGEXP '[, ][a-zA-Z.\\-]{".$aantletters."}$' OR betekenis
REGEXP '^[a-zA-Z.\\-]{".$aantletters."}[, ]' OR betekenis
REGEXP '^[a-zA-Z.\\-]{".$aantletters."}$')
ORDER BY omschrijving LIMIT 5"
Er wordt dus gezocht op 3x $zoekwoord% (wat men dus invoert); 1x normaal, 1x na omzetting van de 'y' in 'ij' en 1x na omzetting van de spaties in niks.
Met betekenis REGEXP 'expression' zoek ik op de lengte.
Echter dit gaat niet altijd goed! Een afkorting (bijv m.n.) wordt op deze manier gezien als 4 letters. Ook betekenissen waar een streepje of een spatie in zit, wordt met deze karakters meegeteld.
Ik heb mij laten vertellen dat REGEXP nog eens je systeem ernstig vertraagt.
Door diverse mensen wordt deze manier dus afgeraden.
Nu heb ik ook versie 2 gemaakt (niet live).
De woorden zitten dan als volgt in de database:
Betekenis2 is hetzelfde als Betekenis, maar dab zonder punten, spaties, streepjes, enz.
Hiervoor heb ik een scriptje geschreven dat alles netjes op het scherm weergeeft.
Alleen met deze manier snap ik niet hoe je moet LIMITen.
Hoe kan ik nou max. 5 resultaten weergeven, waar de bij elkaar horende omschrijvingen als één resultaat worden gezien?
Wie kan mij hier helpen en/of heeft hier een passend advies voor?
Ik heb een vraag, waar ik niet helemaal uitkom.
Ik heb een on-line puzzelwoordenboek gemaakt en werkt prima zoals ik wil.
Maar nu wil ik iets uitbreiden, waar ik totaal niet uitkom.
De woorden zitten momenteel als volgt in de database:
| ID | OMSCHRIJVING | BETEKENIS |
| 1 | Deel van een huis | dak, eetkamer, kamer, keuken, slaapkamer, zolder |
| 2 | Straathandelaar | venter |
| 3 | Weg | pad, straat, zoek |
De uitbreiding die ik wil doen, is om op lengte te kunnen zoeken. Stel, je typt in bij omschrijving 'deel' en bij aantal letters '6'. Dan moet je de moet je als resultaat krijgen:
Deel van een huis - keuken, zolder
Straathandelaar - venter
Weg - straat
Dat lukt op zich wel, met de volgende mysql query:
"SELECT * FROM woorden WHERE (omschrijving LIKE '".$zoekwoord."%' OR omschrijving LIKE '".$zoekwoord2."%' OR omschrijving LIKE '".$zoekwoord3."%') AND (betekenis
REGEXP '[, ][a-zA-Z.\\-]{".$aantletters."}[, ]' OR betekenis
REGEXP '[, ][a-zA-Z.\\-]{".$aantletters."}$' OR betekenis
REGEXP '^[a-zA-Z.\\-]{".$aantletters."}[, ]' OR betekenis
REGEXP '^[a-zA-Z.\\-]{".$aantletters."}$')
ORDER BY omschrijving LIMIT 5"
Er wordt dus gezocht op 3x $zoekwoord% (wat men dus invoert); 1x normaal, 1x na omzetting van de 'y' in 'ij' en 1x na omzetting van de spaties in niks.
Met betekenis REGEXP 'expression' zoek ik op de lengte.
Echter dit gaat niet altijd goed! Een afkorting (bijv m.n.) wordt op deze manier gezien als 4 letters. Ook betekenissen waar een streepje of een spatie in zit, wordt met deze karakters meegeteld.
Ik heb mij laten vertellen dat REGEXP nog eens je systeem ernstig vertraagt.
Door diverse mensen wordt deze manier dus afgeraden.
Nu heb ik ook versie 2 gemaakt (niet live).
De woorden zitten dan als volgt in de database:
| id | OMSCHRIJVING | BETEKENIS | BETEKENIS2 | |
| 1 | Deel van een huis | dak | dak | |
| 2 | Deel van een huis | eetkamer | eetkamer | |
| 3 | Deel van een huis | kamer | kamer | |
| 4 | Deel van een huis | keuken | keuken | |
| 5 | Deel van een huis | slaapkamer | slaapkamer | |
| 6 | Deel van een huis | zolder | zolder | |
| 7 | Straathandelaar | venter | venter | |
| 8 | Weg | pad | pad | |
| 9 | Weg | straat | straat | |
| 10 | Weg | zoek | zoek |
Betekenis2 is hetzelfde als Betekenis, maar dab zonder punten, spaties, streepjes, enz.
Hiervoor heb ik een scriptje geschreven dat alles netjes op het scherm weergeeft.
Alleen met deze manier snap ik niet hoe je moet LIMITen.
Hoe kan ik nou max. 5 resultaten weergeven, waar de bij elkaar horende omschrijvingen als één resultaat worden gezien?
Wie kan mij hier helpen en/of heeft hier een passend advies voor?