Задавайте вопросы, мы ответим
Вы не зашли.
C этими же данными в версии 4 всё работает отлично, без заморочек.
Даже если удалишь полнотекстовый индекс, тут же создаёшь, в нём формируется столько уникальных значений, сколько записей в таблице - в моём случае 4456 штук.
Под 5.1 Если удалить и опять создать индекс хоть через alter table, хоть через create fulltext index, генерируется всего одно уникальное значение. Если снять дамп таблицы, удалить её из базы и залить заново через импорт формитруется всего 22 ункальных значения.
Я думал, что-то с хостером не так...
Попробовал это всё у троих разных хостеров - везде одно и то же.
Пробовал сменить кодировку таблицы с win1251 на utf8 - никакого изменения в поведении не произошо.
При этом отмечу ещё раз, что в версии 4+ всё работает как часы.
Но у всех хостеров, которые доступны и предлагают более-мене сносные условия, стит версия MySQL 5.1.+
Пожалуйста, помогите разобраться!!!
С Уважением,
lion.
Неактивен
А почему Вы считаете, что формируется 22 уникальных значения? Я вот создал табличку
create table fti (a text, fulltext(a)) charset=cp1251;
напихал в нее данных скриптом, и все в порядке:
[aquatica] root test > select count(*) from fti; +----------+ | count(*) | +----------+ | 4096 | +----------+ 1 row in set (0,00 sec) [aquatica] root test > select * from fti limit 700,1; +------------+ | a | +------------+ | жхжгю | +------------+ 1 row in set (0,01 sec) [aquatica] root test > select * from fti where match(a) against ('жхжгю'); +------------+ | a | +------------+ | жхжгю | +------------+ 1 row in set (0,00 sec)
MySQL 5.1.31
Неактивен
Уважаемый paulus,
Дело в том, что phpMyAdmin показывает, сколько их есть, этих уникальных значений,
Вот как это выглядит у меня по 5.1+
--------------------------------------------------------------
Имя индекса Тип Уникальных элементов Поле
--------------------------------------------------------------
PRIMARY PRIMARY 4464 ID
Parent INDEX 346 Parent
St INDEX 44 St
cat INDEX 88 Cat
grp INDEX 562 grp
added INDEX 22 added
DT INDEX 22 DT
owner INDEX 67 owner
PriceZalog INDEX 4464 PriceZalog
ID1 INDEX 643 ID1
Name INDEX 4464 Name
town INDEX 22 town
cnt INDEX 346 cnt
Descr FULLTEXT 22 Descr
Name_2 FULLTEXT 22 Name
phone FULLTEXT 22 phone
==============================================================
А вот так под 4.3+
--------------------------------------------------------------
Имя индекса Тип Количество элементов Поле
--------------------------------------------------------------
PRIMARY PRIMARY 4464 ID
Parent INDEX 343 Parent
St INDEX 44 St
cat INDEX 87 Cat
grp INDEX 558 grp
added INDEX 22 added
DT INDEX 22 DT
owner INDEX 66 owner
PriceZalog INDEX 4464 PriceZalog
ID1 INDEX 637 ID1
Name INDEX 4464 Name
town INDEX 22 town
cnt INDEX 343 cnt
Descr FULLTEXT 4464 Descr
Name_2 FULLTEXT 4464 Name
phone FULLTEXT 4464 phone
==============================================================
И под 4.3 полнотекстовый поиск работает, а под 5.1 почему-то (знать бы почему) не работает....
Может это как-то связано с кодировками, или с чем ещё может быть... В смысле русские слова за слова не считае, вот и не воспринимает их...
Неактивен
Я использую MATCH() AGAINST()...
и САМОЕ НЕПОНЯТНОЕ ДЛЯ МЕНЯ В ТОМ, ЧТО МЕСЯЦ НАЗАД Я ЕГО ОПРОБОВАЛ И ВСЁ РАБОТАЛО ПОД 5.1 (и количество уникальных элементов было правдивое), потом просто забанил кнопку поиска в форме и работал дальше над сайтом...
Теперь сайт практически доработал, решил доделать поиск. Но не ищет теперь ни из формы, ни если ввести руками запрос в phpMyAdmin в форме ввода запросов - возвращает пустое.
И почему всего 22 уникальных - почти во всех записях есть текст в поле Descr - это описание товара. И это описание состоит из не мене 3х слов длиной более 4х символов...
Неактивен
Если это число, которое пишет phpMyAdmin, — cardinality, то оно выставляется правильно при
ANALYZE TABLE. С другой стороны, и без ANALYZE полнотекстовый индекс работает нормально
(ну разве что число смущает).
Что касается самого индекса, убедитесь, что таблица типа MyISAM, в однобайтовой кодировке.
Насколько я понимаю, база не боевая, поэтому можно сделать что-то типа
ALTER TABLE tablename ENGINE=MyISAM;
ALTER TABLE tablename CONVERT TO CHARSET cp1251;
P.S. И у меня cardinality проставляется нормально, так что дело не в версии:
[aquatica] root test > show index in fti; +-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+ | Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | +-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+ | fti | 1 | a | 1 | a | NULL | 4096 | NULL | NULL | YES | FULLTEXT | | +-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+ 1 row in set (0,00 sec)
Неактивен