Yahoo Groups のインポートでトピックを親にまとめてマージする方法は?

Yahoo グループから数万件の古い投稿を Discourse にインポートした結果、本来は同じスレッドであるべき多数の断絶したトピックが残ってしまいました。これに対して直感的な解決策としては、これらのトピックをいくつか選択または強調表示し、それを親トピックにドラッグする方法が考えられます。

あるいは、さらに良い方法として、統合したいすべてのトピックを選択し、システムにそれらを単一のトピックに自動的に統合させることも考えられます。その際、最も古い日付のメッセージを親トピックとし、トピック名/件名をそのメッセージのものとし、既存の日付に基づいて順序を決定します。

例えば、私のメッセージは主に以下のような形式です:

  • Some Topic Name
  • [mailing list name] Some Topic Name
  • [mailing list name] Some Topic Name
  • [mailing list name] Some Topic Name
  • [mailing list name] Some Topic Name
  • [mailing list name] Some Topic Name
  • [mailing list name] Some Topic Name
  • [mailing list name] Some Topic Name

つまり、これらすべてを選択し、右側のレンチツールを使って「merge(統合)」をクリックするだけで目的を達成できるはずです。

この機能は欠落しているのでしょうか、それとも私が何か見落としているのでしょうか?

Discourse では、投稿を新しいトピックまたは既存のトピックに移動できます。これがあなたの問題の解決策かどうかはわかりませんが、もしそうであれば、投稿を移動する方法に関するガイドはこちらにあります:https://meta.discourse.org/t/move-posts-to-a-new-or-existing-topic/136733。

ご指摘ありがとうございます。残念ながら、この仕組みについてはすでに把握していました。真の問題は、あなたがそのチュートリアルで示しているのは、トピック内の投稿を扱う方法だということです。

想像してみてください。同じ、あるいはわずかに異なる件名/タイトル行を持つ、100 の同一トピックがあるとします。

問題は、mbox/Yahoo Groups のインポートが正確に機能しなかったことです。メール内の不適切な ID が原因かもしれませんし、他の何かかもしれません。しかし、その結果、私たちの中には、互いに誤って切断された数千、あるいは数万のメッセージを持っている人がいます。これらをマージする方法が必要です。

残念ながら、件名に基づいた自動マージは最適ではないでしょう。おそらく目視で確認し、多数を手動で選択してから、システムにこれらすべてを共通のトピックにマージさせる必要があります。

それを行うのに最も適切(実際には唯一)な場所は、カテゴリの実際のトピック表示内です。あなたがガイドで提示する方法で行うのは非常に負担が大きく、実用的ではありません。なぜなら、投稿が 1 つしかないトピックに入り、その投稿を選択するプロセスを経て、親投稿を特定し、それから結合しなければならないからです。すでに同じ件名を持つ投稿が数十、数百ある場合、これはさらに複雑になります。

したがって、私たちが求めているのは、トピック表示内の「投稿を選択…」機能と同様に機能する、カテゴリ表示での「トピックを選択…」機能です。

これはご理解いただけますか?

私の感覚では、あなたは岐路に立たされているようです。これらの古い Yahoo メッセージを、1 つのトピックの中に正確かつ整理された形で含めることがどれほど重要か、自分で決める必要があります。

もしそれが重要であれば、一歩戻って mbox ファイルを修正することをお勧めします。その後、慎重に準備された小ロットでインポートしてください。

これを行う最良の方法は、おそらく Mozilla Thunderbird にインポートして、そこで調整することです。Thunderbird の各フォルダはそれ自体が mbox ファイルなので、関連するすべてのメッセージを 1 つのフォルダに移動し、その mbox ファイルをテキストエディタで開いて、メッセージ ID の検索と置換を行うことができます。このメッセージ ID は、インポーターがどのメッセージを 1 つのトピックにまとめるべきかを判断するために使用されます。

本当に最良の解決策は、時間を巻き戻して、Outlook を作成したプログラマーたちに、既存のメール規格に少しでも厳密に従うよう説得することです。

一つ疑問に思っていることがあります:@pfaffman さん、現時点でこれをプログラム的に実行する方法をご存知でしょうか?私は「同じ件名+このプレフィックスを持つすべてのトピックをマージする」という、いわば乱暴なアプローチ(ショットガン方式)を使うことを検討するかもしれません。

私が言いたいのは、上記の私の最初の投稿で触れた通り、一部の「Some Topic Name」というトピックが「[メーリングリスト名]」というプレフィックスで始まっている点です。基本的には、「関連している可能性が高いすべてのトピック」を強制的にマージする「核爆発的」なオプションを使い、その後、ユーザーが誤って同じトピック名や件名を使用した場合にそれらを分割するという方法です。

笑、いい提案だね @tobiaseigen。でも、これだけ膨大な数のメッセージ(数万件)がある中で、あの重労働をこなす時間を捻出するのは絶対に無理だ。mbox ファイルだけで 500MB を超えている。だから、Discourse 上で時間をかけて一つずつ修正していくことにしよう。他のモデレーターにも手伝ってもらえるしね。前の質問で挙げたような別の案が見つかるか、それとも他に方法がないならプラグインの実装に取り組むことを期待している。

最初からやり直して、インポートを正しく行うことをお勧めします。@tobiaseigen が提案された方法は有望に思えます。大規模な mbox インポートを行ったのはかなり前になりますが、その際は、ご指摘のような問題を事前に修正するための作業を多く行いました。それが選択肢としてできない場合、Rails 側で何らかの方法で関連する投稿をすべて収集し、日付でソートして新しいトピックを作成(または最初のトピックを選択)し、すべての投稿をその新しいトピックに移動させるというアプローチを試すことができます。

実際のコードを提示するには、少し時間がかかるでしょう。

さて、インポート以降フォーラムには多くの参加があり、現時点では「最初からやり直す」ことは現実的ではないと考えています。削除作業を積極的に行うのは少し怖いですし、モデレーターもすでにインポートされたデータの整理やアカウントの統合などに取りかかっています。

いずれにせよ、私は自分で Rails の方法を探ってみて、結果を共有します。それまでに誰か提案があれば別ですが。この小さな問題が解決するまで、必要であれば holiday 期間中は少し「ぐちゃぐちゃ」な状態のままにしておきましょう。