在我的情况下,我使用Lucene.Net进行搜索,并希望使用IndexReader和IndexSearcher的单个实例。我应该从哪个方法移动它们,以便能够为第一个查询实例化一次,然后重用。
public static List<MyType> GetIndexMatches(string fullTextIndexPath, string keyWord )
{
IndexSearcher searcher = null;
IndexReader reader = null;
try
{
searcher = new IndexSearcher(fullTextIndexPath);
reader = IndexReader.Open(fullTextIndexPath);
...
答案 0 :(得分:0)
您是否尝试过将其置于服务级别(而不是Web方法级别)?
答案 1 :(得分:0)
我不确定您是否熟悉IoC(控制反转),但是如果您使用像Castle Windsor或Ninject 2这样的容器(这些容器都可以很好地与WCF集成,并且可以接管WCF服务实例的创建通过容器),您可以为IndexSearcher和IndexReader配置一些可注入的依赖项。在定义这样的组件时,您可以为他们提供单身人士的“生活方式”。使用IoC容器的好处是,您可以将相同的组件实例注入任何需要它们的依赖类,并轻松地在整个应用程序中轻松地重用单例组件。