如何运行范围查询LDAP(How do I run range queries on LDAP)

2019-10-19 04:04发布

我想检索有关LDAP组数据。 因为我需要分页的结果,我需要运行范围查询。 我的设置使用JNDI连接到LDAP。 我试图运行此查询

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

我究竟做错了什么? 我知道有用于基于LDAP的范围查询,我怎么修改这个查询得到同样的?

Answer 1:

那么寻呼是一回事,范围是另一回事。 你页面,你从LDAP服务器回来时,有超过1000个项目(至少这是在Active Directory中的默认值)的结果。

MSDN有关于如何做到在.NET分页搜索的文章 ; 希望你能翻译,为您的环境。

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



Answer 2:

相反,简单分页控制的,如果你的AD是2003或以上版本,你可以考虑使用虚拟列表视图控制。 虚拟列表视图提供先进的结果排序选项,让您在控制搜索结果集的子集更多的权力。



Answer 3:

这就是你需要查询,得到的结果

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


文章来源: How do I run range queries on LDAP