Wellicht had ik de topictitel beter kunnen omschrijven, maar het komt er wel ong. op neer, ik heb een database van 6+ GB en 100.000+ drivers op mijn server.
Aangezien ik dmv mijn cursus AMBI steeds meer over UML en OO leer wil ik nu ook mijn site herontwerpen in OO. Ik kom echter op het volgende probleem uit:
Op mijn site zijn meerdere zoek mogelijkheden, waaronder bijvoorbeeld Simple Search. Men kan hier de device (apparaat), manufacturer (fabrikant) en trefwoord opgeven en hier rollen vervolgens een aantal drivers uit.
Nu heb ik een UML ontwerp hiervoor gemaakt, namelijk met o.a de klasse Driver en een klasse Result. Met de klasse Driver kan 1 driver per keer worden opgehaald en niet een hele lijst d.m.v een SQL query. Nu wil ik dat de klasse Result een SQL query opbouwt d.m.v de zoekopdracht, bijv.
Ik wil nu met de klasse Result een array van objecten vormen aan de hand van de klasse Driver. Of beter gezegd, d.m.v een loop wil ik objecten uit de klasse Driver halen d.m.v de SQL-query.
Dit lijkt mij echter niet mogelijk omdat Driver steeds slechts 1 driver teruggeeft en geen lijst van drivers.
Om het te verduidelijken, wat ik wil is dus dat de klasse Result een lijst met objecten Driver teruggeeft aan de hand van een SQL-query.
Nog een tweede vraag. Bij een zoekresultaat moet ook een becijfering/rank worden opgenomen, bijv. 98%. Dit gaat bijna automatisch met SQL dankzij de AGAINST-statement. Echter worden de resultaten bij een lijst van boven de 10 naar een volgende pagina verwezen. Als er bijvoorbeeld 100 resultaten zijn betekend dat dat er 10 pagina's met drivers aangemaakt worden. Maar hoe kan ik de becijfering/rank op de tweede pagina berekenen ?
Momenteel doe ik dit door aan de volgende pagina in de lijst de becijfering van het laatste resultaat mee te geven.
Ter voorbeeld:
1. 100%
2. 99%
3. 97%
4. 94%
5. 93%
6. 91%
7. 88%
8. 87%
9. 84%
10. 82%
Nu geef ik nummer 10 mee aan de volgende pagina. De becijfering word dan niet met 100 berekend maar met 82. Echter dit werkt niet correct, de becijfering klopt dan niet meer. Ik heb er vervolgens over gedacht om de resultaten in een tijdelijke session te stoppen, alleen zijn de resultaten van bijv. pagina 3 na 15 minuten niet meer bereikbaar omdat de session dan is verlopen en daarmee ook de resultaten.
Mocht het verhaal niet duidelijk genoeg zijn laat het me weten en ik licht het beter toe.
Aangezien ik dmv mijn cursus AMBI steeds meer over UML en OO leer wil ik nu ook mijn site herontwerpen in OO. Ik kom echter op het volgende probleem uit:
Op mijn site zijn meerdere zoek mogelijkheden, waaronder bijvoorbeeld Simple Search. Men kan hier de device (apparaat), manufacturer (fabrikant) en trefwoord opgeven en hier rollen vervolgens een aantal drivers uit.
Nu heb ik een UML ontwerp hiervoor gemaakt, namelijk met o.a de klasse Driver en een klasse Result. Met de klasse Driver kan 1 driver per keer worden opgehaald en niet een hele lijst d.m.v een SQL query. Nu wil ik dat de klasse Result een SQL query opbouwt d.m.v de zoekopdracht, bijv.
code:
1
2
3
4
5
| SELECT *, MATCH(modelnumbers,file,fccID) AGAINST (KEYWORD) AS rank FROM drivers WHERE MATCH(modelnumbers,file,fccID) AGAINST ('KEYWORD') AND deviceID = 'DEVICE' AND OS LIKE 'OS' |
Ik wil nu met de klasse Result een array van objecten vormen aan de hand van de klasse Driver. Of beter gezegd, d.m.v een loop wil ik objecten uit de klasse Driver halen d.m.v de SQL-query.
Dit lijkt mij echter niet mogelijk omdat Driver steeds slechts 1 driver teruggeeft en geen lijst van drivers.
Om het te verduidelijken, wat ik wil is dus dat de klasse Result een lijst met objecten Driver teruggeeft aan de hand van een SQL-query.
Nog een tweede vraag. Bij een zoekresultaat moet ook een becijfering/rank worden opgenomen, bijv. 98%. Dit gaat bijna automatisch met SQL dankzij de AGAINST-statement. Echter worden de resultaten bij een lijst van boven de 10 naar een volgende pagina verwezen. Als er bijvoorbeeld 100 resultaten zijn betekend dat dat er 10 pagina's met drivers aangemaakt worden. Maar hoe kan ik de becijfering/rank op de tweede pagina berekenen ?
Momenteel doe ik dit door aan de volgende pagina in de lijst de becijfering van het laatste resultaat mee te geven.
Ter voorbeeld:
1. 100%
2. 99%
3. 97%
4. 94%
5. 93%
6. 91%
7. 88%
8. 87%
9. 84%
10. 82%
Nu geef ik nummer 10 mee aan de volgende pagina. De becijfering word dan niet met 100 berekend maar met 82. Echter dit werkt niet correct, de becijfering klopt dan niet meer. Ik heb er vervolgens over gedacht om de resultaten in een tijdelijke session te stoppen, alleen zijn de resultaten van bijv. pagina 3 na 15 minuten niet meer bereikbaar omdat de session dan is verlopen en daarmee ook de resultaten.
Mocht het verhaal niet duidelijk genoeg zijn laat het me weten en ik licht het beter toe.