Ik veronderstel dat je uiteindelijk een lijst met berichten krijgt die twee afzonderlijke rangordedimensies hebben, namelijk:
{ age: 86400, distance: 1000 }
{ age: 172800, distance: 5000 }
{ age: 57600, distance: 20000 }
{ age: 288000, distance: 8000 }
Het maakt niet echt uit wat de eenheden zijn, laten we zeggen seconden en meters. Als je wilt dat beide de sorteerrang beïnvloeden, krijg je een rangschikkingsalgoritme, op zijn eenvoudigst zoiets als dit:
rank = (C1 * age) + (C2 * distance)
Waar C1 en C2 zijn constanten die u kunt aanpassen om de wegingen af te stemmen. De waarden zijn afhankelijk van de eenheden die u gebruikt en hoeveel invloed u op de rangschikking toewijst aan elke dimensie.
Een andere optie zou kunnen zijn om eerst te bestellen op basis van tijd en dan afstand, dus alle berichten van vandaag gesorteerd op afstand; gevolgd door de volgorde van gisteren op afstand, enzovoort. Of omgekeerd, sorteren op afstand, dan leeftijd, dus alles binnen (0 - 1000m) gesorteerd op leeftijd; gevolgd door alles binnen (1001 - 2000 m), enzovoort.