Informatie uit query halen
Ik had een vraagje. Ik probeer als hobbyproject meerdere APIs en datastromen met elkaar te verbinden, maar hier zit dus ook een zoekfunctie achter.
Mijn vraag hierover is alsvolgt: wanneer een eindgebruiker op een bepaald keyword zoekt, wil ik bijvoorbeeld andere informatie tonen (infocards etc). Hiervoor moet ik dus de query van de gebruiker kunnen filteren en dan deze cards tonen op de resultatenpagina.
Ik geloof dat dit mogelijk is (zie dit op meerdere websites), maar ik vraag mij af wat de achterliggende technologie hiervan is, en of iemand mij in de richting kan sturen van een tutorial o.i.d.
Groetjes en alvast bedankt!
Ik kan me niet echt visualiseren wat je precies probeert te bereiken.
Hoop dat dit iets duidelijker is :).
Dat is op een aantal manieren te doen, belangrijkste is het filteren van (grote) hoeveelheden data.
Als je dat uit meerdere APIs op wil bouwen zou het beste zijn als deze het zoeken/filteren al ondersteunen, dan is het een kwestie van de zoekopdracht van de gebruiker doorsturen naar de API en de resultaten samenvoegen.
Als je het zelf moet gaan doen is het nogal afhankelijk van de hoeveelheid en diversiteit van de achterliggende data.
Als het om veel data gaat zul je al snel op een oplossing als ElasticSearch (of wat ouder: Apache Solr) komen, deze ondersteunt geavanceerde zoek en filter mogelijkheden maar dan moet je alle data lokaal opslaan (cache).
Is het weinig data dan kun je het in PHP filteren, al zal dat een aantal beperkingen opleggen, met name snelheid en complexiteit van de zoek/filter algoritmes.
Als de data relatief statisch is maar wel divers zou ik er voor kiezen om het periodiek in een dedicated zoekoplossing als ElasticSearch op te slaan en elke X uur te refreshen. Dan leg je de complexiteit buiten je eigen oplossing.
PostgreSQL/MySQL kan ook maar die is naar mijn mening minder geschikt voor zoek en filter oplossingen.
Er zullen ongetwijfeld meerdere manieren zijn die ik nu niet zie.
De gekozen oplossing is geheel afhankelijk van de data dus daar kan ik niet echt een advies over geven zonder meer te weten.
Gewijzigd op 18/03/2021 15:25:00 door Thom nvt
Zo krijg je toch alle data in 1 array terug die je kan aflopen.
Met SELECT onzinnaam AS voorkeurnaam kan je ook kolomnamen in 1 array-sleutel krijgen.
Gewijzigd op 21/03/2021 21:08:19 door Eddy E
PHP kan zoekresultaten combineren en presenteren, de gebruikelijke manier is in een browser.
Voor presentatie heb je kennis nodig van PHP, HTML, liefst ook CSS en eventueel JavaScript.
Voor het binnenhalen van zoekresultaten heb kennis nodig van waar je de gegevens vandaan kunt halen, zoals cURL, PDO en SQL, bestandssystemen, of documentatie van de API die je gebruikt.
Tutorials staan op verschillende sites, maar een veelgebruikte is https://www.w3schools.com
Documentatie over de verschillende PHP-onderdelen staan op https://secure.php.net
Ik gebruik cURL voor de api requests, maar mocht een gebruiker zoeken naar bijvoorbeeld 'feedback' dan wil ik bovenaan de resultaten al een feedback formulier plaatsen (zoals een zoekmachine informatie laat zien als een rekenmachine bij een zoekopdracht waar een berekening in voorkomt, of een stuk tekst bij een antwoord).
Ik moet mij nog even inlezen over elasticsearch e.d. want hier heb ik geen ervaring mee, maar bedankt!
Dat kan prima in PHP, zelfs zonder database:
Op een vergelijkbare manier kun je rekenmachine opdrachten herkennen d.m.v. een RegEx.
Dat is de eerste keer dat ik PHP 8 code aangereikt zie worden :-)
In eerdere PHP versies is dit natuurlijk ook prima op te lossen, bijv. met strpos().
Wil ik ook wel, maar zit nog op Debian met 7.3.
Thom nvt op 22/03/2021 12:53:43:
Om bijv. een specifiek formulier of een rekenmachine te tonen kun je (een deel van) de zoekstring matchen.
Dat kan prima in PHP, zelfs zonder database:
Op een vergelijkbare manier kun je rekenmachine opdrachten herkennen d.m.v. een RegEx.
Dat kan prima in PHP, zelfs zonder database:
Op een vergelijkbare manier kun je rekenmachine opdrachten herkennen d.m.v. een RegEx.
Wauw! Dit is precies wat ik zocht, heel erg bedankt!