我想从stackexchange站点复制功能:每次有问题列表时,右侧都会显示其中显示的所有标签的列表,包括其计数(频率)。 是否有任何性能友好的方式,如何在不迭代浏览视图中的每个元素的情况下获取此类信息?假设它应该与公共视图数据源一起使用,并且视图的内容可以通过过滤器(键,类别)或全文来改变。 我已经考虑(并拒绝)了一些解决方案:
答案 0 :(得分:3)
您可以使用带有摘要列的分类视图,并在json中查询它。需要崩溃。 ?ReadViewEntries&安培; OUTPUTFORMAT = JSON
答案 1 :(得分:1)
我会考虑两种基本方法:
将标记存储在问题文档的多值摘要文本字段中,根据该字段创建分类视图,打开视图,创建NotesViewNavigator,使用CreateViewNavFromCategory创建仅包含文档的NotesViewNavigator与标记匹配,并获取NotesViewNavigator.count()属性值。
将标记存储在问题文档中的字段(可以是多值或单值,摘要或非摘要文本,甚至是富文本字段),全文索引数据库,以及使用Database.FTSearch方法,其搜索公式使用FIELD关键字来获取NotesDocumentCollection,并使用NotesDocumentCollection.count()属性。
对于过滤,我认为后一种方法可能会更好。您可能只需修改FT查询以包含其他条件即可完成过滤。这可能非常灵活,应该非常快。另一方面,使用NotesViewNavigator,您必须遍历NotesViewEntry对象才能进行过滤。