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