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

Форум MySQL

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

 

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

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

тема: Глюк? MySQL 4.0.25-nt
 
 автор: Ziq   (13.03.2006 в 19:27)   письмо автору
 
 

Есть таблица со словарем Даля.
Структура
id | slovo | description

id - primary key
slovo - слово
description - описание

Всего слов около 44000 слов.

Ошибка возникает при запросе
SELECT * FROM s_dal WHERE slovo = 'папа' LIMIT 0 , 30
он выводит результат

id slovo description
15509 Мама ж. маменька, мамонька, -мочка, матушка, родитель...
15524 Мана см. манить.
24478 Папа м. греч. отец, произн. с франц. Папа; папенька, па...

Из-за чего возникла такая проблема? Как с ней бороться?

Заранее ОГРОМНОЕ спасибо!

   
 
 автор: elenaki   (13.03.2006 в 19:37)   письмо автору
 
   для: Ziq   (13.03.2006 в 19:27)
 

а если воспользоваться полнотекстовым поиском?
SELECT * FROM s_dal WHERE MATCH (slovo) AGAINST ("папа") LIMIT 0 , 30


поле slovo должно быть индексом fulltext

   
 
 автор: Ziq   (13.03.2006 в 19:40)   письмо автору
 
   для: elenaki   (13.03.2006 в 19:37)
 

Еще хуже

15509 Мама ж. маменька, мамонька, -мочка, матушка, родитель...
15524 Мана см. манить.
17904 Наначни нареч. пск. твер. напочин, напочине, в начале, спо...
24478 Папа м. греч. отец, произн. с франц. Папа; папенька, па...
17760 Намачивать намочить и пр. см. намакивать.
18044 Напачкать где чем, намарать, намазать, нагадить, нагрязни...
20911 Обмачивать обмочить что, мочить кругом, или во многих ...
20912 Обмачтовывать обмачовать судно, поставить в него мачты и укре...
21002 Обначаловать что, арх. почать, слелать по(за, на)чин, положить...

   
 
 автор: Trianon   (13.03.2006 в 19:44)   письмо автору
 
   для: Ziq   (13.03.2006 в 19:40)
 

Перестроить индекс не пробовали?

   
 
 автор: Ziq   (13.03.2006 в 19:49)   письмо автору
 
   для: Trianon   (13.03.2006 в 19:44)
 

Как это сделать?

   
 
 автор: cheops   (13.03.2006 в 20:11)   письмо автору
 
   для: Ziq   (13.03.2006 в 19:49)
 

Уничтожить индекс и создать по новой, а лучше воспользоваться оператором REPAIR TABLE.

   
 
 автор: Ziq   (13.03.2006 в 20:20)   письмо автору
 
   для: cheops   (13.03.2006 в 20:11)
 

Не помогает.

   
 
 автор: elenaki   (13.03.2006 в 20:26)   письмо автору
 
   для: Ziq   (13.03.2006 в 20:20)
 

а какое-нибудь другое слово?
:)
кодировка какая у базы?
сортировку русских слов нормально делает?

   
 
 автор: Ziq   (13.03.2006 в 20:28)   письмо автору
 
   для: elenaki   (13.03.2006 в 20:26)
 

Кодировки нет это 4-ая версия
Остальные слова тоже с ошибками. Я вводил нам он находит вам или что-то в этом роде.

   
 
 автор: elenaki   (13.03.2006 в 20:33)   письмо автору
 
   для: Ziq   (13.03.2006 в 20:28)
 

как это нет кодировки? у меня 3-я и есть. у всех баз есть какая-то кодировка, с которой их установили...

   
 
 автор: Ziq   (13.03.2006 в 20:42)   письмо автору
 
   для: elenaki   (13.03.2006 в 20:33)
 

По-моему какая-то latin, но как ее посмотреть не знаю.

   
 
 автор: elenaki   (13.03.2006 в 20:59)   письмо автору
 
   для: Ziq   (13.03.2006 в 20:42)
 

выполните это код (файл info.php)

<?
phpinfo
();
?>

и ищите раздел MySQL

   
 
 автор: Ziq   (13.03.2006 в 21:15)   письмо автору
 
   для: elenaki   (13.03.2006 в 20:59)
 

Вот все настройки

mysql
MySQL Support enabled
Active Persistent Links 0
Active Links 0
Client API version 3.23.57

Directive Local Value Master Value
mysql.allow_persistent On On
mysql.connect_timeout 60 60
mysql.default_host no value no value
mysql.default_password no value no value
mysql.default_port no value no value
mysql.default_socket no value no value
mysql.default_user no value no value
mysql.max_links Unlimited Unlimited
mysql.max_persistent Unlimited Unlimited
mysql.trace_mode Off Off

   
 
 автор: elenaki   (13.03.2006 в 21:49)   письмо автору
 
   для: Ziq   (13.03.2006 в 21:15)
 

создала подобную таблицу, внесла несколько значений на русском, по поиску на самом деле находит совершенно не то, что ищется... причем и по строгому соответствию и по LIKE и по Match against. :(
загадка природы. есть подозрение, что с кодировкой latin вам не удастся корректно извлечь данные на русском языке.

   
 
 автор: Ziq   (13.03.2006 в 21:57)   письмо автору
 
   для: elenaki   (13.03.2006 в 21:49)
 

А если на хостинге такие проблемы возникнут, то что можно будет сделать?

   
 
 автор: elenaki   (13.03.2006 в 21:59)   письмо автору
 
   для: Ziq   (13.03.2006 в 21:57)
 

можно как-то менять кодировку на лету перед исполнением запроса... у меня это никогда не получалось :(

   
 
 автор: Ziq   (13.03.2006 в 22:27)   письмо автору
 
   для: elenaki   (13.03.2006 в 21:59)
 

Спасибо тебе, elenaki.

Святила форума, может Вы что посоветуете?

   
 
 автор: elenaki   (14.03.2006 в 09:30)   письмо автору
 
   для: Ziq   (13.03.2006 в 22:27)
 

вот, что oтвечали свЕтила форума раньше:


Возможно, не установлены параметры кодировки для соединения с БД.
  mysql_query ("set character_set_client='cp1251'"); 
  mysql_query ("set character_set_results='cp1251'"); 
  mysql_query ("set collation_connection='cp1251_general_ci'");  
 
   автор: cheops   (12.03.2006 в 19:31)  
  Кстати, в MySQL вместо этих трёх запросов оказывается можно использовать один
mysql_query("SET NAMES 'cp1251'");  

   
Rambler's Top100
вверх

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