Как массово объединить темы с родительскими при импорте из Yahoo Groups?

После импорта десятков тысяч старых сообщений из Yahoo Groups в Discourse у меня осталось множество разрозненных тем, которые на самом деле должны быть одним потоком. Кажется, что интуитивно понятным решением было бы выбрать или выделить несколько из них, а затем перетащить их в родительскую тему.

ИЛИ, возможно, ещё лучший способ — просто выбрать все темы, которые нужно объединить, и позволить системе автоматически собрать их в одну тему, где самым старым сообщением будет родительское, а название/тема родительской темы будет соответствовать самому старому сообщению, а порядок сообщений будет определяться их датами.

Например, мои сообщения выглядят примерно так:

  • Название темы
  • [название рассылки] Название темы
  • [название рассылки] Название темы
  • [название рассылки] Название темы
  • [название рассылки] Название темы
  • [название рассылки] Название темы
  • [название рассылки] Название темы
  • [название рассылки] Название темы

Таким образом, я должен иметь возможность выбрать все эти сообщения и просто использовать инструмент с гаечным ключом справа, нажав «Объединить», чтобы достичь цели.

Эта функция отсутствует, или я что-то упускаю?

Discourse позволяет перемещать сообщения в новые или существующие темы. Не уверен, что это решит вашу проблему, но если это так, вот руководство по перемещению сообщений: Moving posts to a new or existing topic.

Спасибо, что обратили на это внимание. К сожалению, я уже знаю, как это работает. Настоящая проблема заключается в том, что в приведённом вами руководстве показано, как работать с постами ВНУТРИ темы.

Представьте на мгновение, что у вас есть 100 ОДИНАКОВЫХ тем с одинаковыми или слегка отличающимися строками темы/заголовка.

Проблема в том, что импорт из mbox / Yahoo Groups выполнен не совсем корректно. Возможно, это связано с некорректными ID в письмах. Возможно, с чем-то другим, но это означает, что у некоторых из нас тысячи или десятки тысяч сообщений ошибочно разобщены между собой. Нам нужен способ объединить их.

К сожалению, автоматическое объединение, вероятно, не будет оптимальным на основе заголовков. Нам, скорее всего, придётся визуально проверить их, выбрать многие вручную, а затем попросить систему объединить все эти сообщения в одну общую тему.

Кажется, что лучшее (и фактически единственное) место для этого — в самом тематическом представлении категории. Выполнение этой операции описанным вами способом в руководстве крайне обременительно и просто неосуществимо, поскольку нужно зайти в тему, состоящую из одного поста, затем выбрать этот пост, изолировать родительский пост и только потом объединить их. Это становится ещё сложнее, когда есть десятки или сотни постов с уже одинаковыми заголовками.

Поэтому нам нужна функция «Выбрать темы…» в представлении категории, которая работает аналогично функции «Выбрать посты…» в представлении темы.

Понятно ли это?

Мне кажется, вы оказались на распутье. Вам нужно решить, насколько важно для вас, чтобы старые сообщения Yahoo были правильно и аккуратно собраны в одну тему.

Если это важно, я бы посоветовал вернуться на шаг назад и исправить файлы mbox. А затем импортировать их небольшими, тщательно подготовленными партиями.

Лучший способ сделать это, вероятно, — импортировать их в Mozilla Thunderbird и разобраться с ними там. Каждая папка Thunderbird — это отдельный файл mbox, поэтому вы можете переместить все связанные сообщения в одну папку, а затем открыть этот файл mbox в текстовом редакторе и выполнить поиск и замену, чтобы исправить идентификатор сообщения, который используется импортером для определения того, какие сообщения должны быть объединены в одну тему.

На самом деле лучшее решение — вернуться в прошлое и убедить программистов, создавших Outlook, постараться чуть больше и следовать общепринятым стандартам электронной почты.

Один вопрос: @pfaffman, знаете ли вы какой-либо способ сделать что-то подобное программно на данный момент? Я МОГУ быть готовым использовать метод «дробовика», просто сказав: «объединить все темы с одинаковой темой письма + это добавление».

Я имею в виду это в соответствии с моим первым сообщением выше, где я отмечаю, как некоторые темы «Название темы» имеют префикс «[имя рассылки]». По сути, я мог бы просто использовать опцию «ядерного» объединения, чтобы собрать всё, что, вероятно, связано, а затем разделить их, когда пользователи по ошибке используют одинаковые названия тем / заголовки…

Ха-ха, да, неплохая идея, @tobiaseigen, но ни за что на свете я не смогу найти время, чтобы предпринять этот трудный шаг с таким количеством десятков тысяч сообщений. Одни только mbox-файлы весят более 500 МБ. Я попробую удачу и буду исправлять вещи постепенно прямо в Discourse, так как другие модераторы тоже смогут помочь таким образом. Надеюсь, либо мы найдём другие предложения, как я спрашивал в своём последнем вопросе, либо, если других вариантов не будет, мы займёмся реализацией плагина.

Я бы порекомендовал начать заново и настроить импорт правильно с самого начала; то, что предложил @tobiaseigen, звучит перспективно. Прошло много времени с тех пор, как я делал большой импорт mbox, и я заранее проделал много работы по исправлению подобных проблем. Если это не вариант, можно попробовать что-то на стороне Rails: собрать все посты, которые, по вашему мнению, должны быть вместе, отсортировать их по дате, создать новую тему (или выбрать первую) и переместить все посты в новую тему.

Мне потребуется некоторое время, чтобы написать реальный код.

Что ж, с момента импорта на форуме наблюдается активное участие, поэтому на данном этапе я не считаю, что «начать заново» реально. Мне было бы слишком страшно что-либо удалять, тем более что модераторы уже начали обрабатывать импортированные данные, объединять учётные записи и т.д.

Я сам в ближайшее время изучу возможный метод в Rails и поделюсь результатами, если до этого момента кто-то не предложит своё решение. Если потребуется, мы просто оставим всё в «неидеальном» виде на праздники, пока не разберёмся с этой небольшой проблемой.