Я ищу эффективный алгоритм для очистки моих строк. Иметь огромный набор описаний материалов (VARCHAR (255) на MySQL), которые необходимо очистить. Материалы поставляются с ошибочно написанными словами и сокращениями, поэтому чистка в основном заменяет слова на правильные. Карта слов на данный момент содержит более 300 строк, но может расти.
Несколько проблем:
- Давайте заменим слово1 на слово1 слово2 . Тогда, если у меня уже есть правильное описание, например бла слово1 слово2 , оно будет заменено на бла слово1 слово1 слово2 .
- Некоторые строки поиска, которые необходимо заменить, могут состоять из нескольких слов. Также может быть строка поиска, которая является началом другой строки поиска. Например, в качестве слов, которые необходимо заменить, можно указать хлопок и смесь хлопка .
- Все разделители также должны быть сохранены.
Что я планирую сделать сейчас:
Искать слово во всей строке и проверять, не совпадает ли его позиция с текстом замены, если нет - заменить на замену. Вот как я избегаю 1-й проблемы, упомянутой выше. Поиск следующей позиции того же слова. Если не найдено - проверьте наличие следующего элемента на карте. Повторите это с каждым из 300 строк на карте. После этого перейдите к следующему описанию. Это выглядит очень затратно, пока я планирую запустить скрипт на cron.
Я работаю с PHP и MySQL, но любые идеи по оптимизации этого приветствуются.