2010-05-18 2 views
0

Я создаю простую почтовую клиентскую программу. Я использую MS SqlCe для хранения электронных писем. Схема базы данных для хранения сообщения выглядит следующим образом:Создание и индексирование базы данных электронной почты с помощью 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

Некоторые замечания, не слишком полезно, я боюсь:

  • Я считаю, что rfc5322 ограничивает длину любой отдельной строки в сообщении электронной почты до 999 символов , Хотя это is можно расширить поле заголовка на несколько строк, мне кажется, что это разумная верхняя граница для длины идентификатора сообщения.
  • SQL CE не поддерживает полнотекстовый поиск, поэтому в основном вам придется написать собственную поисковую систему. Превратите текст в слова, затем создайте таблицу слов, в сочетании с полем, содержащим список полей StorageId, к которым они ссылаются. Довольно много работы, и вам, вероятно, будет лучше с сторонним решением
  • Рассмотрите возможность добавления «родительского» поля, которое связывает потоки вместе на основе их идентификаторов сообщений и заголовков In-Reply-To/References.
+0

Спасибо за ваш ответ, я рассмотрю ваши замечания. Это полезно, но можете ли вы предложить мне любую хорошую встроенную базу данных, отличную от sqlce, для полнотекстового поиска? –

Смежные вопросы