-
Notifications
You must be signed in to change notification settings - Fork 11
Canonical
AMDmi3 edited this page Oct 14, 2011
·
1 revision
В 1e2c0e1f в локаль была добавлена поддержка канонического написания, которое пожет быть отличным как от полного, так и от сокращённого. Для полной поддержки канонического написания в базе нужно ввести несколько дополнительных преобразований. В качестве примера будет рассматриваться полное написание "проспект", каноническое "просп." и сокращённое "пр-т.".
- база всегда хранится в полном виде
- минимальна вероятность неоднозначности
- канонические написания для одного языка могут различаться по регионам, полные - нет, поэтом одну базу можно использовать для любых локалей одного языка
- ExactMatch не работает
- вывод from_osm для замены должен использовать каноническую форму
- вывод from_osm для добавления в базу должен использовать полную форму
- dump.no_match фактически нужно разделить на дамп c оригинальными написаниями улиц и дамп для пополнения базы
Решения:
- преобразование базы в каноническую форму при загрузке
- преобразование образца exactmatch к полной форме
Минусы второго варианта:
- это будет уже не exactmatch
- преобразование входных данных с большей вероятностью внесёт ошибку, чем преобразование базы (пример: на входе "уилца Верхнее шоссе" -> из-за опечатки статусной частью считается шоссе -> нет совпадения с базой даже по орфографии).
- потребуется преобразование данных в большем количестве мест (т.к. все *Match должны выдавать каноническую форму вместо простой отдачи строки из базы нужно будет приводить строку к канонической форме, что также имеет вероятность ошибки)
Минусы первого варианта - потенциал внесение ошибки в эталон (при неправильном приоритете статусных частей в локали, например), хотя это можно проверить сравнивая базу саму с сабой.