Skip to content
AMDmi3 edited this page Oct 14, 2011 · 1 revision

В 1e2c0e1f в локаль была добавлена поддержка канонического написания, которое пожет быть отличным как от полного, так и от сокращённого. Для полной поддержки канонического написания в базе нужно ввести несколько дополнительных преобразований. В качестве примера будет рассматриваться полное написание "проспект", каноническое "просп." и сокращённое "пр-т.".

  • база всегда хранится в полном виде
    • минимальна вероятность неоднозначности
    • канонические написания для одного языка могут различаться по регионам, полные - нет, поэтом одну базу можно использовать для любых локалей одного языка
  • ExactMatch не работает
  • вывод from_osm для замены должен использовать каноническую форму
  • вывод from_osm для добавления в базу должен использовать полную форму
    • dump.no_match фактически нужно разделить на дамп c оригинальными написаниями улиц и дамп для пополнения базы

Решения:

  1. преобразование базы в каноническую форму при загрузке
  2. преобразование образца exactmatch к полной форме

Минусы второго варианта:

  • это будет уже не exactmatch
  • преобразование входных данных с большей вероятностью внесёт ошибку, чем преобразование базы (пример: на входе "уилца Верхнее шоссе" -> из-за опечатки статусной частью считается шоссе -> нет совпадения с базой даже по орфографии).
  • потребуется преобразование данных в большем количестве мест (т.к. все *Match должны выдавать каноническую форму вместо простой отдачи строки из базы нужно будет приводить строку к канонической форме, что также имеет вероятность ошибки)

Минусы первого варианта - потенциал внесение ошибки в эталон (при неправильном приоритете статусных частей в локали, например), хотя это можно проверить сравнивая базу саму с сабой.

Clone this wiki locally