如果搜索是针对特定的documento(例如,数字ID)或10,20,50个文档(我们不知道何时开始变得奇怪),这是真的。
如果查询是一致的(就像上个月的所有文件一样,应该有大约30-60k /月),显然cmis查询(500)的限制之前就停止了。 但是,如果用户点击"搜索"第一次,一段时间后,结果集由2个文档组成。如果用户点击"搜索"在此之后,使用相同的查询,结果集几乎立即暴露,并列出了500个文档。
到底有什么不对? CMIS是否以某种方式缓存结果?大型CMIS查询如何工作? 谢谢 A.
答案 0 :(得分:2)
如你所说,你正在使用Apache Chemistry。化学有一个客户端缓存机制: http://chemistry.apache.org/java/how-to/how-to-tune-perfomance.html
答案 1 :(得分:2)
我怀疑这与CMIS无关,而是由于Alfresco Lucene的“最大权限检查”问题。在高级别,有一个配置设置,用于Alfresco对搜索结果集执行的最大权限检查数。执行此类检查所花费的总时间也是有限的。这些限制在存储库属性文件中配置为:
# The maximum time spent pruning results
system.acl.maxPermissionCheckTimeMillis=10000
# The maximum number of results to perform permission checks against
system.acl.maxPermissionChecks=1000
首次运行搜索时,服务器开始执行这些检查并达到限制。然后它返回它能够过滤的搜索结果。现在填充了权限缓存,因此下次运行搜索时,结果会更快地返回,结果集会更大。
Alfresco中的搜索是非确定性的 - 您不能保证,对于大型结果集,您每次都会得到完全相同的结果集,无论您进行这些设置有多大。
如果你能够在某些时候进行升级,你可能会发现配置Alfresco使用Solr而不是Lucene可以帮助减轻这种情况,但我并不是百分之百确定会这样做。
答案 2 :(得分:0)
要禁用安全检查,请使用searchService替换公共SearchService。公共服务已强制执行安全性,因此使用searchService可以避免安全检查。