>>>испытываю стойкую неприязнь к openldap 2.3 и выше за отсутствие регистронезависимого поиска
>>>в utf-8
>>>
>>
>>а как интересно это выражается? у меня openldap_2.3.30 и всё прекрасно ищется
>>регистронезависимо
>
>
>фильтр "(sn=пупкин)" не находит атрибут 'sn: Пупкин'
>пробовал Net::LDAP, php_ldap, ldapsearch, jxplorer,java ldap browser, латиницу ищет прекрасно, utf-8 не
>хочет категорически. Чётровы латиняне :(...
>
>путём скачки и перебора версий, я определил что такое поведение появилось после
>версии 2.2.30, то есть во всей ветке 2.3.х
>гугль говорит, что такая поблема была до версии 2.0 гугль цитирует похожих на вас :)
Старая тема, но просматривая закладки вернулся на неё:
Уж не знаю что и как вы делали, но повторюсь, регистронезависимый поиск в _любой_ кодировке работает в openldap_2.3.x
чтобы не быть голословным вот вам пример:
$ slapd -V
@(#) $OpenLDAP: slapd 2.3.30 (Dec 12 2006 22:14:39) $
быстренько катаем скриптик
#!/usr/bin/perl -w
use strict;
use Net::LDAP;
use Text::Iconv;
use MIME::Base64;
my $satrr=$ARGV[0];
my $converter = Text::Iconv->new('KOI8-R', 'UTF-8');
my $converted = $converter->convert($satrr);
my $entry;my $mesg;
my $ctr = Text::Iconv->new('UTF-8','KOI8-R');
my $ldap = Net::LDAP->new( '10.16.0.2' );
my $attrs = [ 'sn','uid' ];
$mesg = $ldap->bind( 'bla-bla');
$mesg = $ldap->search(base => 'bla2-bla2', scope => 'sub',
filter => "(&($converted)(objectclass=inetOrgPerson))", attrs => $attrs );
my $href = $mesg->as_struct; my @arrayOfDNs = keys %$href;
foreach ( @arrayOfDNs ) {
my $attrName; my $valref = $$href{$_}; my @arrayOfAttrs = sort keys %$valref;
foreach $attrName (@arrayOfAttrs) {
next if ( $attrName =~ /;binary$/ );
my $attrVal = @$valref{$attrName}; my $list=join(" ",@$attrVal);
print $ctr->convert($list)," ";} print "\n";}
$mesg = $ldap->unbind;
заранее извиняюсь за тупой код, делал второпях как пример
ну и проверяем поиск:
$ ./test.pl sn=ряб*
Рябинин ryabinin.vl
Рябцева ryabceva.uk
$ ./test.pl sn=Ряб*
Рябинин ryabinin.vl
Рябцева ryabceva.uk
Как видите, всё работает. Кстати весь софт что мне попадался, преспокойно работает с регистронезависимым поиском в openldap_2.3
>кто-то на opennet.ru в августе с восторженными визгами писал что наконец-то реализовали
> server side search и советовал копать в индексы, версию бдб
ваш тон нопоминает мне студента :) ну я радовался, но копать индексы и версии баз, упаси боже, нет советовал. всё намного тривиальнее, sss делается без вас по элементарному запросу :)
>я ничего вразумительного не нашел и откатился на последний 2.2.х, на нём
>и живу пока.
>не буду же я переписывать свою адресную книгу на фильтры типа "(|(sn=Пупкин)(sn=пупкин))",
>имо это всё равно что в гугле указывать регистр при запросе.
>:-/