2

我正在尝试检索有关 LDAP 上的组的数据。因为我需要对结果进行分页,所以我需要运行范围查询。我的设置使用 JNDI 连接到 LDAP。我正在尝试运行此查询

 (&(objectclass=group)(range=1-500))

我究竟做错了什么?我知道 LDAP 有基于范围的查询,如何修改此查询以获得相同的查询?

4

3 回答 3

5

分页是一回事,范围是另一回事。当条目超过 1000 个时(至少这是 Active Directory 中的默认设置),您对从 LDAP 服务器返回的结果进行分页。

MSDN 有一篇关于如何在 .NET 中进行分页搜索的文章;希望您可以将其转化为您的环境。

范围是不同的东西。当您有一个member具有大量值的多值属性(通常是组的 - 属性)时,您可以使用范围。所以你不能在查询中有范围。您需要在访问多值属性时指定范围(而不是仅member在代码中指定访问您指定的属性值member;range=1-500以从该多值属性中获取前 500 个值)。

于 2010-01-15T21:27:48.647 回答
3

如果您的 AD 是 2003 或更高版本,您可以考虑使用虚拟列表视图控件,而不是简单分页控件。虚拟列表视图提供了高级结果排序选项,让您可以更有效地控制搜索结果集的子集。

于 2010-02-03T12:44:19.443 回答
0

这是您需要查询以获取结果的方式

int start = 0;
int step = 1500;
int finish = 1499;
boolean finished = false;
String range;

String returnedAtts[] = {"member;Range=" + range};
searchCtls.setReturningAttributes(returnedAtts);
NamingEnumeration answer = readableDirContext.search(searchDN, searchFilter, searchCtls);
于 2015-06-16T18:26:28.017 回答