LDAP:搜索子字符串并根据普通ascii匹配特殊字符

LDAP:搜索子字符串并根据普通ascii匹配特殊字符,ldap,openldap,ldap-query,Ldap,Openldap,Ldap Query,我的设想是,我有一个搜索功能,您可以使用它过滤用户条目。用户传递一个搜索字符串,它将显示匹配的条目 创建的过滤器是 (displayname=*$SEARCH*) 用户输入$SEARCH 到目前为止,这是可行的。但是现在,用户正在输入sud(扩展到*sud*),并希望找到显示名为“asüdf”的条目。这适用于Active Directory,但不适用于OpenLDAP(未尝试其他服务器) LDAP有一个接近运算符~=。但是,它不接受通配符,即不可能进行子字符串搜索 是否有一种通用的方法以及如何在

我的设想是,我有一个搜索功能,您可以使用它过滤用户条目。用户传递一个搜索字符串,它将显示匹配的条目

创建的过滤器是

(displayname=*$SEARCH*)

用户输入$SEARCH

到目前为止,这是可行的。但是现在,用户正在输入
sud
(扩展到
*sud*
),并希望找到显示名为“asüdf”的条目。这适用于Active Directory,但不适用于OpenLDAP(未尝试其他服务器)

LDAP有一个接近运算符~=。但是,它不接受通配符,即不可能进行子字符串搜索


是否有一种通用的方法以及如何在客户端的LDAP上实现它?或者LDAP服务器是否需要额外配置(也是通用的还是特定于供应商的?

如果您计划进行近似匹配或听起来像(=~)匹配,则需要在目录服务器上为您正在搜索的属性创建一个听起来像索引

如果要对属性执行子字符串搜索,这类似于添加子字符串索引


此外,它可能与您的目的不完全匹配,因为它的语音会因语言而异。

不要提供这样的设施。前导通配符意味着顺序搜索。@EJP当需要搜索时,您建议怎么做?无论索引是否存在,邻近运算符(即听起来像搜索)都不适用于通配符。那是我的问题。