0

簡単なメール クライアント プログラムを作成しています。MS SqlCe をメールのストレージとして使用しています。メッセージを格納するためのデータベース スキーマは次のとおりです。

StorageId int IDENTITY NOT NULL PRIMARY KEY,
FolderName nvarchar(255) NOT NULL,
MessageId nvarchar(3999) NOT NULL,
MessageDate datetime NOT NULL,
StorageData ntext NULL

StorageData フィールドに、MIME メッセージをバイト配列として格納します。しかし、保存されたメッセージに検索を実装しようとすると、問題が発生します。このスキーマに基づいてメッセージにインデックスを付ける方法がわかりません。

ストレージスペースと検索のしやすさの点でも効果的であるように、良いがシンプルなスキーマを提案するのを手伝ってくれる人はいますか?

よろしく、

アニンダ・チャタジー

4

1 に答える 1

1

あまり役に立たないいくつかのメモ、私は恐れています:

  • rfc5322 では、電子メール メッセージの個々の行の長さが 999 文字に制限されていると思います。ヘッダー フィールドを複数行に拡張すること可能ですが、メッセージ ID の長さの妥当な上限のように思えます。
  • SQL CE は全文検索をサポートしていないため、基本的には独自の検索エンジンを作成する必要があります。テキストを単語に切り刻み、単語のテーブルを作成し、リンク先の StorageId フィールドのリストを含むフィールドとペアにします。かなりの作業が必要で、おそらくサードパーティのソリューションを使用したほうがよいでしょう
  • メッセージ ID と In-Reply-To/References ヘッダーに基づいてスレッドをリンクする「親」フィールドを追加することを検討してください。
于 2010-05-18T06:08:24.187 に答える