GMail diff алгоритм для электронных писем - PullRequest
4 голосов
/ 04 ноября 2010

Когда вы отправляете электронное письмо, обычно почтовый клиент "цитирует" все старые письма.Но поскольку это делается на стороне клиента, то, конечно, не существует стандартов для этого:

  • Некоторые вставки> в начале строки в качестве индикатора кавычки
  • Некоторые пишут новый текст НАД цитируемым текстом, некоторые, например, ПОД
  • webOS не имеют никаких средств для «цитирования» старого текста.Он просто вставлен как есть.

GMail очень хорошо отфильтровывает старые части уже отправленных писем и предлагает пользователю опцию «показать цитируемый текст».

Существуют ли похожие алгоритмы для обнаружения подобных частей?

1 Ответ

2 голосов
/ 05 ноября 2010

Я не знаю, какой алгоритм используется, но так как это электронная почта, а не код, diff будет намного проще. В основном, если вы рассматриваете каждую строку как символ в строке (используйте некоторое хеш-представление), тогда электронное письмо может быть представлено в виде строки (один символ для каждой строки).

Затем вы можете использовать алгоритм минимального расстояния редактирования, чтобы выяснить, что было добавлено, а что удалено, чтобы перейти от одного письма к другому. Все, что часто встречается, становится вашим цитируемым текстом, все, что было добавлено, - это ваше новое электронное письмо.

Вот ссылка на строку изменить расстояние алгоритма :

...