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

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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