什么是按名称搜索用户的最佳LDAP查询?

什么是按名称搜索用户的最佳LDAP查询?,ldap,Ldap,给定来自自由形式搜索字段的输入,我需要查询LDAP系统并返回用户记录。我们的LDAP模式包含一个“preferredName”。可能的有效输入包括:“LastName”、“GivenName”、“PreferredName LastName”、“LastName、PreferredName”、“GivenName LastName”等,包括多个单词姓氏(带或不带连字符)等变体 我们当前的非最佳流程将单个单词拆分,对顺序进行一些假设(基于是否存在逗号),然后进行几个简单的LDAP查询(例如:对于“

给定来自自由形式搜索字段的输入,我需要查询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查询语法的基本理解,我可以将所有可能的名称词排列组合成一个巨大的查询,但我希望有一个更优雅的查询解决方案。

只要所有这些属性都被索引就可以了。但是,您可以使用|操作符将所有这些查询合并为一个查询,然后LDAP服务器将为您消除重复,这样您的网络流量、延迟等就会大大减少