Menu
Авторизация:
Зарегистрироваться.
русский в поиске
Пользователь: Alexander
Дата: 24-октября-2006 4:20 pm
Просмотров: 114895
Оценка: -2    Оценить [
|
]

Добрый день.

Случилось так что я обновил всё таки сайт с версии 6.8.7 до версии 7.0.9 .

Решил воспользоваться поиском, сделал индексацию сайта.

Но при поиске в строке запроса если ввести русскоязычные буквы - ничего не находит. По английски всё показывает.

Кто нибудь сталкивался с такими проблемами. Я даже попробовал на сайте plainblack в демо версии устроить такой поиск (после commit changes) по английски ищет, по русски нет.

Может где то скрипты надо править? 

--- (Отредактировано 24-October-2006 4:20 pm [GMT+0300] Написал(а) Visitor) ---

Re: русский в поиске
Пользователь: Admin
Дата: 24-октября-2006 5:45 pm
Просмотров: 6991
Оценка: 2    Оценить [
|
]

Да, заметил.

Это проявилось не так давно. Первые из 7.0.* версий индексировали и искали нормально. У меня не было времени более вдумчиво посмотреть, в чём именно дело, но при беглом осмотре моя версия такова:

Как я помню, летом на техническом форуме был диалог о том, что в китайском языке неправильно индексируется и не работает поиск. Подправили. В китайском стало искать, по перестало в русском... (я тоже совсем недавно это заметил) Как я понял, он неправильно индексирует. Если смотреть результат индексации в базе данных, то английские слова встречаются целиком, а русские - все разбиты на отдельные буквы. То есть индекс не содержит ни одного целого русского слова, следовательно, ни одного слова и не находит.

Можно попробовать закомментировать правки для китайского (они там выделены комментариями в двух файлах, задействованных при процессе индексации) и посмотреть результат. Если у Вас есть возможность это сделать - попробуйте поекспериментировать. Насколько я понял - именно благодаря этим правкам оно дробит все неанглийские слова на отдельные буквы.


С уважением,
Владимир Витковский 

Пожалуйста, все вопросы и пожелания оставляйте на форуме, а не направляйте прямиком мне на E-mail

--- (Отредактировано 24-October-2006 17:45 [GMT+0300] Написал(а) Admin) ---

Re: русский в поиске
Пользователь: Alexander
Дата: 24-октября-2006 5:56 pm
Просмотров: 7540
Оценка: -1    Оценить [
|
]

Спасибо за подсказу - всё правильно.

необходимо закоментировать строки в 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) ---

Re: русский в поиске
Пользователь: Admin
Дата: 24-октября-2006 6:01 pm
Просмотров: 7140
Оценка: 1    Оценить [
|
]

Спасибо и Вам, за то, что проверили. Очень быстро проверили.


С уважением,
Владимир Витковский 

Пожалуйста, все вопросы и пожелания оставляйте на форуме, а не направляйте прямиком мне на E-mail

--- (Отредактировано 24-October-2006 18:01 [GMT+0300] Написал(а) Admin) ---

Re: русский в поиске
Пользователь: web_def
Дата: 24-декабря-2006 8:46 pm
Просмотров: 7679
Оценка: 2    Оценить [
|
]

Приветствую всех.

Несмотря на все вышеописанные манипуляции, в версии 7.3.2, поиск на русском не работает. 

--- (Отредактировано 24-December-2006 21:46:32 [GMT+0300] Написал(а) web_def) ---

Re: русский в поиске
Пользователь: Admin
Дата: 25-декабря-2006 2:18 am
Просмотров: 11260
Оценка: 1    Оценить [
|
]

После всех манипуляций необходимо заново переиндексировать содержимое всех сайтов.
(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) ---

Re: русский в поиске
Пользователь: web_def
Дата: 25-декабря-2006 3:35 pm
Просмотров: 11091
Оценка: 1    Оценить [
|
]

Добрый день,

если таблица индексов - assetIndex - то все нормально, если search и/или multisearch - то они пустые.

Все равно, английские слова находит, русские - нет.

Да, действительно, после удаления "китайской" приблуды, была проведена переиндексация, но результат нулевой...  

--- (Отредактировано 25-December-2006 16:35:04 [GMT+0300] Написал(а) web_def) ---

Re: русский в поиске
Пользователь: Admin
Дата: 28-марта-2007 4:52 pm
Просмотров: 11994
Оценка: -1    Оценить [
|
]

Необходимо редактировать следующие файлы:

/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) ---

Re: русский в поиске
Пользователь: hardservice
Дата: 11-июля-2007 6:50 pm
Просмотров: 11384
Оценка: 1    Оценить [
|
]
сделал все как Вы сказали. Результат нулевой. английское ищит, а русское - нема. Если поиск делаешь по английским словам, то если в статье был русский текст - отображается вопросами.

P.S. WebGUI - 7.3.17

 

--- (Отредактировано 7/11/2007 6:55 pm [GMT+0300] Написал(а) hardservice) ---

Re: русский в поиске
Пользователь: hardservice
Дата: 11-июля-2007 7:12 pm
Просмотров: 10120
Оценка: 1    Оценить [
|
]

в таблице assetIndex все русское отображается вопросами. если таблицу очистить, то после последующей индыксикации - снова вопросы за место кирилицы

Я так понял, если в базе тоже вопросы за место русского, то проблема кроется в файле /data/WebGUI/lib/WebGUI/SQL.pm

Замена этого файла с версии 6.99.0 решила полностью проблему с поиском

--- (Отредактировано 7/11/2007 7:39 pm [GMT+0300] Написал(а) hardservice) ---

© 2004-2024 WebGUI на русском. | Powered by WebGUI
& use Foundation framework | Расположен на WebGUI hosting