Возможно, порядок сортировки неверен, потому что вы группируете письма по теме? Стоит это проверить. Сообщения сортируются только по полю Subject и порядку писем в файле mbox.
Вы действительно уверены, что вам нужно группировать письма по теме? Судя по вашему скриншоту, у писем корректно заполнены заголовки Message-ID, а также In-Reply-To и References.
Спасибо. Если посмотреть на таблицу email_order, то там всё выглядит в правильном порядке:
msg_id
rowid
9205270657.AB03850@ben.dciem.dnd.ca
874
9206031720.AA22567@ben.dciem.dnd.ca
875
Может быть, что-то ещё мешает импортировать эти родительские сообщения?
Когда я делал первый импорт, казалось, что группировки вообще нет. Думаю, проблема в том, что ответы адресованы списку рассылки, а не отправителю. Кроме того, в некоторых сообщениях этих полей вообще нет, так как архив формировался вручную на протяжении 28 лет довольно хаотично, с использованием разных версий Eudora.
Возможно, не удается импортировать родительское сообщение? Произошла ошибка? Трудно сказать, почему сообщение не находится. Мне жаль, но, кажется, вам придется отладить это самостоятельно, изменив Ruby-код скрипта импорта.
Хорошо, хотя я не знаком с Ruby или скриптом импорта, но, возможно, смогу попробовать.
Не могли бы вы подсказать, какие скрипты нужно проверить и где они находятся? Имеет ли «отладка» в виду добавление операторов вывода или есть более продвинутый функционал?
Эти выводы выглядят нормально и указывают на то, что родительское сообщение отображено (импортировано?)
873 / 65936 ( 1.3%) [3895 items/min]
Mapping parent 9205270657.AB03850@ben.dciem.dnd.ca A CALL FOR HELP
Mapped message 9205270657.AB03850@ben.dciem.dnd.ca A CALL FOR HELP
874 / 65936 ( 1.3%) [3900 items/min]
Parent message 9205270657.AB03850@ben.dciem.dnd.ca doesn’t exist. Skipping 9206031720.AA22567@ben.dciem.dnd.ca: A CALL FOR HELP
Так что не вижу причин, по которым родитель в map_reply был бы пустым. Единственное, что я заметил, это то, что номера (873/874) на единицу меньше, чем rowid выше.
Но я не думаю, что смогу продвинуться дальше, так как не знаю, что делает @lookup.topic_lookup_from_imported_post_id, а редактирование с помощью vi и повторный запуск импорта — очень трудоемкий процесс, при этом каждый цикл занимает около 30 минут.
Этот метод находится в файле base.rb в той же директории. Он делает именно то, что следует из названия функции: ищет topic_id, находя import_id (который, как я предполагаю, в данном случае является ID сообщения) в пользовательском поле темы (или, возможно, в пользовательском поле поста?).
Это лучше, чем те случаи, когда импорт занимает неделю. (Иногда можно настроить скрипт импорта так, чтобы он импортировал только то, что вы отлаживаете; как именно это сделать, оставляем читателю в качестве упражнения.)
Вы можете попробовать посмотреть в базу данных и проверить, импортируется ли родительское сообщение, и есть ли у него пользовательское поле темы/поста import_id.
Под «базой данных» вы имеете в виду index.db? Под «импортировано» вы имеете в виду запись в таблицу email файла index.db? Да, оно там есть. Но нет столбца с названием ‘import_id’.
Я импортировал плагин Data Explorer и изучил базу данных Discourse. Оказалось, что import_id для родительского сообщения присутствовал в таблицах topic_custom_field и post_custom_field. Кроме того, сообщение действительно существовало.
Однако оно было удалено. Похоже, ошибка «родительское сообщение не существует» возникла потому, что импорт искал информацию в базе данных Discourse, а не в index.db. Было бы неплохо получить сообщение об ошибке, указывающее, что пост был удалён.
В любом случае, я думаю, это произошло потому, что на раннем этапе тестирования я удалил первую (небольшую) партию импортированных постов. Мне казалось, что я восстановил состояние до этого момента, но, очевидно, нет.
Хорошая новость в том, что это касается только моего тестового сервера, и на живом сервере при импорте такой проблемы возникнуть не должно.