在一个自定义控件中执行多个查找的有效方式

时间:2012-08-29 00:39:50

标签: xpages

我正在构建一个自定义控件来进行查找,并提供数据库中几个项目状态的摘要。有20种不同的状态,为了确定每个状态的数量,我正在做一个NotesDatabase.search来计算每个状态。

当只有2个状态需要检查时,这很好,但业务现在希望显示所有状态。 :)

我担心进行搜索所需的时间,并希望以最有效的方式执行此操作。

我考虑过的事情:

  • 文档会定期更新,因此我无法让代理执行计算,并且自定义控件会对这些静态值运行查找。这意味着数据已经过时了。
  • 结果取决于登录的用户,根据他们的登录ID进行计数,因此我无法真正为每个人提供单独的视图。

有没有人有一个干净的建议解决方案?

我即将开始测试20次搜索,并会根据这些搜索结果进行更新,但我预计会非常慢。

A

3 个答案:

答案 0 :(得分:1)

另一个选项:代替@DBLookup,你进入视图,然后使用导航器端到端地运行它。这非常快,应该比20倍搜索更快。

当然,您可以在QuerySave事件中更新计数并将其写入内存配置文件中的特定用户。

因此,在QuerySave中,您将看到ApplicationBean中加载了哪些用户并更新了这些用户。如果用户新登录,则数据库中的搜索将完成到应用程序bean中。当会话到期时(会话侦听器),ApplicationBean中的条目将被清除。

答案 1 :(得分:0)

使用 ONE Ajax调用实际上可能会更好,而不是20次搜索。创建按状态分类并折叠的视图。然后进行Ajax调用...statusview?ReadViewEntries&Outputformat=JSON&count=100。这将为您提供带有子计数属性的100个状态摘要条目。

这会对你有用吗?

答案 2 :(得分:0)

是否可以添加20个状态文档,并在满足某些条件时更新这些文档中的一个或多个?每次更新文档时,代理都会运行以匹配这些条件,以便更新状态。

如果每天有很多更新,那就不是很有效了。