C# 在简单Lucene中使用IndexService
我继承了一些使用简单Lucene的代码。我对Simple Lucene知之甚少。现在,代码依靠C# 在简单Lucene中使用IndexService,c#,lucene,azure-storage,C#,Lucene,Azure Storage,我继承了一些使用简单Lucene的代码。我对Simple Lucene知之甚少。现在,代码依靠IndexService索引实体。使用以下代码: using (var indexService = GetIndexService()) { indexService.IndexEntities(cachedResults, p => { var document = new Document(); document.Add(new Field("Name", p.Nam
IndexService
索引实体。使用以下代码:
using (var indexService = GetIndexService())
{
indexService.IndexEntities(cachedResults, p =>
{
var document = new Document();
document.Add(new Field("Name", p.Name, Field.Store.YES, Field.Index.NOT_ANALYZED));
document.Add(new Field("ID", p.ID, Field.Store.YES, Field.Index.NOT_ANALYZED));
document.Add(new Field("Description", p.Description, Field.Store.YES, Field.Index.NOT_ANALYZED));
return document;
});
}
GetIndexService
返回一个SimpleLucene.Impl.DirectoryService
实例。这种方法用于在本地计算机上存储索引。但是,现在我需要将其移动到Windows Azure存储blob。为了做到这一点,我依赖于在以下位置找到的库:
这里显示的示例返回一个
Lucene.Net.Index.IndexWriter
。我不知道如何使用这个物体的方法。这些类型似乎完全不兼容。我只想为索引文件使用不同的存储位置。有办法做到这一点吗?如果是,如何进行。我完全陷入困境。谢谢 似乎索引
看起来:
public int IndexEntities<TEntity>(DirectoryInfo indexLocation, IEnumerable<TEntity> entities, Func<TEntity, Document> converter)
{
using (var indexer = new IndexWriterWrapper(indexLocation)) {
int indexCount = 0;
foreach (TEntity entity in entities) {
indexer.Writer.AddDocument(converter(entity));
indexCount++;
}
return indexCount;
}
}
var writer = //However you get the writer...
var document = new Document();
document.Add(new Field("Name", p.Name, Field.Store.YES, Field.Index.NOT_ANALYZED));
document.Add(new Field("ID", p.ID, Field.Store.YES, Field.Index.NOT_ANALYZED));
document.Add(new Field("Description", p.Description, Field.Store.YES, Field.Index.NOT_ANALYZED));
writer.addDocument(document);