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

如何在Lucene.Net.Linq中添加文档?,linq,lucene.net,lucene.net.linq,Linq,Lucene.net,Lucene.net.linq,这个项目看起来很强大,虽然查询看起来很简单,但我不太确定如何添加/更新文档。可以提供一两个例子吗?在测试项目中有一些完整的例子 配置映射并初始化提供程序后,可以通过打开会话进行更新: var directory = new RAMDirectory(); var provider = new LuceneDataProvider(directory, Version.LUCENE_30); using (var session = provider.OpenSession<Articl

这个项目看起来很强大,虽然查询看起来很简单,但我不太确定如何添加/更新文档。可以提供一两个例子吗?

在测试项目中有一些完整的例子

配置映射并初始化提供程序后,可以通过打开会话进行更新:

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});
}
var directory=new-RAMDirectory();
var provider=new LuceneDataProvider(目录,Version.LUCENE_30);
使用(var session=provider.OpenSession())
{
添加(新文章{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";
}
使用(var session=provider.OpenSession())
{
var item=session.Query().Single(i=>i.Id==someId);
item.Name=“已更新”;
}
或者您可以删除文档:

using (var session = provider.OpenSession<Article>())
{
    var item = session.Query().Single(i => i.Id == someId);
    session.Delete(item);
}
使用(var session=provider.OpenSession())
{
var item=session.Query().Single(i=>i.Id==someId);
删除(项目);
}

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

Hello chris我问了一个关于LINQ to Lucene.Net项目的问题,请检查一下好吗?