Автор Тема: Проблеми при търсене в mysql  (Прочетена 2705 пъти)

nov_chovek

  • Напреднали
  • *****
  • Публикации: 536
  • Distribution: Ubuntu 8.10 по принуда
  • Window Manager: Gnome
    • Профил
    • WWW
Имам таблица с две графи с колация utf8_unicode_ci
Базата е със същата колация.

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

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

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

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

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

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

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

romeo_ninov

  • Напреднали
  • *****
  • Публикации: 2155
    • Профил
Проблеми при търсене в mysql
« Отговор #1 -: 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;

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

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

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

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

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

0x2B|~0x2B

nov_chovek

  • Напреднали
  • *****
  • Публикации: 536
  • Distribution: Ubuntu 8.10 по принуда
  • Window Manager: Gnome
    • Профил
    • WWW
Проблеми при търсене в mysql
« Отговор #2 -: Aug 03, 2007, 11:23 »
@romeo_ninov:

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

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

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

'<img'>
Активен

romeo_ninov

  • Напреднали
  • *****
  • Публикации: 2155
    • Профил
Проблеми при търсене в mysql
« Отговор #3 -: Aug 03, 2007, 11:27 »
Цитат (nov_chovek @ Авг. 03 2007,12:23)
@romeo_ninov:

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

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

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

'<img'>

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

0x2B|~0x2B

lisik

  • Напреднали
  • *****
  • Публикации: 153
  • Distribution: Kubuntu
  • Window Manager: KDE
    • Профил
    • WWW
Проблеми при търсене в mysql
« Отговор #4 -: Aug 03, 2007, 22:49 »
Цитат (nov_chovek @ Авг. 03 2007,10:43)
SELECT * from words WHERE bg LIKE '%".$search_string."%' ORDER BY eng;

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

LIKE '%съд%'

провери си заявката - отпечатай я, да не би да се губи другаде "д"-то ти '<img'>

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

VladSun

  • Moderator
  • Напреднали
  • *****
  • Публикации: 2166
    • Профил
Проблеми при търсене в mysql
« Отговор #5 -: Aug 04, 2007, 00:03 »
Съгласен с lisik.

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

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



Активен

KISS Principle ( Keep-It-Short-and-Simple )
http://openfmi.net/projects/flattc/
Има 10 вида хора на този свят - разбиращи двоичния код и тези, които не го разбират :P

deltaplaner

  • Напреднали
  • *****
  • Публикации: 104
  • Distribution: Debian GNU/Linux
  • Window Manager: KDE
    • Профил
Проблеми при търсене в mysql
« Отговор #6 -: Aug 04, 2007, 00:46 »
Понеже въпроса ми е близък до тази тема, реших да попитам тука:

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

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



Активен

P4 2.66 GHz (533Mhz); 2x1GB DDR2 (533Mhz) RAM; GF 8600GT 256MB DDR3; SATA2 MAXTOR 80 GB HDD; SATA2 SEAGATE 320 GB HDD

lisik

  • Напреднали
  • *****
  • Публикации: 153
  • Distribution: Kubuntu
  • Window Manager: KDE
    • Профил
    • WWW
Проблеми при търсене в mysql
« Отговор #7 -: Aug 04, 2007, 11:08 »
проблемите ви съществуват ли когато пробвате заявките в phpmyadmin?
Активен

senser

  • Напреднали
  • *****
  • Публикации: 1328
    • Профил
Проблеми при търсене в mysql
« Отговор #8 -: 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


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

deltaplaner

  • Напреднали
  • *****
  • Публикации: 104
  • Distribution: Debian GNU/Linux
  • Window Manager: KDE
    • Профил
Проблеми при търсене в mysql
« Отговор #9 -: Aug 04, 2007, 16:07 »
Както каза lisik, mysql_query( "set names utf8" ) се оказа важно нещо в действителност '<img'>. Сега нещата си дойдоха на мястото. Благодаря на всички за помощта.
Активен

P4 2.66 GHz (533Mhz); 2x1GB DDR2 (533Mhz) RAM; GF 8600GT 256MB DDR3; SATA2 MAXTOR 80 GB HDD; SATA2 SEAGATE 320 GB HDD

Подобни теми
Заглавие Започната от Отговора Прегледи Последна публикация
MySql малък проблем.
Хардуерни и софтуерни проблеми
Marto 6 8482 Последна публикация Sep 25, 2002, 12:32
от
mysql въпрос
Настройка на програми
dumi 0 2040 Последна публикация Oct 08, 2003, 06:42
от dumi
Perl + CGI,DBI + Mysql ili PHP + Mysql
Общ форум
jica 3 8562 Последна публикация Sep 07, 2004, 17:02
от jica
Mysql проблем със стартирането(mysql.sock missing)
Настройка на програми
coveka 6 10955 Последна публикация Mar 01, 2008, 22:02
от coveka
Mysql: can't connect to local mysql server
Настройка на програми
wonder 1 9511 Последна публикация Mar 16, 2008, 01:17
от neter