Как легко доставить заказ, зная адрес (на самом деле нет)

BackEnd Доклад 45 минут Денис Гирько Backend(зал Конструктор) :   Jun 17 16:15
Денис Гирько
системный архитектор, Lamoda
Правильный адрес -- залог быстрой и точной доставки заказа.

Доклад по то, как мы в Lamoda.ru повышаем качество вводимого клиентом адреса и эффективно работаем даже с теми адресами, которые содержат ошибки.



Видео доступно для зарегистрированных пользователей. Войдите или зарегиструйтесь.


----

Я в Lamoda.ru, занимаюсь системами, которые автоматизируют доставку. Таких систем у нас четыре + мобильное приложение для торговых представителей. Каждый день мы доставляем клиентам десятки тысяч заказов множеством разных способов.

Доклад посвятил следующим подтемам:

1) Как эффективно хранить географические территории

Любая доставка предполагает знание территории, на которой она работает. Или даже множество разных территорий, на каждой из которых действуют определенные условия доставки, например, стоимость.

Рассказываю эволюцию наших решений относительно того:
- как хранить территории доставки разных курьерских компаний
- проверять попадание адреса заказа в территории и выбирать наилучший из вариантов доставки
- делать тонкую настройку территории вплоть до отдельных кварталов, улиц и домов

2) Автоматизация обработки адресов

С адресами, переданными извне, мы работаем, по большому счету, в двух случаях:
- адрес сообщил нам клиент (он хочет, чтобы мы привезли ему туда заказ)
- адреса сообщает нам внешняя курьерская компания (когда передает нам города, в которых она производит доставку, или список своих пунктов самовывоза)

Реальность такова, что адреса, скорее всего, будут с ошибками. Для клиентов характерны одни ошибки. Для компаний-доставщиков - другие. Плюс специфика адресов разных стран (Ламода осуществляет доставку в России, Украине, Белоруссии и Казахстане).

Мы научились работать с адресами в условиях несовершенства исходных данных. Я расскажу, к каким техническим решениям мы пришли в вопросах:

а) Эффективное хранение адресных данных в базе

Как хранить так, чтобы было:
- легко обновить из первоисточника
- легко кастомизировать данные под свои нужны
- объединить несколько источников адресных данных в одной базе
- дополнить базу практически любыми сопутствующими данными, которые можно привязать к географическому объекту
- не устроить комбинаторный взрыв

б) Техники поиска по адресным данным

- как сделать такой поиск, который допускает наличие ошибки, неточности, вариации написания и транслитерации и все еще эффективно находит то, что имелось в виду

в) Инструментарий для развертывания поиска/саджеста адресов (на нашем примере)


Презентация
Постоянная ссылка на доклад: https://devconf.ru/offer/277