发布于 2014-08-14 16:27:19
LINQ到Lucene似乎是不活跃的。撰写本报告时的最后一次提交是在2012年10月,最后一次询问项目是否活动的讨论帖子自同一时间框架以来一直没有得到答复。
LINQ到Lucene与实体框架有一些紧密的耦合,所以在我看来,这个项目是为了索引来自EF的数据,以便进行免费的文本搜索。
Lucene.Net.Linq是一个完全不同的项目,我从2012年开始并一直在积极维护。此项目与EF或其他库没有任何耦合。它只依赖于Lucene.Net,Common.Logging用于日志记录,Remotion.Linq用于帮助LINQ查询解析和翻译。我最初评估了Lucene的可能性,但发现与EF的紧密耦合以及其他一些假设使得库不适合我的需要。
LINQ到Lucene cons:
where子句中Lucene.Net.Linq的优点:
Lucene.Net.Linq缺点:
这样的文档由单元测试项目中的项目自述和示例代码组成。
Lucene.Net.Linq并不是对Lucene.Net支持的每个查询都有扩展方法。但是,它确实提供了一个可以在您自己的Query中传递的逃逸舱口。
var result = customers
.Where(new TermRangeQuery("CompanyName", "A", "C", includeLower: true, includeUpper: true))
.ToList();它还支持使用模糊匹配搜索任何索引字段:
var result = customers
.Where(c => (c.AnyField() == "amber").Fuzzy(1.0f))
.ToList();它支持与==和!=的简单匹配。
var result = customers
.Where(c => c.CustomerId != "Jason")
.ToList();请注意,==的含义由给定字段的索引方式控制。如果字段被索引为关键字,则完全匹配生效。如果字段被标记化、词干化、转换为小写等,那么==将匹配该字段中的任何术语。
发布于 2015-03-31 14:55:27
使用此代码:
var directory = FSDirectory.Open(AppDomain.CurrentDomain.BaseDirectory + "/index/recipes");
using(var provider = new LuceneDataProvider(directory, Lucene.Net.Util.Version.LUCENE_30)) {
using(var session = provider.OpenSession < CatalogItemDocument > ()) {}
}您可以使用文件系统而不是系统内存。
https://stackoverflow.com/questions/25300203
复制相似问题