ali*_*izx 9 linq-to-lucene lucene.net.linq
因为我发现Lucene.Net.Linq最近更新相对于LinqToLucene并且它在nuget中可用我想在我的简单项目中使用它,但我遇到了缺少文档而我找不到如何使用lucene使用此包的高级查询,例如LinqToLucene中可能的查询:
var query = from c in index.Customers
where c.Like("amber") || c.CompanyName.Between("a", "d")
where !c.CustomerId == "Jason"
Run Code Online (Sandbox Code Playgroud)
如果这个扩展功能不可用那么这个项目有什么意义呢?
Chr*_*dge 11
LINQ to Lucene似乎不活跃.撰写本文时的最后一次提交是在2012年10月,最后一个询问项目是否有效的讨论帖在同一时间段内没有得到答复.
LINQ to Lucene与实体框架有一些紧密耦合,所以在我看来,该项目旨在索引来自EF的数据进行自由文本搜索.
Lucene.Net.Linq是一个完全独立的项目,我于2012年开始并一直积极维护.此项目与EF或其他库没有任何耦合.它只依赖于Lucene.Net,Common.Logging用于日志记录,Remotion.Linq用于帮助LINQ查询解析和转换.我最初评估了为LINQ贡献Lucene的可能性,但发现与EF的紧密耦合和其他一些假设使得库不适合我的需求.
where这样的文档包含项目README和单元测试项目中的示例代码.
Lucene.Net.Linq没有Lucene.Net本身支持的每个查询的扩展方法.但是,它确实提供了一个逃生舱,你可以自己传递Query:
var result = customers
.Where(new TermRangeQuery("CompanyName", "A", "C", includeLower: true, includeUpper: true))
.ToList();
Run Code Online (Sandbox Code Playgroud)
它支持使用模糊匹配搜索任何索引字段:
var result = customers
.Where(c => (c.AnyField() == "amber").Fuzzy(1.0f))
.ToList();
Run Code Online (Sandbox Code Playgroud)
它支持简单匹配==和!=:
var result = customers
.Where(c => c.CustomerId != "Jason")
.ToList();
Run Code Online (Sandbox Code Playgroud)
请注意,其含义==取决于给定字段的索引方式.如果该字段被索引为关键字,则完全匹配生效.如果字段被标记化,阻塞,转换为小写等,那么==将匹配字段中的任何术语.
| 归档时间: |
|
| 查看次数: |
2592 次 |
| 最近记录: |