我有一个 WCF 服务,可以将索引写入文件系统。我担心如果多个客户端同时尝试执行此操作,我可能会遇到线程问题。我看到 FSDirectory.Open() 有一个允许我传递“LockFactory”的重载。
我找不到任何关于如何为 Lucene .net 创建这些 LockFactories 之一的文档。谁能告诉我在哪里可以找到有关 LockFactory 的一些文档或我应该实现哪些接口(interface)?
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.");
}
我是一名优秀的程序员,十分优秀!