【问题标题】:Creating and Indexing Email Database using SqlCe使用 SqlCe 创建和索引电子邮件数据库
【发布时间】:2010-05-18 05:53:52
【问题描述】:

我正在创建一个简单的电子邮件客户端程序。我使用 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

【问题讨论】:

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


    【解决方案1】:

    一些笔记,恐怕不太有用:

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

    【讨论】:

    • 感谢您的回复,我会考虑您的意见。这很有帮助,但你能推荐我除 sqlce 以外的任何好的嵌入式数据库来进行全文搜索吗?
    猜你喜欢
    • 1970-01-01
    • 2019-01-04
    • 2016-11-29
    • 2010-09-07
    • 2011-06-04
    • 1970-01-01
    • 2010-11-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多