2010-05-18 3 views
0

Je crée un programme client de messagerie simple. J'utilise MS SqlCe comme un stockage de courriels. Le schéma de base de données pour stocker le message est comme suit:Création et indexation de la base de données de messagerie à l'aide de 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 

Dans le domaine StorageData je vais stocker le message MIME sous forme de tableau d'octets. Mais le problème se pose quand je vais mettre en œuvre la recherche sur les messages stockés. Je n'ai aucune idée de comment je vais indexer les messages au-dessus de ce schéma.

Quelqu'un peut-il m'aider s'il vous plaît en suggérant un bon mais simple schéma, de sorte qu'il sera efficace en termes d'espace de stockage et de convivialité de recherche aussi bien?

Cordialement,

Anindya Chatterjee

Répondre

1

Quelques notes, pas trop utile, j'ai peur:

  • Je crois rfc5322 limite la longueur d'une ligne individuelle dans un message électronique à 999 caractères . Bien qu'il soit possible d'étendre un champ d'en-tête sur plusieurs lignes, il me semble que c'est une limite supérieure raisonnable pour la longueur d'un identificateur de message.
  • SQL CE ne prend pas en charge la recherche de texte intégral, donc vous devrez écrire votre propre moteur de recherche. Découpez le texte en mots, puis créez une table de mots, associée à un champ contenant une liste des champs StorageId auxquels ils sont liés. Un peu de travail, et vous êtes probablement mieux avec une solution tierce
  • Pensez à ajouter un champ "parent" qui lie les threads en fonction de leurs identifiants de message et des en-têtes In-Reply-To/References.
+0

Merci pour votre réponse, je tiendrai compte de vos remarques. C'est utile, mais pouvez-vous me suggérer une bonne base de données intégrée autre que sqlce pour la recherche en texte intégral? –

Questions connexes