A Description of the problem:
Our website provides data to the user based on his location. We are using Visual Studio 2013, .NET framework 4.5 MVC.
Each time a user logs on to the site, his location is taken and a script is made to run. this script compares his location to a very large table that we have. this table is a list of every single postcode and suburb in the country.
the aim of the script is to filter out those postcodes which are 30km or less in distance from the user's location, and show only those results.
Because the table currently has over 100,000 entries, and we are doing a ForEach comparison, it takes 8 seconds for information to load.
I have some basic programming knowledge and know there are definite best practices to perform searches which would make the page loading time almost instant.
One of the ways this is possible is by using hash maps, and maybe a red black tree search method....
So the job is as follows:
1) Suggest to me the best methods for executing optimized range queries for our particular situation. It's possible that Visual Studio has a library package that can assist you to solve this problem.
2) You have to use your knowledge of search optimization data structures (hash maps, binary search, red black tree, etc) so that when the user logs on to our site, it uses his current location and is able to identify the list of postcodes that fall within 30kms instantly (from the huge table that you have compiled), and display that information.
The ideal result is when the user requests our URL, and when the page loads - all the data about his surrounding postcodes is already there and ready to use.
3) You have to analyze and implement the optimization method which produces the best results - maybe even something as simple as binary searching will improve the performance by the factor that is required for faster page load, but I'm looking for a better solution.
(since log100,000 = 5, and a performance improvement of factor of 5 makes the page load in about 1.6 seconds... still a bit slow)
4) The final solution to this problem will need to be embedded into our project in Visual Studio. We can give you the parameters that are being passed, and your solution will have to return the parameters we require. Hence the solution you give us should be simply copy pasted into our code and should function.
So, the job requires that you are able to understand this problem statement, take our table with 100,000 entries, build a new much bigger table with postcodes and their distances, write the script for a hash map method, perform optimized searching to locate all entries that are relevant to user's location (within 30km of his location), and is able to display information instantly on page load.
I personally would look at the following approach (but I am not a computer science graduate)
write a script that goes through our table of postcodes.
it picks two postcodes at a time, lets say postcode A and postcode B.
create a new table, with each row having the two postcodes, and the distance between them.
ex: A, B, and distance = [url removed, login to view]
in this way, populate the new table with every permutation of postcodes.
Hence, if you have 10 postcodes to begin with, you will have 10C2 = 45 entries in the new table that you have to make.
Our table at the moment has more than 100,000 rows. The new table would be several GB in size.
Then use hash mapping along with a range query method like binary or red black tree searching to pinpoint the list of entries that need to be displayed on page load.
This is not a very complicated project - however, we are looking for someone who is an expert to do this job.
I would expect the job to be done well within a week - and we are paying you based on a fixed price which is $250 - $300.
Interested candidates can send their skype id and we will have a chat asap.
12 freelancere byder i gennemsnit $468 på dette job
Hi i have seen your requirements and i am ready to deliver your project on time without any delay and i am ready to provide you with after delivery support on your project. I have delivered many projects on C#(.Net).