现在我的搜索查询返回了100多个文档,如何为所有返回的文档实现分页?有没有办法用mongoDB实现它,或者我必须获取服务器内存中的所有结果并实现分页(这似乎不合理).请注意,返回的CommandResult不是DBCursor!
DBObject searchCommand = new BasicDBObject();
searchCommand.put("text", collectionName);
searchCommand.put("search", searchQuery);
CommandResult commandResult = db.command(searchCommand);
Run Code Online (Sandbox Code Playgroud)
注意:我使用的是Java.
该text搜索命令没有skip选择,因为在MongoDB的2.4,所以任何分页将在应用程序代码中实现.
如果您考虑文本搜索的行为(即返回基于相关性排名的结果),则skip选项仍然必须缓存或计算要跳过的初始结果.
就您的应用程序中的高效分页而言,一些建议是:
limit文本搜索的默认值是返回最多100个结果.您可以增加限制,但请记住,整个结果文档仍必须符合MongoDB服务器支持的最大BSON文档大小(16Mb,如MongoDB 2.4).同样值得考虑的是,大多数用户在搜索结果页面时都有一定的耐心,因此如果您有几百个结果,最好建议改进搜索条件.
如果你已经超出了MongoDB 2.4文本搜索的当前限制(顺便提一下,它仍然被认为是"实验性的"),你可以随时升级到更全功能的搜索产品,如ElasticSearch或Apache Lucene.有一些方法可以将MongoDB数据更新提供给外部搜索产品,例如使用ElasticSearch River插件或Mongo Connector.
| 归档时间: |
|
| 查看次数: |
3998 次 |
| 最近记录: |