Linux за българи: Форуми

Програмиране => Web development => Темата е започната от: nov_chovek в Aug 03, 2007, 10:43



Титла: Проблеми при търсене в mysql
Публикувано от: nov_chovek в Aug 03, 2007, 10:43
Имам таблица с две графи с колация utf8_unicode_ci
Базата е със същата колация.

ХТМЛ файловете са ми с encoding utf-8

Имам проблем с точността при търсенето.
Заявката за търсене е следната:

SELECT * from words WHERE bg LIKE '%".$search_string."%' ORDER BY eng;

Когато търся стринга "съд", вместо да ми изкарва *съд*,

ми изкарва *съ* . Къде се губи "д-то"???

* - е всеки символ.

Защо така се получава?!?!? Има ли някой идея??


Титла: Проблеми при търсене в mysql
Публикувано от: romeo_ninov в Aug 03, 2007, 11:17
Цитат (nov_chovek @ Авг. 03 2007,11:43)
Имам таблица с две графи с колация utf8_unicode_ci
Базата е със същата колация.

ХТМЛ файловете са ми с encoding utf-8

Имам проблем с точността при търсенето.
Заявката за търсене е следната:

SELECT * from words WHERE bg LIKE '%".$search_string."%' ORDER BY eng;

Когато търся стринга "съд", вместо да ми изкарва *съд*,

ми изкарва *съ* . Къде се губи "д-то"???

* - е всеки символ.

Защо така се получава?!?!? Има ли някой идея??

Аз не съм спец по SQL, но зашо ползваш едновременно мета символи и LIKE?


Титла: Проблеми при търсене в mysql
Публикувано от: nov_chovek в Aug 03, 2007, 11:23
@romeo_ninov:

Какво имаш предвид??

Така пише в мануала на Mysql:

SELECT * FROM pet WHERE name LIKE '%w%';

???


Титла: Проблеми при търсене в mysql
Публикувано от: romeo_ninov в Aug 03, 2007, 11:27
Цитат (nov_chovek @ Авг. 03 2007,12:23)
@romeo_ninov:

Какво имаш предвид??

Така пише в мануала на Mysql:

SELECT * FROM pet WHERE name LIKE '%w%';

???

просто питам, защото имам някакви спомени за оракъл че е или едното или другото


Титла: Проблеми при търсене в mysql
Публикувано от: lisik в Aug 03, 2007, 22:49
Цитат (nov_chovek @ Авг. 03 2007,10:43)
SELECT * from words WHERE bg LIKE '%".$search_string."%' ORDER BY eng;

ако искаш да намериш записите съдържащи "съд", например в "подсъдим", "съдия" то LIKE трябва да изглежда така

LIKE '%съд%'

провери си заявката - отпечатай я, да не би да се губи другаде "д"-то ти :)

mysql_query( "set names utf8" ) за връзката между php и  mysql ползваш ли?


Титла: Проблеми при търсене в mysql
Публикувано от: VladSun в Aug 04, 2007, 00:03
Съгласен с lisik.

Не знам какво е точно приложението ти, но може би ще е от полза да погледнеш и MySQL FULLTEXT :
прим.  http://www.petefreitag.com/item/477.cfm

ПП: Случайно да правиш chomp($search_string) ?





Титла: Проблеми при търсене в mysql
Публикувано от: deltaplaner в Aug 04, 2007, 00:46
Понеже въпроса ми е близък до тази тема, реших да попитам тука:

При търсенето (пак с LIKE) на кирилица - има значение малки или големи букви, а при търсене на латиница - няма. Та как да стане така, че и при кирилица да няма значение ?

Навсякъде колацията е utf8_unicode_ci, полетата в които се търси са varchar и mediumtext.





Титла: Проблеми при търсене в mysql
Публикувано от: lisik в Aug 04, 2007, 11:08
проблемите ви съществуват ли когато пробвате заявките в phpmyadmin?


Титла: Проблеми при търсене в mysql
Публикувано от: senser в Aug 04, 2007, 13:16
Цитат (deltaplaner @ Авг. 04 2007,00:46)
Понеже въпроса ми е близък до тази тема, реших да попитам тука:

При търсенето (пак с LIKE) на кирилица - има значение малки или големи букви, а при търсене на латиница - няма. Та как да стане така, че и при кирилица да няма значение ?

Навсякъде колацията е utf8_unicode_ci, полетата в които се търси са varchar и mediumtext.

според това  не би трябвало да имаш подобен проблем

направих една тестова таблица:
Примерен код

 CREATE TABLE `table1` (
  `id` int(11) NOT NULL auto_increment,
  `article` text collate utf8_unicode_ci,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=67 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci


и търсенето в нея не е чувстивтелно към регистъра на буквите


Титла: Проблеми при търсене в mysql
Публикувано от: deltaplaner в Aug 04, 2007, 16:07
Както каза lisik, mysql_query( "set names utf8" ) се оказа важно нещо в действителност :). Сега нещата си дойдоха на мястото. Благодаря на всички за помощта.