2013-11-21 45 views

回答

7

在測試項目https://github.com/themotleyfool/Lucene.Net.Linq/tree/master/source/Lucene.Net.Linq.Tests/Samples有一些完整的例子。

一旦你設置你的映射和初始化您的提供商,您可以通過打開會話進行更新:

var directory = new RAMDirectory(); 

var provider = new LuceneDataProvider(directory, Version.LUCENE_30); 

using (var session = provider.OpenSession<Article>()) 
{ 
    session.Add(new Article {Author = "John Doe", BodyText = "some body text", PublishDate = DateTimeOffset.UtcNow}); 
} 

您還可以更新現有的文件。只需從會話中檢索的項目,該會議將檢測一個修改,是:

using (var session = provider.OpenSession<Article>()) 
{ 
    var item = session.Query().Single(i => i.Id == someId); 
    item.Name = "updated"; 
} 

也可以刪除文件:

using (var session = provider.OpenSession<Article>()) 
{ 
    var item = session.Query().Single(i => i.Id == someId); 
    session.Delete(item); 
} 

當會話配置,在所有掛起更改會話被寫入索引,然後提交。這是在同步上下文中完成的,以確保在其他線程上執行查詢時,會話中的所有更改都被原子地提交和查看。

+0

你好克里斯我問了一個關於你的LINQ到Lucene.Net項目的問題,請你檢查一下嗎? http://stackoverflow.com/questions/25300203/difference-between-linqtolucene-and-linq-to-lucene-net – alizx