Добрый день.
Случилось так что я обновил всё таки сайт с версии 6.8.7 до версии 7.0.9 .
Решил воспользоваться поиском, сделал индексацию сайта.
Но при поиске в строке запроса если ввести русскоязычные буквы - ничего не находит. По английски всё показывает.
Кто нибудь сталкивался с такими проблемами. Я даже попробовал на сайте plainblack в демо версии устроить такой поиск (после commit changes) по английски ищет, по русски нет.
Может где то скрипты надо править?
--- (Отредактировано 24-October-2006 4:20 pm [GMT+0300] Написал(а) Visitor) ---
Да, заметил.
Это проявилось не так давно. Первые из 7.0.* версий индексировали и искали нормально. У меня не было времени более вдумчиво посмотреть, в чём именно дело, но при беглом осмотре моя версия такова:
Как я помню, летом на техническом форуме был диалог о том, что в китайском языке неправильно индексируется и не работает поиск. Подправили. В китайском стало искать, по перестало в русском... (я тоже совсем недавно это заметил) Как я понял, он неправильно индексирует. Если смотреть результат индексации в базе данных, то английские слова встречаются целиком, а русские - все разбиты на отдельные буквы. То есть индекс не содержит ни одного целого русского слова, следовательно, ни одного слова и не находит.
Можно попробовать закомментировать правки для китайского (они там выделены комментариями в двух файлах, задействованных при процессе индексации) и посмотреть результат. Если у Вас есть возможность это сделать - попробуйте поекспериментировать. Насколько я понял - именно благодаря этим правкам оно дробит все неанглийские слова на отдельные буквы.
С уважением,
Владимир Витковский
Пожалуйста, все вопросы и пожелания оставляйте на форуме, а не направляйте прямиком мне на E-mail
--- (Отредактировано 24-October-2006 17:45 [GMT+0300] Написал(а) Admin) ---
Спасибо за подсказу - всё правильно.
необходимо закоментировать строки в Webgui/lib/search/index.pm
#-------------------- added by zxp for chinese word segment
# utf8::decode($text);
# my @segs = split /([A-z|\d]+|\S)/, $text;
# $text = join " ",@segs;
# $text =~ s/\s{2,}/ /g;
# $text =~ s/(^\s|\s$)//g;
# $text =~ s/\s/\'\'/g;
#-------------------- added by zxp end
И тоже самое в Webgui/lib/search.pm
Потом /data/Webgui/sbin/perl search.pl --indexall и всё работает.
--- (Отредактировано 24-October-2006 5:56 pm [GMT+0300] Написал(а) Visitor) ---
Спасибо и Вам, за то, что проверили. Очень быстро проверили.
С уважением,
Владимир Витковский
Пожалуйста, все вопросы и пожелания оставляйте на форуме, а не направляйте прямиком мне на E-mail
--- (Отредактировано 24-October-2006 18:01 [GMT+0300] Написал(а) Admin) ---
Приветствую всех.
Несмотря на все вышеописанные манипуляции, в версии 7.3.2, поиск на русском не работает.
--- (Отредактировано 24-December-2006 21:46:32 [GMT+0300] Написал(а) web_def) ---
После всех манипуляций необходимо заново переиндексировать содержимое всех сайтов.
(perl index.pl --indexall)
Для проверки того, что всё нормально - посмотрите таблицу индексирования, там должны быть нормальные слова на русском языке.
Кроме того, для верности, в файле /data/WebGUI/lib/WebGUI/SQL.pm после строчки (строка 318):
my $dbh = DBI->connect($dsn,$user,$pass,{RaiseError=>0,AutoCommit=>1 });
желательно поставить:
if ( $dsn =~ /mysql/ ) { # Set MySQL specific attributes
$dbh->do("SET character_set_client = utf8");
$dbh->do("SET character_set_connection = utf8");
$dbh->do("SET character_set_results = utf8");
}
Пожалуйста, все вопросы и пожелания оставляйте на форуме, а не направляйте прямиком мне на E-mail
--- (Отредактировано 25-December-2006 02:18 [GMT+0200] Написал(а) Admin) ---
Добрый день,
если таблица индексов - assetIndex - то все нормально, если search и/или multisearch - то они пустые.
Все равно, английские слова находит, русские - нет.
Да, действительно, после удаления "китайской" приблуды, была проведена переиндексация, но результат нулевой...
--- (Отредактировано 25-December-2006 16:35:04 [GMT+0300] Написал(а) web_def) ---
Необходимо редактировать следующие файлы:
/data/WebGUI/lib/WebGUI/Search.pm
СТРОКА 330
#-------------- Edited by zxp for Chinese Word Segment
# utf8::decode($terms[$i]);
# my @segs = split /([A-z|\d]+|\S)/, $terms[$i];
# $terms[$i] = join " ",@segs;
# $terms[$i] =~ s/\s{2,}/ /g;
# $terms[$i] =~ s/(^\s|\s$)//g;
# $terms[$i] =~ s/\s/\'\'/g;
# if($terms[$i] =~ m/\'/) { # has non-latin latter in terms
# $terms[$i] = '"' . $terms[$i] . '"';
# }
#-------------- Edited by zxp end
/data/WebGUI/lib/WebGUI/Search/Index.pm
СТРОКА 78
#-------------------- added by zxp for chinese word segment
# utf8::decode($text);
# my @segs = split /([A-z|\d]+|\S)/, $text;
# $text = join " ",@segs;
# $text =~ s/\s{2,}/ /g;
# $text =~ s/(^\s|\s$)//g;
# $text =~ s/\s/\'\'/g;
#-------------------- added by zxp end
СТРОКА 124
#-------------------- added by zxp for chinese word segment
# utf8::decode($keywords);
# my @segs = split /([A-z|\d]+|\S)/, $keywords;
# $keywords = join " ",@segs;
# $keywords =~ s/\s{2,}/ /g;
# $keywords =~ s/(^\s|\s$)//g;
# $keywords =~ s/\s/\'\'/g;
#-------------------- added by zxp end
Кроме того, попробуйте добавить в файл
/data/WebGUI/lib/WebGUI/SQL.pm
СТРОКА 320
if ( $dsn =~ /mysql/ ) { # Set MySQL specific attributes
$dbh->do("SET NAMES utf8");
}
Если после такого жёсткого задания кодировки у вас на сайте вместо нормального текста появились закарючки - значит до сих пор у вас было двойное перекодирование.
В таком случае пишите - опишу, как поступить в данной ситуации.
Пожалуйста, все вопросы и пожелания оставляйте на форуме, а не направляйте прямиком мне на E-mail
--- (Отредактировано 28-March-2007 16:52 [GMT+0300] Написал(а) Admin) ---
P.S. WebGUI - 7.3.17
--- (Отредактировано 7/11/2007 6:55 pm [GMT+0300] Написал(а) hardservice) ---
в таблице assetIndex все русское отображается вопросами. если таблицу очистить, то после последующей индыксикации - снова вопросы за место кирилицы
Я так понял, если в базе тоже вопросы за место русского, то проблема кроется в файле /data/WebGUI/lib/WebGUI/SQL.pm
Замена этого файла с версии 6.99.0 решила полностью проблему с поиском
--- (Отредактировано 7/11/2007 7:39 pm [GMT+0300] Написал(а) hardservice) ---