J'ai un simple chercheur d'index lucene qui est construit par un travail de nuit. Ceci est remplacé par le nouvel index (en remplaçant l'index existant) ce temps d'échange est d'environ une minute. (temps de copie)Lucene.NEt Index mises à jour + structuremap
La recherche lucene est à l'intérieur d'un service WCF et utilise structuremap pour amorcer le service. J'ai essayé d'utiliser cette approche ci-dessous. 1) J'ai enregistré l'index a this.ForRequestedType() .AddConcreteType(). AsSingletons();
Mais, avec cette approche, la IndexSearcher définie à l'intérieur LuceneRepository comme ci-dessous: _searcher = new IndexSearcher (ObjectFactory.GetNamedInstance
("LuceneVendorAliasDirectory"), true); n'est jamais publié et l'indexeur (dans le travail d'indexation) ne parvient pas à échanger l'index.
2) je devais utiliser l'approche ci-dessous de créer par exemple WCF appel this.ForRequestedType() .AddConcreteType() .LifecycleIs (nouveau StructureMapOperationContextLifecycle()); Qu'est-ce que cela signifie pour chaque appel WCF, il crée une nouvelle instance de référentiel lucene, avec 500k de données ce n'est pas une bonne solution si 50 clients appellent le service en même temps.
-Je voudrais obtenir de l'aide pour mon approche numéro 1. Quelle est la meilleure pratique d'avoir un seul instane de référentiel lucene et de le mettre à jour?
Nous n'avons aucune fenêtre de maintenance pour que le service ne puisse pas être arrêté.
Je n'ai pas trouvé de moyen facile d'encapsuler le répertoire d'alias dans un référentiel et de trouver une solution. Avez-vous de meilleures suggestions pour IndexSearcher (ObjectFactory.GetNamedInstance ("LuceneVendorAliasDirectory"), true.En outre, lors de l'exécution de configure, il pourrait y avoir une autre demande d'acceptation de threads, je pense que nous aurons besoin de mettre un verrou autour de lui. essayer. – bkhanal