我同意this answer并且喜欢它,但我真的宁愿在上线之前解决这个问题。所以我开始赏金,希望我的屁股不会被咬伤;)。
使用Lucene.NET 2.9.x 任何使用.NET的版本。我如何搜索和限制/分页结果类似于SQLite和MySql中的limit关键字?我想找到排名前20位的文档,其中包含“Apple”这个词,并且链接到第20页,返回20个结果,忽略前400个文档得分更高。我应该实现它this way(信用证转到下面的Pascal Dimassimo回答)
嘿伙计们,我目前有999个问题,所以这将是我的第1000个问题!我只是想对所有回答我问题的人表示感谢,给我发表评论并总体帮助我学习编程和技术多年以后我会独自一人。
我还想提一下Edward Tanguay长期领导问题最多的问题,更重要的是要问很多赞成 的问题。我罢工让我的质量和他一样高。我也想提一下那些提出很多问题的人。 ooo,metal-gear-solid,Masi,Blankman
答案 0 :(得分:3)
search method of the Searcher class有一个参数来限制查询返回的结果数。
Query query = parser.parse("Apple");
TopDocs topDocs = searcher.search(query, 20);
但Lucene并不支持分页。您将不得不重做您的查询并保持适合您所需范围的结果。
请参阅此question。
答案 1 :(得分:1)
Search(Query query, Filter filter, HitCollector results)
使用HitCollector将临时结果刷新为快速和临时存储。例如,如果用户要求前20 - 你需要返回它,并在后台线程开始缓存所有另一个。实际上你只需要存储文档的ID,因此对于1百万个结果,预计大约需要4Mb。
当结果存储在存储中时,支持分页很简单。