2010-10-08 39 views
0

給定來自自由格式搜索字段的輸入,我需要查詢LDAP系統並返回用戶記錄。我們的LDAP模式包含一個「preferredName」。可能的有效輸入包括:「LastName」,「GivenName」,「PreferredName LastName」,「LastName,PreferredName」,「GivenName LastName」等,包括諸如多字姓(帶或不帶連字符)的變體。什麼是用於按名稱搜索用戶的最佳LDAP查詢或查詢?

我們目前不太理想的流程將單個詞語拆分出來,對順序做出一些假設(根據是否存在逗號),然後創建幾個簡單的LDAP查詢(例如:對於「John Smith」將提交下列查詢:

(&(objectclass=person)(sn=*smith*)(preferredName=*john*)) 
(&(objectclass=person)(givenName=*john*)(sn=*smith*)) 

然後,我們合併和重複數據刪除的多個查詢結果單查詢解決方案是受歡迎得多,即使查詢本身是複雜的隨着我非常基本的理解。的LDAP查詢語法,我可以將名字的每個可能的排列組合成一個巨大的查詢,但我希望有一個更優雅的解決方案。

回答

1

只要所有這些屬性都被編入索引就行。但是你可以將所有這些查詢合併成一個運營商,那麼LDAP服務器將爲您解密它,並且您的網絡流量和延遲等將會減少很多。