Page 1 of 1
[Solved] Search (Поиск) и tagcloud - облако только из слов на латин&
Posted: Tue Apr 28, 2009 5:55 pm
by ilia3d
Всем доброго дня )
tagcloud почему-то игнорирует кириллицу, таким образом, в облако тэгов попадают только слова на латинице...
Это как-то борется, или он вообще кириллицу не умеет?
Еще вопрос по поиску: {search} принципиально не умеет wildcards а также не до конца введенные слова? У меня ищет только точные вхождения, т.е. если к примеру ввести в поиске "бухгалтер", то такие вхождения как "бухгалтерия", "бухгалтеры" и т.п. не будут найдены. ::)
Re: Search (Поиск) и tagcloud - облако только из слов на латини
Posted: Tue Apr 28, 2009 9:49 pm
by ZYV
Надо в action.dosearch.php
$ary[] = "word = " . $db->qstr($word);
заменить на
$ary[] = "word LIKE '%" . $db->qstr($word) . "%'";
(сам не пробовал)
Для английского работает stemmer, а для русского чтобы куски слов искать надо LIKE использовать.
Про облако тегов ничего не могу сказать - не пользовался.
Re: Search (Поиск) и tagcloud - облако только из слов на латини
Posted: Wed Apr 29, 2009 7:59 am
by ilia3d
ZYV wrote:
Надо в action.dosearch.php
$ary[] = "word = " . $db->qstr($word);
заменить на
$ary[] = "word LIKE '%" . $db->qstr($word) . "%'";
(сам не пробовал)
Для английского работает stemmer, а для русского чтобы куски слов искать надо LIKE использовать.
Про облако тегов ничего не могу сказать - не пользовался.
Попробовал, к сожалению ничего не изменилось.

Re: Search (Поиск) и tagcloud - облако только из слов на латини
Posted: Wed Apr 29, 2009 11:24 am
by ZYV
Хммм, ну надо разбираться, мне некогда. Смотри в phpMyAdmin какие слова в индексе, и возьми запрос из дебаг-режима, который с LIKE получился, проверяй как работает. Идею я подсказал.
Re: Search (Поиск) и tagcloud - облако только из слов на латини
Posted: Sat May 23, 2009 4:40 pm
by ilia3d
ZYV wrote:
Хммм, ну надо разбираться, мне некогда. Смотри в phpMyAdmin какие слова в индексе, и возьми запрос из дебаг-режима, который с LIKE получился, проверяй как работает. Идею я подсказал.
все оказалось намного проще... все глюки с поиском были из-за кодировки 1251.
Переконвертировал базу в UTF8, раскомментил строчку в action.dosearch.php
Code: Select all
$ary[] = "word = " . $db->qstr(htmlentities($word, ENT_COMPAT, 'UTF-8'));
все заработало, спасибо )
Re: [Solved] Search (Поиск) и tagcloud - облако только из слов на лати
Posted: Sat May 23, 2009 4:56 pm
by ZYV
Совершенно не ясно, как это могло решить проблему для частей слов, если qstr() не использует LIKE (нет времени проверять), т.к. mySQL сравнивает при = всё слово целиком, чтобы смотреть вхождение части надо использовать запрос типа LIKE '%вод%' (для воды, проводов и водителя), но факт в том, что однобайтные кодировки должны гореть в аду...
А те, кто ими до сих пор пользуется крупно рискует

Re: [Solved] Search (Поиск) и tagcloud - облако только из слов на лати
Posted: Sat May 23, 2009 6:51 pm
by ilia3d
ZYV wrote:
Совершенно не ясно, как это могло решить проблему для частей слов, если qstr() не использует LIKE (нет времени проверять), т.к. mySQL сравнивает при = всё слово целиком, чтобы смотреть вхождение части надо использовать запрос типа LIKE '%вод%' (для воды, проводов и водителя), но факт в том, что однобайтные кодировки должны гореть в аду...
А те, кто ими до сих пор пользуется крупно рискует
мне тоже совершенно неясно, но работает и по частям слов, я проверял.
Re: [Solved] Search (Поиск) и tagcloud - облако только из слов на лати
Posted: Sat May 23, 2009 8:51 pm
by ZYV
Я тебе верю, просто удивительно. Эх, пройдут наконец когда-нибудь эти авралы или нет... интересно в исходниках посмотреть почему-так.