romutis
Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Резюмируя всё вышесказанное: Основная "фишка" поиска слов в phpBB: не производится полнотекстовый поиск по таблице сообщений (что есть долго и тормозно), но производится поиск, с использованием двух специальных таблиц: Wordlist и Wordmatch, куда при добавлении сообщения в форум, заносятся не только слова, но и словоформы. Пример: Есть с сообщении слово "автобус" - занесутся в таблицы: авто, автоб, автобу, автобус. Потом при поиске по словоформе "автоб" - phpBB быстренько найдет нужную словоформу и покажет сообщение, в котором эта словоформа встречается. Русский язык в phpBB2 имеет кодировку Win1251. Если MySQL запущен с characterset, отличным от CP1251 - поиск по словоформам, с использованием таблиц Wordlist и Wordmatch будет невозможен, phpBB не сумеет разбить слово в непонятной кодировке на словоформы. Т.е. если искать слово "автобус" - то phpBB найдет быстро это слово, но не найдет словоформы или это же слово, но в другом регистре букв. Варианты лечения: попросить хостера прописать в файл /etc/my.cnf такую строчку (раздел [mysqld]): Код: default-character-set = cp1251 | Промежуточный вариант a-la vBulletin (работающий на маленьких по размеру форумах): объявить charset win1251 как multibyte Код: $multibyte_charset = 'windows-1251, utf-8, big5, shift_jis, euc-kr, gb2312'; | Для многобайтовых чарсетов phpBB не использует поиск по таблицам Wordlist и Wordmatch - ищет сразу по таблице сообщений. Очень медленный вариант, с большой нагрузкой на базу - но, порой, единственный вариант при наличии тупого или ленивого хостера. P.S. Если вы переделали кодировку базы на CP1251 - вам нужно пересобрать таблицы WordList и Wordmatch, чтобы уже существующие сообщения тоже попадали в поиск. Есть маленький скрипт для этого - available upon request.
---------- In America, honey, our names don't mean sh*t... |
|