Проверка соответствия адреса указанному почтовому индексу до оформления заказа
Несовпадение почтового индекса и города в форме заказа выглядит мелкой опечаткой, пока не превращается в доставку совсем в другую часть страны.
Число спален, цена и площадь: это фильтры, с которых начинается любой сайт объявлений о недвижимости, и именно они игнорируют вопрос, который многих покупателей волнует больше всего: сколько времени отсюда добираться до работы. Сайт объявлений о недвижимости постоянно слышал это в отзывах пользователей и в конце концов сделал такой фильтр.
Механика требовала двух координат и расчёта расстояния. У каждого объявления на сайте уже был адрес, который нужно было превратить в координату через /v1/forward: пакетным заданием один раз для существующих объявлений, а затем для каждого нового объявления по мере добавления. Место работы покупателя, вводимое одним адресом в новом поле поиска, проходило через тот же эндпоинт и становилось координатой на стороне покупателя.
Когда обе точки были координатами, расстояние между объявлением и местом работы покупателя стало арифметикой, которую поисковый сервер сайта мог выполнять напрямую. В принципе это ничем не отличается от фильтрации по диапазону цен, только фильтрация идёт по расстоянию от точки. Покупатели могли задать максимальное расстояние до работы и видеть только объявления в его пределах, начиная с ближайших, и это оказалось гораздо удобнее, чем листать список по цене и проверять расположение каждого объекта на глаз.
Сайт внимательно следил за тем, что обещает этот фильтр. Расстояние по прямой не равно времени в пути: река, развязка шоссе или отсутствие прямых дорог могут превратить две близкие по прямой точки в гораздо более долгую поездку на машине или общественном транспорте. Функцию назвали расстоянием, а не временем в пути, и сайт не заявлял никаких конкретных оценок времени, поскольку точный расчёт потребовал бы источника данных о маршрутах и пробках, далеко выходящего за рамки того, что может честно дать расчёт расстояния между двумя точками.
Даже в такой осторожной формулировке, через расстояние, а не время, фильтр в первые несколько месяцев стал одним из самых используемых на сайте, особенно среди покупателей, переезжающих ради новой работы: у них была одна фиксированная точка, новый офис, и для них было крайне важно, насколько далеко от него они готовы жить. Для этой конкретной и распространённой ситуации фильтр по расстоянию был достаточно близок к реальному вопросу, чтобы приносить настоящую пользу.
Объём геокодирования определялся в основном новыми объявлениями на сайте, умеренным и предсказуемым потоком, плюс разовыми затратами на геокодирование существующих объявлений при запуске функции. Адреса мест работы покупателей добавляли сверху меньший постоянный объём. В сумме для сайта среднего размера это большую часть года укладывалось в бесплатную дневную квоту, и лишь первоначальное пакетное задание для существующих объявлений ненадолго вызвало всплеск использования, который легко покрывался без какого-либо заблаговременного планирования.
Фильтр по расстоянию является небольшим дополнением к странице поиска, но именно для сайта недвижимости, где физическое расположение объекта действительно важнее почти любого другого фактора, он решает то, что стандартный набор фильтров решить просто не может. Документация по эндпоинту находится по адресу /docs/forward-geocoding/.