![]() |
![]() |
![]() |
|
Нечеткое сравнение строк | ☑ | ||
---|---|---|---|---|
0
Вадимыч
08.02.08
✎
12:44
|
Посоветуйте пожалуйста алгоритм нечёткого сравнения строк. Мне нужно сравнивать названия контрагентов, т.е. строки в среднем от 10 до 25 символов. Перевёл один хороший алгоритм в Delphi на 1С, но он работает ужасно долго! Где-то по 10-20 мин на одно сравнение!
Помогите пожалуйста! //------------------------- Нечеткое сравнение -------------------- Функция Соответствие(с1, с2, А, Б) ГлобальнаяСумма = 0; Мах = 0; //~Цикел: //Если Сред(А, с1, 1)=Сред(Б, с2, 1) Тогда // ГлобальнаяСумма = ГлобальнаяСумма + 1; // Если (с1<СтрДлина(А)) И (с2<СтрДлина(Б)) Тогда // с1 = с1 + 1; // с2 = с2 + 1; // Перейти ~Цикел; // КонецЕсли; //КонецЕсли; Пока Сред(А, с1, 1)=Сред(Б, с2, 1) Цикл ГлобальнаяСумма = ГлобальнаяСумма + 1; Если (с1<СтрДлина(А)) И (с2<СтрДлина(Б)) Тогда с1 = с1 + 1; с2 = с2 + 1; Иначе Прервать; КонецЕсли КонецЦикла; Если (с1<СтрДлина(А)) И (с2<СтрДлина(Б)) Тогда Сумм = Соответствие(с1+1, с2+1, А, Б); Если (Мах<Сумм) Тогда Мах = Сумм; КонецЕсли; КонецЕсли; Если с1<СтрДлина(А) Тогда Сумм = Соответствие(с1+1, с2, А, Б); Если (Мах<Сумм) Тогда Мах = Сумм; КонецЕсли; КонецЕсли; Если с2<СтрДлина(Б) Тогда Сумм = Соответствие(с1, с2+1, А, Б); Если (Мах<Сумм) Тогда Мах = Сумм; КонецЕсли; КонецЕсли; Возврат ГлобальнаяСумма + Мах; КонецФункции Функция НечеткоеСравнение(Строка1, Строка2) Возврат Соответствие(1, 1, Строка1, Строка2) * 2.0/(СтрДлина(Строка1) + СтрДлина(Строка2)) * 100; // Процент соответствия КонецФункции //-------------------------------------------------------------- |
|||
1
Вадимыч
08.02.08
✎
12:46
|
Ой, извините, забыл коменты убрать и тег код вставить!
|
|||
2
Ursus maritimus
08.02.08
✎
12:48
|
За перейти надо расстреливать без суда и следствия.
|
|||
3
Ursus maritimus
08.02.08
✎
12:49
|
если 8.1, то есть полнотекстовый поиск.
|
|||
4
Андрюха
08.02.08
✎
12:49
|
"Цикел" - готично
|
|||
5
yukon
08.02.08
✎
12:51
|
может не стоит изобретать велосипед?
попробуй, посмотри здесь strmatch - Нечеткое сравнение и поиск строк http://1c.proclub.ru/modules/mydownloads/personal.php?lid=2485&cid=92 и здесь [P2P] "Удар По Бездуховности" v.1.0д http://infostart.ru/projects/393/index.php?id=393&ref=174 |
|||
6
Вадимыч
08.02.08
✎
15:58
|
>>>strmatch
Спасибо! То что надо. Работает очень быстро! |
|||
7
Злопчинский
08.02.08
✎
16:01
|
Автору strmatch - памятник при жизни!
офигенная вещь! |
|||
8
insider
08.02.08
✎
16:22
|
кто код смотрел: обработка по пробелам слова вычленяет и потом по ним ищет? тогда это просто...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |