Создание и индексация базы данных электронной почты с использованием SqlCe - PullRequest
0 голосов
/ 18 мая 2010

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

Может ли кто-нибудь помочь мне предложить хорошую, но простую схему, чтобы она также была эффективна с точки зрения пространства для хранения и удобства поиска?

С уважением,

Анинда Чаттерджи

1 Ответ

1 голос
/ 18 мая 2010

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

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