我正在做一个LDAP查找,我需要根据寻呼机号码进行搜索。我们的寻呼机号码中可能会有连字符或空格或者parens。我试图找出我在寻呼机字段上需要的搜索过滤器,假设我的用户可能会或可能不知道parens或连字符在LDAP字段中的位置。子过滤器的LDAP过滤器?逃脱连字符和parens?
我想写一个过滤器,将匹配最后五位数字。
例(单引号不存储在LDAP,我在这里使用它们作为分隔符):
'127 13098'
'125 or (44)8-9622'
'126 (12349)'
这些都将是在LDAP我们的寻呼机领域可能的值。
这是我到目前为止有:
(&(objectCategory =人)(对象类=用户)(SN = *)(给定名称= *)(寻呼机= * “+ Pager.Trim()+” ))”
这第一个例子能正常工作,但它不会让中间的例子,如果用户输入只是几个数字。
你们准备好可以写一个过滤器,将找到所有三种情况的五位数组合,或者我将需要进行多次搜索吗?
这并不回答你的问题,但一般来说你的数据应该使用多值属性而不是'或'。这将使数据管理,搜索和审计更容易,更不用说简化应用程序代码。要求应用程序理解数据的格式是不可扩展的,这种做法导致脆弱和脆弱的应用程序和基础设施。 – 2012-03-23 12:47:26
我不明白你的意思,特里,通过“你的数据应该使用多值属性”来代替或。你是否指我的例子中的数据值?这是我无法控制的。我只是试图搜索传呼机的值,而不是编辑或更新值。 – 2012-03-23 15:15:59
如果您无法控制数据,则无关紧要。我在说“pager”的值最好存储在多值属性中,例如“pager:125”和“pager:(44)8-9622”。换句话说,目录条目对每个值都有一个“pager”属性,而不是使用“or”这个词。但正如我所说,如果你不能改变数据的格式,那没关系。 – 2012-03-23 15:23:15