gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 09:19:50 28 4
gpt4 key购买 nike

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

最佳答案

测试项目中有一些完整的示例 https://github.com/themotleyfool/Lucene.Net.Linq/tree/master/source/Lucene.Net.Linq.Tests/Samples .

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

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});
}

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

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);
}

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

关于linq - 如何在Lucene.Net.Linq中添加文档?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20130281/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com