我正在做一個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