Lucene.net仅搜索不同的列值

时间:2016-08-09 08:27:24

标签: c# lucene distinct lucene.net

我正在使用Lucene.net搜索,我的哈希表看起来像:

ID    |    Customer    |    Update
1     |    name1       |    hello
1     |    name1       |    hello again
2     |    name2       |    how r u
3     |    name3       |    hi
3     |    name3       |    it is not working

我想要的是,当我搜索"你好"我通过ID得到结果列表:

ID    |    Customer    |    Update
1     |    name1       |    "hello"

我不需要更新列在结果中(因此我不关心ID 1的更新将在结果中)我只是想要它可搜索。我需要的唯一结果是ID和客户名称。我知道我可以使用MoreLINQ中的result.DistinctBy(res => res.Id)来执行此操作,但我希望IndexSearcher仅搜索dictinct Id值。有没有办法在不调用LINQ结果的情况下实现这一目标?也许使用搜索器参数过滤器?

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

我不知道(我知道)Lucene在内部是不同的。

然而,有一种更有效的方法。

Linq方法意味着你必须完全投射你的行/对象,如果真实的东西中有更多的字段,这可能是昂贵的。

如果您添加对查询进行排序,以便Lucene以id顺序返回文档,您可以只投影ID,如果id与之前的ID不同,则广告仅投影其余文档。

这是一种自定义方法,但这很正常。

相关问题