Цитата:
Сообщение от
Logger
Кто-нибудь делал функцию нечеткого сравнения строк ?
ну... здесь не совсем нечеткое сравнение.
нечеткое сравнение предполагает, что строки могут чуть-чуть отличаться в любом месте
алгоритм нечеткого сравнения безумно тяжелая штука и, скорее всего, будет работать долго.
здесь же предполагается, что есть некое ядро из одинаковых СЛОВ.
плюс-минус несколько разделителей и/или других слов.
если у вас ax2009 или ax4, то воспользуйтесь агентом данных:
1. главное меню \ основное \ настройка \ агент данных
2. добавьте вашу таблицу с названиями.
3. запустите агент данных.
4. пусть он переиндексирует все записи таблицы (заодно у вас заработает глобальный поиск
)
в результате работы агента:
5. все тексты будут разбиты на слова, которые будут хранится в таблице SysSearchName
6. а в таблице SysSearchPath будут ссылки на выделенные слова и ссылки на записи.
Ваша задача - найти такие записи, у которых максимальное число общих слов.
А это уже вполне подъемный запрос (в отличие от алгоритма нечеткого сравнения строк ВСЕ-СО-ВСЕМИ).
А если вы еще выделите незначимые слова (ООО, Ltd и т.п.) и не будете учитывать их при подсчете, то будет вообще хорошо.
обратите внимание, что разбивка по словам выполняется в методе SysSearch::splitIntoWords
может быть, стоит допилить этот метод, чтобы научить его новым трюкам и разделителям.