我有一个WCF服务,可以将索引写到文件系统中。如果多个客户端尝试同时执行此操作,我可能会遇到线程问题。我看到FSDirectory.Open()有一个重载,它使我可以传递“ LockFactory”。
我找不到任何有关如何为Lucene .net创建这些LockFactories的文档。有人可以告诉我在哪里可以找到关于LockFactory的文档或应该实现的接口吗?
DirectoryInfo indexDirectory = new DirectoryInfo(ConfigurationManager.AppSettings["indexpath"]);
Directory luceneDirectory = FSDirectory.Open(indexDirectory);
try
{
IndexWriter indexWriter = new IndexWriter(luceneDirectory, new StandardAnalyzer());
Document document = new Document();
foreach (KeyValuePair<string,string> keyValuePair in _metaDataDictionary)
{
document.Add(new Field(keyValuePair.Key, keyValuePair.Value, Field.Store.YES, Field.Index.ANALYZED));
indexWriter.AddDocument(document);
}
indexWriter.Optimize();
indexWriter.Flush();
indexWriter.Close();
}
catch(IOException e)
{
throw new IOException("Could not read Lucene index file.");
}
最佳答案
从您发布的代码中,我看不到为什么您除了默认的NativeFSLockFactory之外还需要更多东西。 FSDirectory.Open()重载在此参数中不采用锁工厂。
要进行自定义,您必须实现抽象的LockFactory类。
关于c# - 如何为Lucene.net创建LockFactory?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6822882/