Restaurant Location Data and Menus

Trying to determine if Algolia is a good solution for our use case.

We have the menu data from 700 restaurant chain brands (e.g. McDonald’s, Subway, etc), this is about 110K records (Big Mac, Large Fries, etc).

We have the location data (lat,long,brandID) for 600K restaurant chain locations, that each have a brand ID associated with one of the 700 brands.

If we want to allow a user to search for a menu item near them, for example, show me menu items that match cheeseburger, near my current location, would we be able to do a combination index query over the menu items index and the locations index?

Hi @msilverman! Thanks for posting your question.

At a glance, I think this could be a very good fit. For the experience you describe, there are three components:

  1. The lat/long of the restaurant location. This would be represented in each record by a _geoloc property (details).
  2. The lat/long of the user. This is specified at query time using the aroundLatLong query parameter (details).
  3. The textual match between the user’s query and the food description. With Algolia, the textual match and the geo match can happen in the same record, which means you can control how each influences the ranking of the results.

I linked a few sections above, but for a more detailed overview you can refer to this guide:

https://www.algolia.com/doc/guides/geo-search/geo-search-overview

Feel free to post back with any questions you have. Thanks!

Thanks, this is very helpful. Will continue to experiment. One more unrelated question – do you have the possibility for custom subdomains for proxying algolia results? For example, if we want to provide access to 3rd party developers to use our aloglia-powered search, can you map to custom hostnames like searchapi.ourcompany.com or would we have to proxy it ourselves?

Hi @msilverman,

To achieve this you will indeed need to proxy the requests through your own server.

However, we always recommend to target the API clusters directly from the frontend, as this yields the best performance in terms of latency!