2012-03-05 174 views
15

我对AD和LDAP查询的知识非常有限,所以我对如何使用通配符有一个简单的问题。在LDAP搜索过滤器/查询中使用通配符

应该有物体的显示名“ITSM - 问题管理”

我目前的实施情况,通配符的过滤器是这样的:

(displayName=SEARCHKEYWORD*) 

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

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

(displayName=*SEARCHKEYWORD*) 

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

关于如何解决此问题的任何想法或想法?任何意见将不胜感激。谢谢!

+1

您应该通知目录管理员您打算使用子字符串过滤器来确保目录服务器已正确配置。另请参阅[LDAP:编程实践](http://ff1959.wordpress.com/2011/10/27/ldap-programming-best-practices/)。 – 2012-03-05 15:51:19

+0

出于好奇,“ITSM”代表什么?我知道一个特定的ITSM,但我怀疑它和你的一样...... – ErikE 2012-10-22 21:29:11

+0

@ErikE对于我的回复中延迟的ITSM = IT服务管理抱歉。适用于IT运营的政策和流程:) – AnimaSola 2012-11-22 00:17:00

回答

21

的滤波器参数与尾随*可以几乎在瞬间经由索引查找来评价。主导*意味着通过索引进行顺序搜索,因此它是O(N)。这将需要很长时间。

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

+0

看起来你是正确的与领先的通配符年龄,我搜索了一个特定的对象,它的全名,它仍然没有解决搜索,我不认为它会永远。谢谢! – AnimaSola 2012-03-06 02:26:41

+0

我一直都在使用这种搜索方式,并且没问题,只需要像ObjectClass这样过滤:'(&(ObjectClass = Person)(cn = * KEYWORD *))' – 2014-02-28 15:05:32

+0

@ManuelGutierrez时间仍然是* O(N )*,但由于额外的'objectClass'过滤器,您现在正在处理更小的* N. * – EJP 2014-04-24 07:07:35

1

这应该工作,至少根据MSDN网络上的Search Filter Syntax文章。

您注意到的“挂断”可能只是一个延迟。尝试运行范围较窄的相同查询(例如测试对象所在的特定OU),因为如果针对所有AD对象运行它,可能需要很长时间才能处理。

你也可以尝试过滤器分离成两个部分:

(|(displayName=*searchstring)(displayName=searchstring*)) 
+0

我试过上面的过滤器来搜索一个特定的对象,因为我输入了整个名称,并且搜索需要很长时间。我认为它永远不会解决。 EJP评论说领先的通配符可能需要很长时间才是正确的。 虽然感谢您的回复,谢谢! :) – AnimaSola 2012-03-06 02:23:34

6

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

"(|(displayName=SEARCHKEY*)(displayName=ITSM - SEARCHKEY*)(displayName=alt prefix - SEARCHKEY*))" 

麻烦,但是我做我的组织内类似的事情。

相关问题