![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Борьба с дублированием
paul_k © (2003-10-29 10:45:00)
Возник следующий вопрос. При вводе данных в справочник надо проверить а нету ли там такого уже. Понятно, что при полном совпадении ввод нового надо запретить и предложить изменить(использовать) существующий. А как поймать разнуцу между "ул. Петровка" и "Петровка ул." Наверняка существуют способы проведения подобного анализа. Но вот как они выглядят?
paul_k (2003-10-29 17:15:00) [1]КЛАДР это хорошо.. только не охватывает он все.
для себя нашел приемлемое решение
http://delphibase.endimus.ru/?action=viewfunc&topic=strmath&id=10289
http://aforge.ibd.lv/?27&orion=2362c8a7c63301d6287dd7b5f5315b79
Всем спасибо за помощь и участие
Cranium (2003-10-29 17:11:00) [2]
В случае со справочником клиентом лечится на мой взгляд следующем образом ИНН обязательно к заполнению, адреса вводить через КЛАДР, благо это не проблема (имеется для всей страны)...
paul_k (2003-10-29 16:35:00) [3]
2 kaif
написал же - пример с "Газпром" неудачен
более удачный пример - "Н Новгород" , "Нижиний Новгород" и производные.
Ломброзо (2003-10-29 15:59:00) [4]
Отыскал в загашниках ссылок.
Конечно, можно и пользователя построить, но лучше вот:
http://itman.narod.ru/source/source.html
kaif (2003-10-29 15:41:00) [5]
Кстати, не исключено, что "ООО Вася Пупкин" это тоже ГАЗПРОМ. И никакой ИИ тогда не спасет.
kaif (2003-10-29 15:39:00) [6]
Я считаю, что для каждой задачи есть особенное решение. Например, если вычснилось, что ИЧП ГАЗПРОМ и ОАО ГАЗПРОМ одно и то же, то в бухгалтериях не следует перенаправлять ссылки, так как нарушится преемственность отчетности. Вместо этого следует закрыть счет ИЧП ГАЗПРОМ и начислить сумму на счет ОАО ГАЗПРОМ отдельной бухгалтерской проводкой. ИМХО, то же самое следует делать и с товарами (списывать один на счет другого). Подозреваю, что именно отход от бухгалтерской техники в некоторых учетных программах и порождает эту проблему. Многим кажется, что проводки не нужны и без них можно обойтись. Создать типа реляционную модель, связи один-ко-многим, справочники и - вперед. Не совсем это так... И проблема, о которой зашла речь имеет в бухгалтерской традиции вполне определенное и безконфликтное решение.
paul_k (2003-10-29 15:28:00) [7]
2 ZrenBy
Спасибо.. понял.
Значит административно и дальше никак.ну-ну.
ZrenBy (2003-10-29 14:43:00) [8]http://www.sql.ru/forum/actualthread.aspx?bid=1&tid=10671
paul_k (2003-10-29 12:37:00) [9]
В Дельфи тоже прописан ряд функций основанных на SoundEx. Но кирилицы они не знают.
прописано некое соответствие символов.
// A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
(0, 1, 2, 3, 0, 1, 2, -1, 0, 2, 2, 4, 5, 5, 0, 1, 2, 6, 2, 3, 0, 1, -1, 2, 0, 2,
// [ / ] ^ _ "
0, 0, 0, 0, 0, 0,
// a b c d e f g h i j k l m n o p q r s t u v w x y z
0, 1, 2, 3, 0, 1, 2, -1, 0, 2, 2, 4, 5, 5, 0, 1, 2, 6, 2, 3, 0, 1, -1, 2, 0, 2);
а есть ли где либо описание почему именно такое соответствие и как построить подобный ряд для кириллицы
Ломброзо (2003-10-29 12:22:00) [10]
Попробуй, но в статьях пишут, что это кривой способ, нужно искать именно русскоязычный модуль. А где - шут его знает, честно говоря. Но все равно попробуй. MS SQL Server такую функцию содержит.
Johnmen (2003-10-29 12:21:00) [11]
>paul_k ©
Такие ИИ узко специализированы и зависят от предметной области.
Так что, если есть желание, пиши сам со своими принципами и алгоритмами.
Например, такой момент: <Если пишем "газпром наш любимый" или "Газпром ОАО" или "контора ГАЗПР.", то считать всё это, как "Газпром", т.к. присутствует определяющая однозначная последовательность "LowerCase("газпр")", являющаяся глобальным синонимом>
paul_k (2003-10-29 12:11:00) [12]
Остался один вопрос. Как научить SoundEx работать с кирилицей.
или в транслит переводить все?
Anatoly Podgoretsky (2003-10-29 11:44:00) [13]
Была изобретена в конце 19 века для борьбы с подобным безобразием при проведении толи выборов, толи переписи
Anatoly Podgoretsky (2003-10-29 11:43:00) [14]
paul_k © (29.10.03 11:39) [20]
По определенному алгоритму преобразовывает символьнуж последовательность в 4 символьный хеш
paul_k (2003-10-29 11:39:00) [15]
А можно подробнее как SoundEx работает?
Что означает возвращаемый набор символов?
Anatoly Podgoretsky (2003-10-29 11:35:00) [16]
Vlad © (29.10.03 11:22) [16]
Зачем смелчак, тут доброволец не нужен
Ломброзо © (29.10.03 11:32) [17]
SoundEx не панацея. НО ПОМОЩНИК
Sergey13 (2003-10-29 11:33:00) [17]
2Vlad © (29.10.03 11:22) [16]
>А если по каждой из этих дублирующих записей уже куча информации в различных таблицах
Я же написал "переписывая ссылки на остающуюся запись". Это делается элементарно одним запросом на таблицу. А вот если 20 газпромов будут ссылаться друг на друга по кругу можно получить еще более удивительные результаты при составлении тех же отчетов. Или постоянноследить за корректностью таких взаимных ссылок.
2paul_k © (29.10.03 11:19) [15]
>речь о том как выявить потенциальный дубликат ещё при вводе.
Если ловить по уникальным полям - вопроса нет - все просто. Если по разнице в написании - то только ИИ, как справедиво заметил АП[1].
Ломброзо (2003-10-29 11:32:00) [18]
мне кажется, проблему можно решить частью регулярными выражениями, частью при помощи русского аналога SoundEx; для оракла я про такой модуль что-то слышал - поищи по "RCO" и "SoundEx"
Vlad (2003-10-29 11:22:00) [19]
>Sergey13 © (29.10.03 11:17) [13]
Как все просто у вас.
А если по каждой из этих дублирующих записей уже куча информации в различных таблицах, т.е. открытые лицевые счета, проводки итп, что с ними делать ? Неужто найдется смельчак который все ссылки будет переправлять ?
paul_k (2003-10-29 11:19:00) [20]
Sergey13 ©
речь о том как выявить потенциальный дубликат ещё при вводе.
хотя алгоритм "отлова" врятли будет отличатся.