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

Форум MySQL

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

 

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

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

тема: FULLTEXT
 
 автор: Ziq   (16.04.2005 в 23:01)   письмо автору
 
 

Для начала скажу, что я далек от индексов так, что пожалуйста пишите яснее.
Проблема такая, почему то я не могу осуществить поиск с помощью полнотекстогого поиска. Вначале я создаю индекс

ADD FULLTEXT 'together' (
'text' ,
'title' ,
'title_hide' ,
'name' ,
'description' 


Потом пытаюсь осуществиь поиск с помощью кода

select * from glavtext where match(together) against('что-то');

но он мне выводит ошибку Unknown column 'together' in 'where clause'. Помогите, пожалуйста.

   
 
 автор: cheops   (16.04.2005 в 23:52)   письмо автору
 
   для: Ziq   (16.04.2005 в 23:01)
 

Хм... ну вообще-то всё правильно... но первый запрос должен выглядеть примерно так
ALTER TABLE glavtext ADD FULLTEXT together ( 
'text' , 
'title' , 
'title_hide' , 
'name' , 
'description' 
)

Он не сообщает вам об ошибке или запрос выглядит именно так, а вы его просто сократили?

   
 
 автор: Ziq   (17.04.2005 в 08:09)   письмо автору
 
   для: cheops   (16.04.2005 в 23:52)
 

На самом деле я пользуюсь phpMyAdmin и SQL запрос примерно такой

ALTER TABLE 'glavtext' DROP INDEX 'together' ,
ADD FULLTEXT 'together' (
'text' ,
'title' ,
'title_hide' ,
'name' ,
'description' 


Я просто не стал писать полностью.

   
 
 автор: Ziq   (17.04.2005 в 08:14)   письмо автору
 
   для: Ziq   (17.04.2005 в 08:09)
 

Да, кстати в phpMyAdmin этот индекс отображается, но количество элементов в нем равно "нет", а у индекса primary "1". Всего в таблице 1 элемент.

Да, и еще может я как-то не так вставляю текст, я пользуюсь кодом

$query_on_add = "insert into glavtext values (null,'$name','$url','$description','$keywords','$title','$title_hide','$meta','$text','$hide','$robots',$id_glav,NOW());";

   
 
 автор: cheops   (17.04.2005 в 12:00)   письмо автору
 
   для: Ziq   (17.04.2005 в 08:14)
 

Это сложно сказать без таблицы перед глазами, не могли бы вы привести дамп таблицы (оператор CREATE TABLE), который можно получить в разделе Экспорт phpMyAdmin.

   
 
 автор: Ziq   (17.04.2005 в 22:12)   письмо автору
 
   для: cheops   (17.04.2005 в 12:00)
 

Вот дамп:

CREATE TABLE 'glavtext' (
  'id_text' int(11) NOT NULL auto_increment,
  'name' tinytext,
  'url' tinytext,
  'description' text NOT NULL,
  'keywords' text NOT NULL,
  'title' tinytext NOT NULL,
  'title_hide' tinytext NOT NULL,
  'meta' text,
  'text' text NOT NULL,
  'hide' enum('s','h') default NULL,
  'robots' enum('all','none','noindex','index','follow','nofollow','follow,noindex','index,nofollow') default NULL,
  'id_glav' mediumint(9) default NULL,
  'dt' datetime NOT NULL default '0000-00-00 00:00:00',
  PRIMARY KEY  ('id_text'),
  FULLTEXT KEY 'together' ('text','title','title_hide','name','description')
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;

Да, кстати есть ли смысл изменять CHARSET=latin.

   
 
 автор: cheops   (17.04.2005 в 22:53)   письмо автору
 
   для: Ziq   (17.04.2005 в 22:12)
 

Да вроде крамолы нет, а какую ошибку пишет?

Смысл менять CHARSET=latin на русскую кодировку есть, так как иначе правила для сортировки будут применятся английские, что приведёт к неправильной сортировке. Если база затем будет переносится на MySQL версии ниже 4.1, то этот параметр следует вообще убрать, так как MySQL более старых версий его не поймёт.

   
 
 автор: Ziq   (18.04.2005 в 07:29)   письмо автору
 
   для: cheops   (17.04.2005 в 22:53)
 

Слушай, Cheops, а какой кодировкой ты поьзуешься и как мне теперь изменить.

А про ошибку я уже писал Unknown column 'together' in 'where clause'

   
 
 автор: cheops   (18.04.2005 в 13:08)   письмо автору
 
   для: Ziq   (18.04.2005 в 07:29)
 

1) Это зависит от того, в какой кодировке хранятся данные в таблице: KOI8-R или cp1251. Посмотреть поддерживаемые кодировки в MySQL версии 4.1 можно при помощи запроса
SHOW CHARACTER SET;

Изменить кодировку по умолчанию для таблицы можно при помощи оператора ALTER TABLE
ALTER TABLE glavtext DEFAULT CHARACTER SET 'cp1251';

ALTER TABLE glavtext DEFAULT CHARACTER SET 'koi8r';


2) А вы средствами phpMyAdmin выставляете ключ FULLTEXT?

   
 
 автор: Ziq   (18.04.2005 в 13:17)   письмо автору
 
   для: cheops   (18.04.2005 в 13:08)
 

Нет я делал с помощью с помощью командной строки.

   
 
 автор: cheops   (18.04.2005 в 13:30)   письмо автору
 
   для: Ziq   (18.04.2005 в 13:17)
 

Дело в том, что там можно просто мышью щёлкнуть на те столбцы, которые должны быть индексированы FULLTEXT...

   
 
 автор: Ziq   (18.04.2005 в 14:29)   письмо автору
 
   для: cheops   (18.04.2005 в 13:30)
 

Cheops, я прикрепил PrintScreen indexов. И я что-то не понял твой последний ответ.

   
 
 автор: Ziq   (18.04.2005 в 16:59)   письмо автору
 
   для: Ziq   (18.04.2005 в 14:29)
 

Смотрю я через phpMyAdmin и никак понять не могу, почему количество элементов в индексе PRIMARY 1, а в FULLTEXT нет? Решил проивести эксперимент создал таблицу и туда занес пять элементов и опять в PRIMARY 5, а в FULLTEXT нет. Что делать? может я просто как-то не так добавляю значения? Я пользуюсь

insert into table values ('...

Помогите пожалуйста я в панике.

   
 
 автор: Ziq   (18.04.2005 в 19:20)   письмо автору
 
   для: Ziq   (18.04.2005 в 16:59)
 

Вообщем проблему я решил но не совсем. Проблема была в том, что он не понимал имя together, надо было просто использовать имя Match(text,title,title_hide,name,description). Но возникла еще одна проблемка этот индекс FULLTEXT кушает много места у меня на три маленьких текста заняло 4Kb. Подскажи, Cheops, сколько у тебя занимает полнотекстовый поиск по сайту.

   
 
 автор: cheops   (18.04.2005 в 23:42)   письмо автору
 
   для: Ziq   (18.04.2005 в 19:20)
 

Индексы жрут очень много места, зачастую объём занимаемый индексными файлами превышает объём данных в несколько раз. Например, объём данных этого форума составляет 9 Мб, с учётом индексов - 16 Мб.

   
 
 автор: Ziq   (19.04.2005 в 07:01)   письмо автору
 
   для: cheops   (18.04.2005 в 23:42)
 

16 Mb это весь текст форума.

   
 
 автор: cheops   (19.04.2005 в 12:21)   письмо автору
 
   для: Ziq   (19.04.2005 в 07:01)
 

Нет, весь текст форума - 9 Мб, 16Мб - это объём занимаемый базой на диске.

   
Rambler's Top100
вверх

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