给定来自自由格式搜索字段的输入,我需要查询LDAP系统并返回用户记录。我们的LDAP schema包含一个"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查询语法的基本理解,我可以将名称词的每个可能排列组合成一个巨大的查询,但我希望有一种更优雅的解决方案。
发布于 2010-10-11 13:49:08
只要所有这些属性都建立了索引,就可以了。但是您可以使用|操作符将所有这些查询合并为一个查询,然后LDAP服务器将为您删除重复数据,您将拥有更少的网络流量、延迟等。
https://stackoverflow.com/questions/3893327
复制相似问题