PHP & MySQL LIKE andersom

Gestart doorAntonn4 reacties18 weergaven

5 berichten · pagina 1 van 1

Antonn

Lid · Topicstarter

Berichten
8.649
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Hey iedereen,

Je kent de LIKE functie wel: SELECT bericht FROM berichten WHERE bericht LIKE %patat% // Ik lust patat!

Ik wil dit andersom: SELECT bericht WHERE bericht LIKE Ik wil patat

Zo ongeveer dan. Het is voor een soort BOT. De tabel gaat er zo uit zien:
----------------------------------------------------------------------------
Vraag | Antwoord
----------------------------------------------------------------------------
help, vraag, probleem | Neem contact met ons op voor meer info!
----------------------------------------------------------------------------

Dan wil ik dat als iemand een zin als "help, ik snap iets niet" of "ik heb een probleem" hij het antwoord uit de database haalt.

Ik heb er al aan gedacht om met explode de zin van de gebruiker in stukken op te delen, alhoewel er een betere manier was die ik vergeten ben maar later wel ns opzoek wink . Dus als ik dan de zin opdeel per woord en per woord kijk kan ik LIKE gebruiken. Maar... Wat als de gebruiker "elp, v" typt? Dat komt niet goed. En met "LIKE , %" werkt het eerste trefwoord bijvoorbeeld niet.

Nu is mijn vraag dus of er niemand een veel beter idee heeft? Alvast bedankt biggrin
Groetjes, Antonn
0
Berichten
35.796
Reputatie
1
Punten
0,00
Lid sinds
Laatst gezien
Gewoon de vraag opdelen zodat je deze elementen hebt:
help
ik
snap
iets
niet

of:
ik
heb
een
probleem

en dan stop je dat in je query zodat je dit krijgt:
SELECT bla FROM la WHERE vraag LIKE %help% OR vraag LIKE %ik% OR vraag LIKE %heb% etc.

Eventueel doe je een prioriteitskolom erbij om te vermijden dat hij op onbelangrijke woorden gaat matchen.
0
Antonn

Lid · Topicstarter

Berichten
8.649
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Lennard schreef:
Gewoon de vraag opdelen zodat je deze elementen hebt:
help
ik
snap
iets
niet

of:
ik
heb
een
probleem

en dan stop je dat in je query zodat je dit krijgt:
SELECT bla FROM la WHERE vraag LIKE %help% OR vraag LIKE %ik% OR vraag LIKE %heb% etc.

Eventueel doe je een prioriteitskolom erbij om te vermijden dat hij op onbelangrijke woorden gaat matchen.
Als je het zo doet en iemand doet "ik heb n broer" dan komt dit er ook ivm de n enz. Ik heb het liever netjesder akls dit mogelijk is. Ik wil in mijn sql een row met allemaal trefwoorden, maar is er niets mogelijk om al deze treswoorden te onderschijden met een komma en zoeken op een van de woorden daarvan? Dan krijg je zeker geen foute dingen.
0
Berichten
35.796
Reputatie
1
Punten
0,00
Lid sinds
Laatst gezien
Oja, dan moet je gewoon die trefwoorden in een aparte tabel doen en die linken aan je vragen.
0
Rik

Lid

Berichten
18.393
Reputatie
0
Punten
0,04
Lid sinds
Laatst gezien
Fulltext match.
Het is een stuk zwaarder, maar je krijgt daardoor wel de meest matchende resultaten terug.

Let er wel op dat je enkel het type TEXT kan doorzoeken dan. Varchar o.i.d. kan niet met fulltext
0

Jouw reactie

Deel je idee, stel een vraag of help een ander verder.

Editor laden…

Praat mee met de One2xs-community.

Inloggen om te reageren