Устанавливаю drupal 4.5 на win 2000 (так начальник требует) использую сервер apache 1.3.31, mysql 3.23.
3. Включил search. Запустил cron.php. Обнаружил что английские слова ищет, а русские нет.
Подскажите, что поправить чтобы заработал поиск?
Начал разбираться, обнаружил что drupal работает в кодировке UTF8 а MySQL хранит по умолчанию данные ISO-8859-1 (Latin1) В настройках MySQL нашел переменную --default-character-set, но среди ее значений нашел cp1251, koi8_ru, win1251, а UTF8 нет. Что проще сделать: перевести сайт на koi8-ru, win1251 или MYSQL на UTF8?
Комментарии
Странно все это... у меня нормально работает поиск, без нареканий.
Правда под FreeBSD
MySQL умеет хранить UTF8 только с 4ой версии. Но это в данном случае не имеет значения, поскольку поиск в Drupal реализуется исключительно средствами PHP, ему все равно в каком виде это лежит в базе. Кодировка БД не важна. Если не ищет русских слов - это скорее связано с настройками PHP. Вообще, по умолчанию - на русском или других языках ищется, но с некоторыми ограничениями. Скажем всегда различается регистр букв. Несколько улучшить поиск можно включением mbstring в PHP. См. темы на drupal.ru где упоминается mbstring.
--
Axel
search module из CVS сильно переработан на предмет поддержки UTF-8. Кто-нибудь пробовал? Фича помечена как законченная, так что можно дерзать. Имхо лучше брать одну из текущих или ранних версий, потому что потом это может стать несовместимым с 4.5. А может, и бэкпорт сделают?
Поставил php 4.3.9 и mysql 4.1.x. Настроил кодировку UTF-8. php ругается что вкомпилированный клиент для версии 3.х MYSQL.
Где мне взять dll файлы для 4.x клиента?
К сожалению я использую винду.
Забыл добавить, что система выдает следующее
"Client does not support authentication protocol requested by server; consider upgrading MySQL client"
Покопался www.mysql.com там есть рекомендация использовать при запуске mysql опцию "--old-passwords"
Но это не помогло.
Подскажите какую версию php+mysql лучше использовать под винду?
P.S. Ранее пробовал MySQL 3.x проблемы были с поиском. Поставил Mysql 4.1 только из за поддержки UTF8. Теперь оказывается, что php 4.3.9 под винду имеет вкомпилированый клиент mysql версии 3.х
База осталась старой от 3 версии?
Заново создать пользователей mysql и задать привилегии на базы.
Или, это делалось как-то вроде UPDATE mysql.user и потом FLUSH PRIVILEGES, надо просто скормить полный текст ошибки googl'у.
Дейсвовать в стандартном windows-way: все снести под ноль и заново поставить.
Ставил foxserver и Denver c последующим апгрейдом поверху apache/mysql/php-4.3.2, приходилось слегка править конфиги, кое-что все равно не работало, но такой проблемы не припомню.
Для винды лучше найти какой-нибудь готовый собранный комплекс из apache/php/mysql последних версий. Были хорошие вещи, типа вышеуказанных foxserver и denver, но какие там сейчас версии и не заброшены ли проекты - не знаю. Но этого добра вроде полно было.
Если честно: drupal на apache под win - это была последняя капля, заставившая меня окончательно перейти на нормальную OS :-D.
trip_search чем хуже?
Точнее ее отсутствием. Насколько понимаю он ничего не индексирует, просто использует like, а это всегда практически полный скан по таблице.
Уверен, на больших базах это сдохнет.
--
Axel
как определить большая ли база? (1700 нодов - большая? из которых 800 требуемых к индексации, остальное хлам и картинки)
Так и не получилось в свое время заставить работать поиск под win, но и особой надобности не было.
Подозреваю, виной были мои кривые руки и другие названия локалей в win, стоит поискать названия локалей и выставить их (не знаю, где).
Пробелма, конечно, решилась форматированием NTFS под ext3...
Надо смотреть напрямую таблицу индексов поиска, какая там кодировка. Если там utf-8, но в словах пропущены буквы (чаще всего "л") - то mbstring в помощь, если каша - разбираться с кодировками.
А так, конечно - если нагрузка небольшая, лучше поставить tripsearch и не мучиться.
Поиск под win всетаки заработал. Используется apache 1.3.
php 4.3.9 mysql 3.23.58. Кодировка в Mysql стоит по умолчанию = latin1 (это где то должно выйти боком, наверно при сортировке по алфавиту.)
У меня тоже не работал русский поиск, посмотрел табличку search_index, а там русских слов вообще нет, но много пустых слов. Вообще с русским косяк. Начал в zend studio дебагить cron.php и search_cron (файл search.module) и обнаружил, что строки портятся функцией strtolower. Взял да поменял везде (2 места) strtolower на mb_strtolower(..., 'UTF-8') и все заработало, в том числе поиск без учета регистра(!)
Я поправил в search.module strtolower на mb_strtolower(…, ‘UTF-8’), в 4-х местах (везде где нашел), но поиск все равно результатов не дает. Может быть сразу это работать и не должно, а cron должен что-то выполнить?
P.S. Ага, таки нужно было 3 раза дернуть cron и 100% контента проиндексировано.. Поиск заработал, ура!!
а вот у меня на двух разных сайтах не ищет вообще ничего... ни на русском ни на eng
вообще не пойму от чего это... помогите чайничку, где копать?
версия установлена последняя 5.6
индексация + cron.php
Приветсвую, почему то у меня не проходит индексация, нажимаю, никаких ошибок не пишет, а как было N страниц готовых к индексации так они и остаются! Помогите настроить, может код подправить надо? друпал стоит 5.7
ничего правит не надо. у тебя MySQL в какой кодировке хранит ? UTF8? если нет , исправь на UTF8