我在AD和LDAP查询方面的知识非常有限,所以我有一个关于如何使用通配符的简单问题。
假设有一个displayName为"ITSM -问题管理“的对象
我目前使用通配符实现的过滤器是这样的:
(displayName=SEARCHKEYWORD*)如果用户输入关键字"Problem",他将无法找到对象,因为它需要名称的第一部分,即"ITSM -“
我想在两端实现通配符,如下所示:
(displayName=*SEARCHKEYWORD*)理想情况下,这将允许输入" Problem“,并让它搜索"ITSM -Problem Management”。但是,当您将通配符放在开头时,它似乎不起作用。当我尝试它时,它似乎挂起了,并且没有返回任何结果。
关于如何解决这个问题,有什么想法或想法吗?任何意见都将受到高度赞赏。谢谢!
发布于 2012-03-06 07:23:02
带有尾随*的筛选器参数几乎可以立即通过索引查找来计算。前导*表示对索引的顺序搜索,因此它是O(N)。这将需要很长时间。
我建议你重新考虑这个要求。
发布于 2014-11-08 05:12:32
最好的办法是预测前缀,所以:
"(|(displayName=SEARCHKEY*)(displayName=ITSM - SEARCHKEY*)(displayName=alt prefix - SEARCHKEY*))"笨拙,但我在我的组织内部也在做类似的事情。
发布于 2012-03-05 17:38:00
这应该是可行的,至少根据MSDN网络上的Search Filter Syntax文章。
你已经注意到的“挂断”可能只是一个延迟。尝试使用较窄的作用域(例如,测试对象所在的特定OU )运行相同的查询,因为如果对所有AD对象运行该查询,可能需要很长时间才能进行处理。
您也可以尝试将过滤器分成两部分:
(|(displayName=*searchstring)(displayName=searchstring*))https://stackoverflow.com/questions/9564120
复制相似问题