使用SqlCe创建电子邮件数据库并为其编制索引

时间:2010-05-18 05:53:52

标签: c# .net email sql-server-ce database-schema

我正在创建一个简单的电子邮件客户端程序。我使用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消息存储为字节数组。但是,当我要对存储的消息实施搜索时,问题就出现了。我不知道如何在这个架构之上索引消息。

任何人都可以帮我建议一个好但简单的架构,这样它在存储空间和搜索友好性方面也会有效吗?

此致

Anindya Chatterjee

1 个答案:

答案 0 :(得分:1)

有些笔记,不太有帮助,我害怕:

  • 我相信rfc5322会将电子邮件中任何单行的长度限制为999个字符。虽然 可以将标题字段扩展到多行,但在我看来,它是message-id长度的合理上限。
  • SQL CE不支持全文搜索,所以基本上你必须编写自己的搜索引擎。将文本切换为单词,然后创建一个单词表,与包含它们链接到的StorageId字段列表的字段配对。相当多的工作,你可能会更好地使用第三方解决方案
  • 考虑添加一个“父”字段,该字段根据消息ID和In-Reply-To / References标头将线程链接在一起。