我使用的LDAP Active Directory分别存储名字和姓氏,并且还具有用于存储首选名称的首选名称。
说我们有两个同名的人:Atom Electron
两个都有
firstname=Atom
lastname=Electron
但是他们每个人都设置了不同的首选名称:
preferedname=Atomic Electron
(user_id = 12)
preferedname=Atom Electron
(user_id = 13)
我当前的LDAP过滤器:
q = "query string"
filter_preferredname_match_q = q.split(' ').map { |w| Net::LDAP::Filter.eq('preferredname', "*#{w}*") }.inject(:&)
filter_firstname_match_q = q.split(' ').map { |w| Net::LDAP::Filter.eq('firstname', "*#{w}*") }.inject(:&)
filter_lastname_match_q = q.split(' ').map { |w| Net::LDAP::Filter.eq('lastname', "*#{w}*") }.inject(:&)
filter = filter_emplid_present & (
filter_preferredname_match_q |
filter_firstname_match_q |
filter_lastname_match_q
)
但这不能正常工作:如果用户搜索Atomic Electron
,它将仅显示一个结果,但我希望它同时显示用户12和13
如何让ldap在LDAP Active Directory数据库中首先连接名字和姓氏,然后让我查询结果字符串?
谢谢!