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

mik*_*_x_ 1 full-text-search lotus-notes lotus lotus-domino xpages

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

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

FIELD名称包含"Chuck Norris"

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

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

Jul*_*uss 5

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

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

var item = document1.getFirstItem("myfield");
item.setReaders(true);
document1.save();
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

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

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

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