2013-02-28 4 views
3

J'ai un site MVC qui utilise Lucene.net pour ses capacités de recherche. Le site a plus de 100k produits. Les index sont déjà créés pour le site. Le site, cependant, a également 2 flux de données qui mettent à jour la base de données sur une base régulière (potentiellement toutes les 15 minutes). Donc les données changent beaucoup. Comment dois-je procéder pour mettre à jour les index Lucene ou est-ce que je n'ai pas besoin de le faire?Mise à jour des index Lucene.net régulièrement

+0

Êtes-vous en train de dire que l'index est construit une seule fois et que vous n'écrivez plus jamais? Dans ce scénario, je créerais certainement un processus pour le tenir à jour avec la base de données. – rae1

+0

Existe-t-il un moyen de réécrire l'index? –

Répondre

2

Utilisez un planificateur de processus (tel que Quartz.Net) pour s'exécuter de temps en temps (toutes les 15 minutes) pour extraire les éléments de la base de données qui ne sont pas indexés.

Utilisez un champ comme ID à comparer (comme un numéro de séquence ou une date). Vous obtiendrez le dernier document ajouté à partir de l'index et le dernier de la base de données et indexez tout entre. Vous devez faire attention de ne pas indexer les doublons (ou pire, passer outre les documents non indexés).

Alternativement, synchronisez votre indexation avec les 2 flux de données et indexez les documents tels qu'ils sont stockés dans la base de données, vous évitant ainsi les pièges ci-dessus (doublons/manquants). Je ne sais pas comment ces flux mettent à jour votre base de données, mais vous pouvez les intercepter et mettre à jour l'index en conséquence.

0

Jetez un oeil à cette solution, j'avais la même exigence et j'ai utilisé la solution de ce lien et cela a fonctionné pour moi. En utilisant une minuterie, il crée l'index de temps en temps, donc il n'y aura pas de problème de chevauchement/saut. Essaie.

Making Lucene.Net thread safe in the code

Merci.