Hello,

[First of all, sorry if this question has already been answered before: the search on this mailing list does not work currently so I haven't been able to check.]

I need to write a filter so that when the user of my software introduces any substring of the content of a field in any case (upper, lower or mixed case), it finds the entry. It must work even if the user does not input a complete word, but just a part of a word.

The field is called "supName" and it follows the DirectoryString syntax. This means that the default matching rule is exact and case sensitive ("caseExactMatch"). But according to:
http://www.zytrax.com/books/ldap/apa/types.html
, this syntax should allow also "caseIgnoreMatch" and "caseIgnoreSubstringsMatch" matching rules. I though I just needed to force to use the last one ("caseIgnoreSubstringsMatch"), so I tried this filter:

(supName:caseIgnoreSubstringsMatch:=*somesubstring*)

But this does not work. I make my tests using Apache Directory Studio, and that tool refuses to accept the above filter. It complains on the asterisks, and I don't understand why, since I am using a Substring match (and thus asterisks should be allowed). If I run the filter from command line (using ldapsearch), I get this error message:

ldap_search_ext: Bad search filter (-7)

Therefore this is not an issue with Apache Directory Studio.

So my question is: What is the correct way of defining a case-insensitive substring filter on a field that is case-sensitive by default?

Yesterday I filled a question in StackOverflow regarding this same issue. There are more details and examples in that question:
http://stackoverflow.com/questions/25290494/case-insensitive-substring-ldap-search-on-openldap-2-4-33

Any help would be greatly appreciated !

Thank you very much.

Nicolas