如何在Lucene.Net.Linq中添加文档?

Jes*_*cer 4 linq lucene.net lucene.net.linq

Lucene.Net.Linq项目似乎很强大,在查询时看起来很简单,我不太清楚如何添加/更新文档.可以提供一两个例子吗?

Chr*_*dge 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});
}
Run Code Online (Sandbox Code Playgroud)

您还可以更新现有文档.只需从会话中检索项目,会话将检测是否进行了修改:

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

或者你可以删除文件:

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

处理会话时,会话中的所有挂起更改都将写入索引,然后提交.这是在同步上下文中完成的,以确保在其他线程上执行查询时,会提交并以原子方式查看会话中的所有更改.