XPages:我可以过滤视图以仅显示属于某个组的条目吗?

时间:2013-11-28 07:22:03

标签: full-text-search xpages lotus-notes lotus-domino lotus

我在xpage中有一些视图(包括客户端)。我有一组人(客户),其中包含视图的一些客户端。现在我想使用视图的搜索属性来仅显示属于该组的条目。

我已经使用搜索属性按名称选择用户,例如:

FIELD名称包含“Chuck Norris”

有任何类似的查询吗? (也许在场上使用@isMember ......?)

更新:我也将组条目(客户名称)放入文档的文本列表中。那么我可以根据文本列表的值过滤视图的“名称”字段吗?

1 个答案:

答案 0 :(得分:5)

也许使用读者字段是一个好主意。您正在谈论限制对一组Domino用户的文档访问 - 这正是读者字段的用途。

例如,将包含客户端名称的文本列表字段放入读者字段中,如下所示:

var item = document1.getFirstItem("myfield");
item.setReaders(true);
document1.save();

myfield需要包含规范名称(CN = firstname lastname / O = organization)。

使用阅读器字段,您根本不需要进行任何视图过滤,它会自动发生。如果你有很多文件(比方说,50万左右),它可能会减慢速度,否则,这是一个很好的方法。

但是,如果要限制仅在某个视图中显示文档,则读者字段不是解决方案。在这种情况下,您需要在尝试时自己进行视图过滤。

如果您只想过滤某个特定客户端,那么使用分类视图即可。您可以将视图面板的一个客户端的名称作为类别过滤器。

如果要过滤多个客户端,则需要基于全文搜索来完成,就像您已经尝试过的那样。在这种情况下,请确保您正在使用Domino 9.以前的Domino版本不会将视图排序顺序应用于全文搜索结果,这意味着您必须使用自定义JavaScript等手动搜索它,这很复杂。

或者,正如Frantisek建议的那样,编写一个预定的代理,根据客户端将文档放入文件夹中 - 但是根据您要过滤视图的客户端数量,可能会导致许多文件夹,这可能会导致其他问题。此外,您需要确保在不再需要时删除文件夹,并且在文档夹中出现新文档之前有滞后。

简而言之,如果您想根据客户端名称进行应用程序范围的限制,请使用reader字段。 如果要一次限制一个客户端名称,请使用类别。 否则,使用Domino 9的全文搜索。