Immagina un set di dati di tutti i ristoranti negli Stati Uniti (simile a Yelp, ecc.), come faresti a restituire una serie di ristoranti all'interno di un certo intervallo di un particolare codice postale. (Supponendo che tu abbia già una funzione, distanceBetweenZipCodes, che calcola la distanza per te.)
Il metodo forza bruta sarebbe
For each restaurant in restaurantsInUSA
if(distanceBetweenZipCodes(restaurant.zipcode, user.zipcode) < walkingDistance)
save restaurant
Tuttavia, sembra abbastanza inefficiente includere i ristoranti di New York nella ricerca se l'utente si trova in California. Ma è possibile che un ristorante si trovi vicino a una linea di stato, quindi segmentare i dati per stato sarebbe problematico. Si ottiene lo stesso problema se si tenta di segmentare per contee, città o altri confini amministrativi.
Quale sarebbe il modo più appropriato per segmentare i dati per evitare di dover controllare ogni record per tutte le ricerche?