полнотекстовый поиск в mysql
От: ahabr  
Дата: 11.01.08 22:55
Оценка:
Может кто-нибудь подскажет мне как в mysql сделать чтобы полнотекстовый поиск был регистронезависимым для русского языка. Данные хранятся в utf8 и для полей по которым идет поиск выбрано utf8_general_ci
Re: полнотекстовый поиск в mysql
От: goldblueranger  
Дата: 29.01.08 15:37
Оценка:
Здравствуйте, ahabr, Вы писали:

A>Может кто-нибудь подскажет мне как в mysql сделать чтобы полнотекстовый поиск был регистронезависимым для русского языка. Данные хранятся в utf8 и для полей по которым идет поиск выбрано utf8_general_ci


Не уверен в своей правоте, но напишу соображения.
MySQL 5.0 не поддерживает русский язык в utf8. (имеется в виду операции uppercase(), lowercase(), сортировка, и Ignoring diacritics (т.е. не различать при поиске 'е' и 'ё' — иногда полезно искать не задумываясь о том как ввели в базу "Звездный" или "Звёздный"))

http://dev.mysql.com/doc/refman/5.0/en/charset-unicode-sets.html

Почему я так думаю?
Заглянув в исходники, вижу, что в utf8_general_ci описываются операции с 255 байтами (usa7), что явно не достаточно чтобы покрыть русский язык.

Почему не поддерживает?
В русскоговорящих странах нет ни коммьюнити, ни пользователей которые платят деньги за mysql (а если и есть, то они не требуют такой фичи)

Почему не пользуются системными (Windows) функциями?
Наверно потому же, что и предыдущее.

Что делать? (если не нашли свой язык в <show collation like 'utf8%'> )
Либо:
1. Самому сделать utf8_russian_ci (или заюзать системные чарсеты) в MySQL и собрать версию (и не забыть послать патч в MySQL)
2. Заплатить кому-то денег чтобы он это сделал
3. "Надавить" на MySQL и доказать что они должны это сделать сами
4. Забить

Welcome to opensource

(но предварительно обратиться в MySQL support, может я тут нагнал)
Re[2]: полнотекстовый поиск в mysql
От: MasterZiv СССР  
Дата: 29.01.08 17:48
Оценка:
goldblueranger пишет:

> Не уверен в своей правоте, но напишу соображения.

