Lucene.Net.Linq项目看起来相当强大,虽然查询看起来很简单,但我不太确定如何添加/更新文档。可以举出一两个例子吗?
发布于 2013-11-21 20:10:47
在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);
}在释放会话时,会将会话中所有挂起的更改写入索引,然后提交。这是在同步上下文中完成的,以确保在其他线程上执行查询时,会话中的所有更改都会自动提交和查看。
https://stackoverflow.com/questions/20130281
复制相似问题