在LDAP搜索过滤器/查询中使用通配符

Ani*_*ola 20 ldap wildcard filter active-directory

我对AD和LDAP查询的知识非常有限,所以我对如何使用通配符有一个简单的问题.

假设有一个displayName为"ITSM - 问题管理"的对象

我目前使用通配符实现的过滤器是这样的:

(displayName=SEARCHKEYWORD*)
Run Code Online (Sandbox Code Playgroud)

如果用户输入关键字"问题",他将无法找到该对象,因为它需要名称的第一部分,即"ITSM - "

我想在两端实现通配符,如下所示:

(displayName=*SEARCHKEYWORD*)
Run Code Online (Sandbox Code Playgroud)

理想情况下,这将允许输入"问题"并让它搜索"ITSM - 问题管理".但是当你把它放在开头时,通配符似乎不起作用.当我尝试它时,它似乎挂断而不返回任何结果.

关于如何解决这个问题的任何想法或想法?任何意见都将受到高度赞赏.谢谢!

use*_*421 26

带有尾随*的过滤器参数几乎可以通过索引查找立即进行评估.前导*意味着通过索引进行顺序搜索,因此它是O(N).这需要很长时间.

我建议你重新考虑这个要求.

  • @ManuelGutierrez 时间仍然是 *O(N),* 但由于额外的 `objectClass` 过滤器,您现在正在处理更小的 *N。* (2认同)

Ric*_*ich 7

你最好的选择是预测前缀,所以:

"(|(displayName=SEARCHKEY*)(displayName=ITSM - SEARCHKEY*)(displayName=alt prefix - SEARCHKEY*))"
Run Code Online (Sandbox Code Playgroud)

笨重,但我在组织内做了类似的事情.