У меня есть простой поисковик индекса lucene, который создается с помощью ночной работы.Это заменяется новым индексом (переопределяя существующий индекс), это время обмена составляет около минуты.(время копирования)
Поиск lucene находится внутри службы WCF, и он использует структурную карту для начальной загрузки службы.Я попытался использовать этот подход ниже.1) Я зарегистрировал индекс this.ForRequestedType () .AddConcreteType (). AsSingletons ();
Но при таком подходе indexsearcher определен внутри LuceneRepository, как показано ниже: _searcher = new IndexSearcher (ObjectFactory.GetNamedInstance
("LuceneVendorAliasDirectory"), true);никогда не освобождается, и indexwriter (в задании индексирования) не может поменять местами индекс.
2) Мне пришлось использовать следующий подход для создания экземпляра для вызова WCF this.ForRequestedType () .AddConcreteType () .LifecycleIs (new StructureMapOperationContextLifecycle ());
Это означает, что для каждого вызова WCF он создает новый экземпляр хранилища lucene, с 500 КБ данных - не очень хорошее решение, если 50 клиентов одновременно вызывают службу.
-Я хотел бы получить помощь для моего подхода № 1.Какова лучшая практика использования единого экземпляра хранилища lucene и его обновления?
У нас нет окна обслуживания, поэтому служба не может быть недоступна.