Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Поиск в многоязычном тексте без учёта регистра
 
 автор: Iz_naroda   (19.05.2006 в 16:22)   письмо автору
 
 

Нужно произвести поиск в базе по словам при этом 1)на различных языках и 2)без учета регистра слов.

Применил следующий запрос:
'SELECT * FROM 'word_tbl' WHERE BINARY LOWER('word')=LOWER("'.$word.'")'
(написана на пхп, $word - переменная, слово которое ищется)

Она годиться для слов на латинском, но если поискать на русском, то все испортит LOWER(). Эта мускуловская ф-я зависит от настроек БД и по умолчанию кодировка там для латинских(если я правильно понял). А мне надо независимость от каких-либо настроечек.

Заранее благодарен за помощь

   
 
 автор: cheops   (19.05.2006 в 22:41)   письмо автору
 
   для: Iz_naroda   (19.05.2006 в 16:22)
 

Вообще поиск
SELECT * FROM word_tbl WHERE word LIKE '.$word.'

должен обеспечивать регистронезависимый поиск, если выбрана соответствующая сортировка. У вас сколько и какие языки? Какая версия MySQL используется?

   
 
 автор: Iz_naroda   (20.05.2006 в 08:28)   письмо автору
 
   для: cheops   (19.05.2006 в 22:41)
 

Версия Mysl 4.020 и выше.
Покапался в форумах, но все равно вопросы остались:
1) Если я установлю кодировку для базы utf-8, то тогда все запашет для любых языков и без учета регистра. То есть как я хотел. Но на хостере есть и другие сайты и вряд ли мне разрешат изменить кодировку, ведь, как я понимаю, изменение кодировки для меня означает изменить его и для других пользователей хостинга. Так ли это?
Что в этом случае делать?

   
 
 автор: Iz_naroda   (20.05.2006 в 08:49)   письмо автору
 
   для: cheops   (19.05.2006 в 22:41)
 

2) 2) Еше я нашел, что можно установить кодировку для данного соединения клиента к сайту. SET NAMES utf8. Незнаю, будут ли при этом выполняться выше перечисленные мои условия, проверить не могу - выдает ошибку -
Unknown system variable 'NAMES'

Версия Мускула 4.020. Может нужна другая версия, если да то какая? И будут ли выполняться условия?

   
 
 автор: cheops   (20.05.2006 в 12:19)   письмо автору
 
   для: Iz_naroda   (20.05.2006 в 08:49)
 

Новая система кодировок и оператор SET NAMES введены в MySQL, начиная с версии MySQL 4.1.

   
 
 автор: elenaki   (20.05.2006 в 19:04)   письмо автору
 
   для: cheops   (20.05.2006 в 12:19)
 

а условие WHERE MATCH(... поле ...) AGAINST('слово') не спасает? это полнотекстовый поиск, для этого у поля должен стоять индекс FULLTEXT. я только им и ищу во многоязычных таблицах. на utf-8 очень не хочется переходить.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования