Here's my problem:
I have a website where people can search based on their location (which is converted to lat/long coordinates). I have many products stored in a database with their lat/long coordinates. I also have a function to calculate the distance between two points based on their coordinates.
Now I'm looking for a way to find one of these things:
- The n nearest products to the user's location.
- All the products within a radius of x kilometers from the user's location.
Both solutions would be fine for my application.
Currently I just iterate over all the database entries, find their distance, and sort them. This obviously gets way too slow with a lot of entries.
Are there any algorithms/data structures I can apply here to make it faster?
Thanks in advance!