Текущее время: Пн, июл 21 2025, 17:22

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 19 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Посоветуйте алгоритм поиска.
СообщениеДобавлено: Ср, дек 03 2008, 15:59 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Пт, июл 27 2007, 16:08
Сообщения: 352
Пол: Мужской
Ситуация такая.

Заказчики приносят Excel файлы.
в них адреса. Естественно кто как захотел так и написал.

Мы втягиваем эти адреса в SAP и сопоставляем с нашей базой.

Что нужно. Например:
В базе у нас хранится как положено на укр. м. Харкiв.
Приносят.

Харьков
город Харьков
г. Харьков
Харькiв (даже с ошибкой)
....

Нужно то определить что город Харьков = м. Харкiв. ну и остальные варианты.


Варианты?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, дек 03 2008, 16:07 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
Застрелиться.

Или юзать полнотекстовый поиск внешний.
Что тоже мало поможет, но хоть как-то.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, дек 03 2008, 16:34 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Ср, ноя 01 2006, 22:58
Сообщения: 794
Откуда: Заарбрюкен
Пол: Мужской
Есть, например в php функции, выдающие при сравнении строк степерь их схожести... Можно по аналогии посмотреть...

Code:
<?php
// returns the percentage of the string "similarity"
function str_compare($str1, $str2) {
    $count = 0;
   
    $str1 = ereg_replace("[^a-z]", ' ', strtolower($str1));
    while(strstr($str1, '  ')) {
        $str1 = str_replace('  ', ' ', $str1);
    }
    $str1 = explode(' ', $str1);
   
    $str2 = ereg_replace("[^a-z]", ' ', strtolower($str2));
    while(strstr($str2, '  ')) {
        $str2 = str_replace('  ', ' ', $str2);
    }
    $str2 = explode(' ', $str2);
   
    if(count($str1)<count($str2)) {
        $tmp = $str1;
        $str1 = $str2;
        $str2 = $tmp;
        unset($tmp);
    }
   
    for($i=0; $i<count($str1); $i++) {
        if(in_array($str1[$i], $str2)) {
            $count++;
        }
    }
   
    return $count/count($str2)*100;
}
?>


вот как-то так...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, дек 03 2008, 16:35 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Ср, ноя 01 2006, 22:58
Сообщения: 794
Откуда: Заарбрюкен
Пол: Мужской
Или вот...
http://de2.php.net/manual/en/function.similar-text.php

Наверняка в SAP есть что-то похожее...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, дек 03 2008, 16:41 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Ср, ноя 01 2006, 22:58
Сообщения: 794
Откуда: Заарбрюкен
Пол: Мужской
А потом можно что-то типа Гугловского "Возможно вы имели ввиду..."


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, дек 03 2008, 16:44 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Пт, июл 27 2007, 16:08
Сообщения: 352
Пол: Мужской
Konstantin Anikeev написал:
А потом можно что-то типа Гугловского "Возможно вы имели ввиду..."


Это уже сделано :)
+сделан ручной ввод, сейчас как раз думаем чтобы максимум сократить ручной ввод.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, дек 03 2008, 16:45 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Сб, сен 25 2004, 16:30
Сообщения: 1368
Откуда: Москва
Пол: Мужской
Вот нашел в ECC 6.0 - ISH_STRING_COMPARE_FUZZY

_________________
С уважением, Сергей Королев


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, дек 03 2008, 16:59 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Пн, окт 11 2004, 13:16
Сообщения: 1790
regular expression (BC-ABA) - это не то, что может помочь?

_________________
/nex


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, дек 03 2008, 17:33 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
Я ж и говорю, механизм полнотекстового поиска надо или брать готовый или писать свой (очень затратно). С учетом словоформ и неправильного ввода.

ISH_STRING_COMPARE_FUZZY, кстати, неплохо работает.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, дек 03 2008, 17:43 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Пт, июл 27 2007, 16:08
Сообщения: 352
Пол: Мужской
Пономарев Артем написал:
ISH_STRING_COMPARE_FUZZY, кстати, неплохо работает.


пока смотрим, думаем


Code:
call function 'ISH_STRING_COMPARE_FUZZY'
  exporting
    search_for        = 'Москва'
    search_in         = 'Харкiв'
IMPORTING
   PROBABILITY       = PROBABILITY
   WORD_FOUND        = WORD_FOUND


33% возможно совпадение.. :?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, дек 03 2008, 18:00 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Ср, ноя 01 2006, 22:58
Сообщения: 794
Откуда: Заарбрюкен
Пол: Мужской
apetrenko написал:
33% возможно совпадение.. :?


Ну а что... Между городами два локтя по карте :)
С 67% вереятностью в пятницу вечером вы таки промахнетесь :)


Последний раз редактировалось Konstantin Anikeev Ср, дек 03 2008, 18:17, всего редактировалось 1 раз.

Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, дек 03 2008, 18:04 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
Никто не говорил, что будет легко. У автора еще морфологии нет.
Данная задача решается уже многие годы и так и не решена окончательно. Ждем ИИ.
Дерзайте :)


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, дек 03 2008, 20:26 
Президент
Президент

Зарегистрирован:
Пт, апр 28 2006, 22:39
Сообщения: 2514
Откуда: North Taxolina, USA
Пол: Женский
У нас подобные проблемы решались весьма примитивно - макрос в Excel для замены всех возможных ошибок на правильный вариант (что там Харьков - тут народ в слове Caribbean по 7 ошибок делает :roll: ). Это, к сожалению, не защищает от ошибок с особой изощренностью. :(

Кстати, в США адрес можно проверить на сайте почты (USPS), у них там какая-то приблуда имеется. Они просто по индексу могут все исправить.

_________________
"One of the symptoms of an approaching nervous breakdown is the belief that one's work is terribly important." Bertrand Russell


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, дек 03 2008, 21:25 
Начинающий
Начинающий

Зарегистрирован:
Вт, ноя 25 2008, 00:30
Сообщения: 5
Самое лучшее решение - заставить заказчиков приносить файлы с адресами напинсанными не "кто как захотел", а "как надо":)

P.S. Кстати, кажется были 3rd-party продукты для нечеткого поиска в SAP


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, дек 03 2008, 21:27 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, апр 13 2006, 12:32
Сообщения: 1503
Откуда: Питер
Через OLE2 использовать функции MS Word проверки орфографии (Spell Checker).

PS: Морфологический поиск здесь мало поможет, по нему можно отсечь правильно написанные окончания и найти слово по корню. В случае ошибок он практически бессилен.

_________________
С уважением, VGA
Мой блог


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 19 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB