Всем привет!
Два месяца назад в Клубе был опубликован пост про взаимодействие Справочника организаций и Народной карты. В нем мы, в частности, обещали регулярно делиться новостями, и текущий пост — как раз про это.
Сегодня мы расскажем про уже сделанное в процессе интеграции Народной карты и Справочника, а также немного про будущее.
Интеграция со Справочником проще в том, что затрагивает только один слой объектов — «Места». А сложнее в том, что изначальные отличия в форматах данных и способах работы с ними — очень велики, в отличие от приведенных выше примеров.
Работа с организациями — это лишь часть комплексного редактирования карты, когда одновременно делаются правки в нескольких слоях объектов. Поэтому важным принципом, в рамках которого мы работаем над интеграцией, — остается сохранение удобного редактирования организаций в Народной карте, несмотря на звучащие иногда призывы «пусть все организации правятся в Справочнике».
Далее пройдемся по отдельным составляющим общего процесса:
Объекты в целом
Важно помнить, что в двух базах данных могут различаться не только данные о конкретных объектах, но и сами наборы объектов: объекты слоя «Места» в Народной карте и карточки Справочника. Последнее различие приводит к ряду сложностей.
В предыдущем посте мы рассказывали о каналах информации, по которым данные об организациях поступают в Справочник. В большинстве случаев изменения, информация о которых получена, вносятся непосредственно в карточки Справочника. Народная карта отличается тем, что изменения вносятся в наши «собственные» объекты, и как следствие могут возникнуть сложности с синхронизацией данных.
Объекты НЯК и Справочника могут соотноситься следующим образом:
· Есть объект НЯК и карточка Справочника относящиеся к одной организации (организация открыта и работает), они привязаны друг к другу, причем эта связь — единственная для обоих объектов. Вариант, когда есть объект НЯК, а соответствующей карточки в Справочнике нет, можно отнести сюда же, поскольку в рамках ежедневной синхронизации такая карточка в Справочнике появится. Это идеальный вариант, именно к нему мы стремимся в большинстве случаев.
· Есть карточка Справочника, но нет соответствующего объекта НЯК. Таких организаций очень много, далеко не все из них мы хотим показывать на подложке карты. Вариант синхронизации, когда сотни тысяч подобных объектов будут загружены на НЯК — не идеальный: карта, особенно в крупных городах, просто «утонет» в большом количестве «коммерческих организаций, фирм».
· Также встречаются иные комбинации объектов НЯК и карточек Справочника, как правило все они содержат ошибки, которые мы стараемся находить и исправлять. Это подготовительная работа для введения обратной синхронизации объектов Справочника и Народной карты. Ниже подробно рассказано про четыре самых распространенных вида подобных ошибочных комбинаций, которые или уже исправлены, или находятся в процессе исправления.
1. Ошибочная привязка. Это ситуация, когда к карточке Справочника привязаны один или несколько объектов НЯК и это разные организации. Как такие случаи могли появиться? Например, в результате ошибочной привязки при редактировании организации. Или при изменении карточки Справочника без изменения привязки. Или могли ошибиться алгоритмы. В таких случаях в идеале нужно определить неверную привязку и удалить ее, а если не получается — удалить обе привязки, что, скорее всего, приведет к устранению ошибки в Картах. Эта работа сейчас в процессе.
2. Дублирующая привязка. Это ситуация, когда к карточке Справочника привязано больше одного объекта НЯК и это одна организация (в отличие от предыдущего пункта). Нередко в Народной карте организация бывает размечена подробно, отдельными точками показаны отдельные корпуса, отделения больниц, факультеты университетов и т. п. В Справочнике же не всегда существуют отдельные карточки для разных подразделений организации, иногда бывает только одна. В таких случаях нужно разделить такие привязки, чтобы в Справочнике могли появиться отдельные карточки, объединенные в сеть.
3. Объекты-дубли в НЯК. Это ситуация, когда одной организации в Справочнике соответствуют несколько объектов в НЯК, относящиеся именно к этой организации. В отличие от п. 2 здесь речь об идентичных объектах Народной карты. Например, в Народной карте размечены одинаковыми объектами несколько корпусов одной организации: это объекты или с одинаковым названием и с одинаковой категорией, или не имеющие названия (и тоже с одинаковой категорией). Немало таких объектов было размечено еще до 2015 года, в Старой Народной карте. Такие объекты-дубли удаляются, сохраняется один объект. Если для одной организации есть один именованный объект и несколько неименованных той же категории — сохраняется именованный. Если все объекты или названы одинаково, или безымянные — сохраняется один из объектов. Эта работа сейчас в процессе.
4. Закрытые организации. Это основной минус базы организаций Народной карты. Большое количество организаций, которые прекратили свое существование, но остались на НЯК и имеют состояние «Открыто». Удалить в Народной карте все организации, карточки Справочника у которых закрыты, — простой, но неидеальный вариант. Во-первых, в Справочнике, несмотря на различные методы проверки статуса организации, есть ошибки. Во-вторых, встречаются, как мы увидели выше, — ошибочные привязки. Работа по исправлению этого типа ошибок сейчас в процессе, но ведется она осторожно, с проверкой подозрительных случаев. Мы стараемся удалить все неактуальное, но при этом не удалить лишнего. Ошибки тем не менее, встречаются, отчасти это ошибки базы Справочника, а отчасти — опять же ошибки привязок объектов НЯК и карточек Справочника.
Отдельно стоит отметить, что сейчас не все организации НЯК привязаны к карточкам Справочника. Если организация есть и в Народной карте, и в Справочнике, то за тем, чтобы на карте в конечных сервисах не образовывалось дублей, следят алгоритмы. В рамках интеграции планируется сделать каждую организацию НЯК привязанной к соответствующей карточке Справочника — без этого не получится синхронизировать информацию.
Для понимания масштаба скажем, что количество организаций, которых касаются вышеописанные изменения, исчисляется десятками тысяч.
Координаты объектов
Этот пункт и все последующие мы рассмотрим только для варианта корректно привязанных организаций из НЯК и Справочника.
Координаты организации могут меняться, уточняться. Если изменение сделано в Народной карте, о нем станет известно Справочнику, и в общем случае это может изменить координаты карточки. Если изменение сделано в карточке Справочника (например, по фидбеку пользователей Карт), то до недавнего времени об этом Народная карта не узнавала. В рамках реализации обратной синхронизации эти изменения (после их проверки в Справочнике) будут отражаться и в Народной карте. Эти алгоритмы уже реализованы, и для части категорий изменений координаты синхронизируются в обе стороны полноценно. Пока это буквально несколько категорий. Мы смотрим за изменениями и уточняем алгоритмы. Для большого количества категорий синхронизация введена «наполовину», для небольших расхождений по координатам. В последнее время на Народной карте можно было встретить правки Агента Справочника, который двигал пои на несколько метров в рамках контура здания. Возникали и вопросы, зачем такие «бессмысленные» правки. Сама подвижка на 2 или 3 метра, действительно, не меняет карту принципиально, она делалась именно для синхронизации данных Народной карты и Справочника, и теперь координаты у таких пои в двух базах — одинаковые. В перспективе такая синхронизация будет реализована для большинства категорий.
Названия объектов
И в Справочнике, и в Народной карте есть три типа названий: официальное, для подписи на карте и синоним. Для подписи в карточке объекта используется первое, для подписи на карте — второе, для поиска — третье (или третьи, если синонимов много).
Исторически принципы формирования названия в Народной карте и Справочнике заметно отличались, особенно сильные различия — в названиях для подписи. Связано это с тем, что названия для подписи имеют разную «природу». В НЯК это названия для подложки карты, а подобные названия в Справочнике изначально были ориентированы на использование в поисковой выдаче. Как следствие, местами различаются нормы формирования таких названий. Добавляет сложностей и использование в Справочнике информации из разных источников и большой (по сравнению с Народной картой) поток изменений.
Полноценной синхронизации названий для подписи сейчас нет, поскольку для ее включения необходимо «свести» как нормы формирования таких названий, так и имеющиеся наборы названий. Оба этих «сведения» сейчас идут параллельно. Мы стараемся, чтобы синхронизация как Правил, так и самих названий не затянулась (поэтому, например, невозможно вручную «разобрать» все различающиеся названия для подписи и выбрать наиболее подходящее).
В результате описанных выше процессов сейчас для некоторых объектов меняются подписи на подложке карты. Это как раз одно из мест, где интеграция проходит болезненно, поскольку в ряде случаев названия объектов на подложке меняются, у некоторых организаций — больше одного раза. Мы работаем над тем, чтобы конечный пул названий был корректным для всех мест, где эти названия используются.
Контактные атрибуты
Телефон, почта, сайт, режим работы — это, пожалуй, наиболее простые по формату и вариативности атрибуты организаций. В отличие от названий они гораздо легче поддаются унификации, у Справочника большой опыт работы с этими атрибутами и потоком их изменений из разных источников. Для этих атрибутов мы хотим в первую очередь реализовать звучавшее уже в комментариях и чатах предложение не просто о синхронизации, но именно об объединении данных. Правки, вносимые при редактировании этих атрибутов в НЯК, в перспективе будут попадать непосредственно в Справочник, проходить там стандартные процедуры автоматической и ручной проверки и после этого попадать в конечные продукты Яндекса. Сейчас мы готовимся к описанному выше объединению данных.
Ошибки
Любые процедуры в процессе отладки с большой вероятностью могут приводить к ошибкам. Мы настоятельно просим всех народных картографов обо всех ошибках в конечных сервисах Яндекса, связанных с организациями, отправлять фидбек непосредственно в Справочник. Это позволит нам улучшить не только данные, но и процессы, связанные с обработкой потока такого фидбека.
Что дальше?
Выше мы рассказали про те шаги, которые можно заметить (или которые будут заметны после реализации) невооруженным глазом. Помимо них, есть немало процессов, которые не отражаются в данных непосредственно, но обеспечивают возможность «заметных» изменений.
Как мы уже неоднократно писали, процесс интеграции двух очень разных баз — сложный, а местами болезненный. На некоторых этапах приходится идти на временное снижение полноты или качества данных, для того чтобы затем, уже «на общих основаниях», делать лучше общий набор данных (или синхронизированные наборы).
Подобная ситуация уже складывалась в истории Народной карты дважды. Первый раз — в 2015 году, когда одновременно с перезапуском Народной карты мы объединяли данные Народной карты и Яндекс.Карт (да, три с половиной года назад это были абсолютно разные базы данных). Второй — этой весной, когда мы переходили к публикации карты всего мира из Народной карты и аналогичным образом объединяли данные из Народной карты и от поставщиков.
Третья масштабная интеграция в истории Народной карты в конечном счете также улучшит совокупное качество карты. Надеемся на ваше понимание текущих сложностей и будем и дальше информировать о происходящем. Следите за обновлениями.