【发布时间】:2012-03-23 20:47:56
【问题描述】:
我正在从 LDAP 进行查找,我需要根据寻呼机号码进行搜索。我们的寻呼机号码中可能包含连字符、空格或括号。我试图找出我的寻呼机字段中需要的搜索过滤器,假设我的用户可能知道也可能不知道括号或连字符在 LDAP 字段中的位置。
我正在尝试编写一个匹配最后五个数字的过滤器。
示例(单引号不存储在 LDAP 中,我在这里使用它们作为分隔符):
'127 13098'
'125 or (44)8-9622'
'126 (12349)'
这些都是 LDAP 中 Pager 字段中可能的值。
这是我目前所拥有的:
(&(objectCategory=person)(objectclass=user)(sn=*)(givenname=*)(pager=*" + Pager.Trim() + "))"
这对于第一个例子来说很好,但如果用户只输入数字,它就不会得到中间例子。
是否有可能编写一个过滤器来找到所有三种情况的五位数组合,还是我需要进行多次搜索?
【问题讨论】:
-
这不能回答你的问题,但一般来说你的数据应该使用多值属性而不是
or。这将使数据管理、搜索和审计更加容易,更不用说简化应用程序代码了。要求应用程序理解数据的格式是不可扩展的,这样的做法会导致应用程序和基础设施脆弱而脆弱。 -
我不明白你的意思,特里,“你的数据应该使用多值属性”而不是 or。您指的是我的示例中的数据值吗?这是我无法控制的。我只是想搜索寻呼机值,而不是编辑或更新值。
-
如果您无法控制数据,也没关系。我是说
pager的值最好存储在多值属性中,例如pager: 125和pager: (44)8-9622。换句话说,目录条目的每个值都有一个pager属性,而不是使用单词or。但正如我所说,如果你不能改变数据的格式,那也没关系。
标签: ldap