> MySQL 5.0 не поддерживает русский язык в utf8. (имеется в виду операции
> uppercase(), lowercase(), сортировка, и Ignoring diacritics (т.е. не

Поддерживает. MySQL там все по Unicode-стандарту реализует, так что
все должно работать.

> Почему не поддерживает?

> В русскоговорящих странах нет ни коммьюнити, ни пользователей которые
> платят деньги за mysql (а если и есть, то они не требуют такой фичи)


Ага, а что наверное половина разработчиков MySQL — русские — это ничего ?

> Почему не пользуются системными (Windows) функциями?


Потому что MySQL не только на винде работает.

> Что делать? (если не нашли свой язык в <show collation like 'utf8%'> )


Да все там работает, надо правильно настроить нечувствительную к
регистру кодировку.
Posted via RSDN NNTP Server 2.1 beta
Re[3]: полнотекстовый поиск в mysql
От: goldblueranger  
Дата: 29.01.08 18:30
Оценка:
MZ>все должно работать.

упс, прогнал я дйствительно в EMS SQL Manager этот скрипт пашет на ура (у меня была ошибка в тестовом примере)


drop table if exists rus;
create table rus (name varchar(50) CHARACTER SET utf8 );

insert into rus values('Слово');

select name from rus where UPPER(NAME) like 'СЛ%' ;
Re[2]: полнотекстовый поиск в mysql
От: Аноним  
Дата: 15.03.08 12:10
Оценка:
Здравствуйте, goldblueranger, Вы писали:

G>Здравствуйте, ahabr, Вы писали:


A>>Может кто-нибудь подскажет мне как в mysql сделать чтобы полнотекстовый поиск был регистронезависимым для русского языка. Данные хранятся в utf8 и для полей по которым идет поиск выбрано utf8_general_ci


G>Не уверен в своей правоте, но напишу соображения.

G>MySQL 5.0 не поддерживает русский язык в utf8. (имеется в виду операции uppercase(), lowercase(), сортировка, и Ignoring diacritics (т.е. не различать при поиске 'е' и 'ё' — иногда полезно искать не задумываясь о том как ввели в базу "Звездный" или "Звёздный"))

G>http://dev.mysql.com/doc/refman/5.0/en/charset-unicode-sets.html


G>Почему я так думаю?

G>Заглянув в исходники, вижу, что в utf8_general_ci описываются операции с 255 байтами (usa7), что явно не достаточно чтобы покрыть русский язык.

G>Почему не поддерживает?

G>В русскоговорящих странах нет ни коммьюнити, ни пользователей которые платят деньги за mysql (а если и есть, то они не требуют такой фичи)

G>Почему не пользуются системными (Windows) функциями?

G>Наверно потому же, что и предыдущее.

G>Что делать? (если не нашли свой язык в <show collation like 'utf8%'> )

G>Либо:
G>1. Самому сделать utf8_russian_ci (или заюзать системные чарсеты) в MySQL и собрать версию (и не забыть послать патч в MySQL)
G>2. Заплатить кому-то денег чтобы он это сделал
G>3. "Надавить" на MySQL и доказать что они должны это сделать сами
G>4. Забить

G>Welcome to opensource


G>(но предварительно обратиться в MySQL support, может я тут нагнал)
Re[2]: полнотекстовый поиск в mysql
От: micromaze  
Дата: 15.03.08 12:13
Оценка:
Здравствуйте, goldblueranger, Вы писали:

G>Здравствуйте, ahabr, Вы писали:


A>>Может кто-нибудь подскажет мне как в mysql сделать чтобы полнотекстовый поиск был регистронезависимым для русского языка. Данные хранятся в utf8 и для полей по которым идет поиск выбрано utf8_general_ci


G>Не уверен в своей правоте, но напишу соображения.

G>MySQL 5.0 не поддерживает русский язык в utf8. (имеется в виду операции uppercase(), lowercase(), сортировка, и Ignoring diacritics (т.е. не различать при поиске 'е' и 'ё' — иногда полезно искать не задумываясь о том как ввели в базу "Звездный" или "Звёздный"))

G>http://dev.mysql.com/doc/refman/5.0/en/charset-unicode-sets.html


G>Почему я так думаю?

G>Заглянув в исходники, вижу, что в utf8_general_ci описываются операции с 255 байтами (usa7), что явно не достаточно чтобы покрыть русский язык.

G>Почему не поддерживает?

G>В русскоговорящих странах нет ни коммьюнити, ни пользователей которые платят деньги за mysql (а если и есть, то они не требуют такой фичи)

G>Почему не пользуются системными (Windows) функциями?

G>Наверно потому же, что и предыдущее.

G>Что делать? (если не нашли свой язык в <show collation like 'utf8%'> )

G>Либо:
G>1. Самому сделать utf8_russian_ci (или заюзать системные чарсеты) в MySQL и собрать версию (и не забыть послать патч в MySQL)
G>2. Заплатить кому-то денег чтобы он это сделал
G>3. "Надавить" на MySQL и доказать что они должны это сделать сами
G>4. Забить

G>Welcome to opensource


G>(но предварительно обратиться в MySQL support, может я тут нагнал)


Воистину так! Вот ж...
Re: полнотекстовый поиск в mysql
От: Аноним  
Дата: 23.06.08 10:54
Оценка:
Здравствуйте, ahabr, Вы писали:

A>Может кто-нибудь подскажет мне как в mysql сделать чтобы полнотекстовый поиск был регистронезависимым для русского языка. Данные хранятся в utf8 и для полей по которым идет поиск выбрано utf8_general_ci


Вот тут нормально написано,

http://www.phpwact.org/php/i18n/utf-8/mysql

А чел тут наверху философию не по-теме развел, ужас!
Если вкратце основная проблема — перекодировка. Твои таблицы могут быть и юникод, но от клиента приходят в неверном формате, по дефолту у мускула — latin1, и в итоге у тебя в базе хранятся кракозябры — данные кодировки latin1 сохраненные в юнкоде так что set names 'utf8' как в статье написано, спасет отца русской демократии
Re[2]: полнотекстовый поиск в mysql
От: Anton Batenev Россия https://github.com/abbat
Дата: 25.06.08 08:19
Оценка:
Здравствуйте, goldblueranger, Вы писали:

G>MySQL 5.0 не поддерживает русский язык в utf8. (имеется в виду операции uppercase(), lowercase(), сортировка, и Ignoring diacritics (т.е. не различать при поиске 'е' и 'ё' — иногда полезно искать не задумываясь о том как ввели в базу "Звездный" или "Звёздный"))


А если поставить collation в utf8_unicode_ci?

select 'Звёздный' = 'Звездный', 'Звёздный' = 'Звездячий'


+---+---+
| 1 | 0 |
+---+---+
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.