鉴于来自自由格式搜索字段的输入,我需要查询LDAP系统并返回用户记录。我们的LDAP模式包含“preferredName”。可能的有效输入包括:“LastName”,“GivenName”,“PreferredName LastName”,“LastName,PreferredName”,“GivenName LastName”等,包括多字姓(带或不带连字符)等变体。
我们当前不太理想的流程拆分单个单词,对顺序做出一些假设(基于是否存在逗号),然后进行几个简单的LDAP查询(例如:对于“John Smith”,它会提交以下查询:
(&(objectclass=person)(sn=*smith*)(preferredName=*john*))
(&(objectclass=person)(givenName=*john*)(sn=*smith*))
然后我们合并并重复删除多个查询的结果。即使查询本身很复杂,单个查询解决方案也会更受欢迎。通过我对LDAP查询语法的基本理解,我可以将名称单词的每个可能的排列组合成一个巨大的查询,但我希望有一个更优雅的解决方案。
答案 0 :(得分:1)
只要所有这些属性都被编入索引,那就没问题。但是你可以将所有这些查询与|结合在一起运营商,那么LDAP服务器将为您重复数据删除,您将获得更少的网络流量,延迟等。