Lucene.NET结果使用类似sql的限制?+1k问题

Lucene.NET结果使用类似sql的限制?+1k问题,lucene,lucene.net,limit,Lucene,Lucene.net,Limit,我同意并喜欢它,但我真的宁愿在开始使用之前解决这个问题。所以我开始悬赏,希望以后我的屁股不会被咬 使用Lucene.NET 2.9.x,任何使用.NET的版本。如何搜索和限制/分页与SQLite和MySql中的limit关键字类似的结果?我想找到前20个有“苹果”字样的文档,并且有一个链接到第20页,返回20个结果,忽略前400个得分较高的文档。我应该实施它吗?下面是Pascal Dimassimo的答案 1k问题 嘿,伙计们,我现在有999个问题,所以这将是我的第1000个问题!我只想对所有回

我同意并喜欢它,但我真的宁愿在开始使用之前解决这个问题。所以我开始悬赏,希望以后我的屁股不会被咬

使用Lucene.NET 2.9.x,任何使用.NET的版本。如何搜索和限制/分页与SQLite和MySql中的limit关键字类似的结果?我想找到前20个有“苹果”字样的文档,并且有一个链接到第20页,返回20个结果,忽略前400个得分较高的文档。我应该实施它吗?下面是Pascal Dimassimo的答案

1k问题 嘿,伙计们,我现在有999个问题,所以这将是我的第1000个问题!我只想对所有回答了我的问题、给我留下评论并帮助我学习编程和技术的人说声谢谢,这些人比我一个人学习的时间要早很多年

我还想提一下,谁是长期以来被问最多的问题的领导者,更重要的是,他提出的问题很好,而且有很多人投了赞成票。我努力使自己的素质和他的一样高。我还想提到这些人,他们也在问很多问题

有一个参数限制查询返回的结果数

Query query = parser.parse("Apple");
TopDocs topDocs = searcher.search(query, 20);
但是Lucene不支持分页。您必须重新执行查询,并保留符合您需要的范围的结果

请参见此图。

有一个参数用于限制查询返回的结果数

Query query = parser.parse("Apple");
TopDocs topDocs = searcher.search(query, 20);
但是Lucene不支持分页。您必须重新执行查询,并保留符合您需要的范围的结果


见此。

Searcher.search,您在第二行中使用,也有签名:

Search(Query query, Filter filter, HitCollector results)
使用HitCollector将临时结果刷新到快速和临时存储中。例如,如果用户请求前20个,您需要返回它,并在后台线程中开始缓存所有其他线程。实际上,您只需要存储文档的ID,因此对于100万个文档,预期结果大约为4Mb


当结果在存储器中时,支持分页很简单。

Searcher.search(您在第二行中使用)还具有签名:

Search(Query query, Filter filter, HitCollector results)
使用HitCollector将临时结果刷新到快速和临时存储中。例如,如果用户请求前20个,您需要返回它,并在后台线程中开始缓存所有其他线程。实际上,您只需要存储文档的ID,因此对于100万个文档,预期结果大约为4Mb


当结果出现在存储中时,支持分页就很简单了。

我现在担心如果我的应用程序扩展到处理数十万个文档,会发生什么情况。我会放弃2.9的要求,希望有答案。如果没有其他解决办法,我会在几天后接受。我很失望lucene不支持这个。lucene通常在重做相同的搜索时速度非常快。你应该先测试一下你的应用程序,我同意Pascal的观点,Lucene使用分页几乎总是错误的。查找前n个文档的时间复杂度随着logn see的增加而增加,因此从20个增加到40个实际上是一个非常微小的变化。看起来很快。好的,我会在悬赏结束后做这件事。我现在担心如果我的应用程序能够处理数十万个文档,会发生什么。我会放弃2.9的要求,希望有答案。如果没有其他解决办法,我会在几天后接受。我很失望lucene不支持这个。lucene通常在重做相同的搜索时速度非常快。你应该先测试一下你的应用程序,我同意Pascal的观点,Lucene使用分页几乎总是错误的。查找前n个文档的时间复杂度随着logn see的增加而增加,因此从20个增加到40个实际上是一个非常微小的变化。看起来很快。好吧,赏金结束后我会这么做的。