Xpages 集合上的标记计数

Xpages 集合上的标记计数,xpages,lotus-domino,Xpages,Lotus Domino,我想复制stackexchange站点的功能:每当您有问题列表时,右侧都会有一个列表,列出其中显示的所有标记,包括它们的计数(频率)。 是否有任何性能友好的方法,如何通过视图中的每个元素无需迭代即可获得此类信息?让我们假设它应该与公共视图数据源一起工作,并且视图的内容可以通过过滤器(键、类别)或全文来更改。 我已经考虑(并拒绝)了几个解决方案: 遍历集合-由于性能原因无法使用(特别是如果无法使用ViewNavigator-FT查询)。 对呈现内容中的标记计数-仅限于可见页面,其他页面的标记不计数

我想复制stackexchange站点的功能:每当您有问题列表时,右侧都会有一个列表,列出其中显示的所有标记,包括它们的计数(频率)。 是否有任何性能友好的方法,如何通过视图中的每个元素无需迭代即可获得此类信息?让我们假设它应该与公共视图数据源一起工作,并且视图的内容可以通过过滤器(键、类别)或全文来更改。 我已经考虑(并拒绝)了几个解决方案:

  • 遍历集合-由于性能原因无法使用(特别是如果无法使用ViewNavigator-FT查询)。
  • 对呈现内容中的标记计数-仅限于可见页面,其他页面的标记不计数(stackexchange对每个页面的标记计数)。不过表现不错。
  • DocumentCollection.intersect—迭代所有标记,并将带有该标记的所有文档的集合与源集合相交,将导致带有该标记的文档计数。这种方法是性能杀手。

    您可以使用带有摘要列的分类视图,并用json查询它。需要折叠?ReadViewEntries&Outputformat=json

    您可以使用带有摘要列的分类视图,并在json中查询它。需要折叠?RealVIEWS条目和输出格式= JSON/P>< P>我会考虑两个基本的方法:

  • 将标记存储在问题文档的多值摘要文本字段中,基于该字段创建分类视图,打开视图,创建NotesViewNavigator,使用CreateViewNavFromCategory创建NotesViewNavigator,该NotesViewNavigator仅包含与标记匹配的文档,并获取NotesViewNavigator.count()属性值

  • 将标记存储在问题文档中的字段(可以是多值或单值、摘要或非摘要文本,甚至是富格文本字段)中,全文索引数据库,并使用database.FTSearch方法和使用字段关键字获取NotesDocumentCollection的搜索公式,并使用NotesDocumentCollection.count()属性


  • 对于过滤,我认为后一种方法可能更好。您可能只需要修改您的FT查询,以包含完成筛选的附加条件。这可能是非常灵活的,而且应该非常快。另一方面,使用NoSeVIEWNavigor,您必须迭代通过NoTeVIEWScript条目对象来进行过滤。

    < P>我会考虑两种基本方法:

  • 将标记存储在问题文档的多值摘要文本字段中,基于该字段创建分类视图,打开视图,创建NotesViewNavigator,使用CreateViewNavFromCategory创建NotesViewNavigator,该NotesViewNavigator仅包含与标记匹配的文档,并获取NotesViewNavigator.count()属性值

  • 将标记存储在问题文档中的字段(可以是多值或单值、摘要或非摘要文本,甚至是富格文本字段)中,全文索引数据库,并使用database.FTSearch方法和使用字段关键字获取NotesDocumentCollection的搜索公式,并使用NotesDocumentCollection.count()属性


  • 对于过滤,我认为后一种方法可能更好。您可能只需要修改您的FT查询,以包含完成筛选的附加条件。这可能是非常灵活的,而且应该非常快。另一方面,使用NotesViewNavigator,您必须迭代NotesViewEntry对象以进行筛选。

    如果我想要某个特定类别下所有文档的所有标记,这将起作用。我想要的是“任何”集合的所有标签——例如FT搜索的结果。如果我想要某个特定类别下所有文档的所有标签,这将起作用。我想要的是“任意”集合的所有标记-例如FT搜索结果。