Active directory 如何在LDAP上运行范围查询

Active directory 如何在LDAP上运行范围查询,active-directory,ldap,jndi,ldap-query,Active Directory,Ldap,Jndi,Ldap Query,我正在尝试检索LDAP上有关组的数据。因为我需要对结果进行分页,所以我需要运行范围查询。我的安装程序使用JNDI连接到LDAP。我正在尝试运行此查询 (&(objectclass=group)(range=1-500)) 我做错了什么?我知道LDAP有基于范围的查询,如何修改此查询以获得相同的结果 油井分页是一回事,范围是另一回事。当有1000多个条目(至少这是Active Directory中的默认条目)时,可以分页从LDAP服务器返回的结果 MSDN有;希望您能将其转化为您的环境

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

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

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

油井分页是一回事,范围是另一回事。当有1000多个条目(至少这是Active Directory中的默认条目)时,可以分页从LDAP服务器返回的结果

MSDN有;希望您能将其转化为您的环境


射程是。当您具有多值属性(通常是组的
成员
-属性)且具有大量值时,可以使用范围。因此,查询中不能包含范围。访问多值属性时,需要指定范围(然后在访问属性值的代码中指定
member
,而不是指定
member;范围=1-500
,以从该多值属性中获取前500个值)

< P>代替简单的分页控件,如果您的广告是版本2003或以上,您可以考虑使用虚拟列表视图控件。虚拟列表视图提供了高级结果排序选项,使您能够更有效地控制搜索结果集的子集。

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

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);

我尝试使用这种方法来运行范围查询,但似乎无法通过1000条记录的限制。有什么建议吗?@RiteshMNayak,据我所知,在对LDAP进行查询时,您需要指定“attr+range”来代替real属性。参见Ravi Macha的回答:您从未将任何内容分配给“字符串范围”。range=“0-1000”;