Learning to Rank Application If there's a website/app that sells products and my job is to determine the order/ranking in which the products should be displayed.

For example : I click on restaurants and a list of restaurants pops up, I have to determine in what order the restaurants should be displayed.

All the data like ratings, distance to the customer, profit to us, prices, CTR, total number of views etc is available.

But how should I approaching this problem of rankings them in an efficient order ?
I have read about Learning to Rank and Collaborative Filtering but I am not sure if those are right for my problem, please help me out.

Thanks
Collaborative Filtering would definitely be a good start. This would work as follows. For each user, you can fill in rankings for restaurants they have not yet ranked by averaging the ranks (or some other aggregation) of similar users who have rated that restaurant. 

Alternatively, you could take a content based approach. Here, each restaurant has a collection of keywords, and using or rating a given restaurant updates a user's profile for those keywords. Then, the user's profile can be compared (via cosine similarity or something) to all other restaurants profiles. Then you order accordingly.

It may be more useful to map into a latent space first, but up to you.