|
|
|
| При поиске слов с помощью Fulltext происходит зависание.
Посмотрите запрос.
Ключевые слова в которых и проблема, но она возникает только если искать более одного слова.
$keywords=$_POST['keywords'];
if($keywords)
{
$temp= strtok($keywords, " ");
$search_keywords="";
while($temp)
{
if($q==true)
$search_keywords .= " OR MATCH (opisanie) AGAINST ('$temp')";
else $search_keywords .= "and MATCH (opisanie) AGAINST ('$temp')";
$q=true;
$temp=strtok(" ");
}
}
$search="SELECT car.id_product, car.marka,
car.model, car.year, car.rul, car.volume,
car.engine, car.trans, car.privod, car.probeg,
car.price, car.foto, car.date, car.id_catalog,
car.gorod, car.id_name, gorod.name, opisanie_car.opisanie
FROM car, gorod, opisanie_car
WHERE car.hide='1' and car.id_product=opisanie_car.id_product $search_keywords
".$tmp1.$tmp2.$tmp3.$tmp4.$tmp5.$tmp6.$tmp7.$tmp8.$tmp9.$tmp10.$tmp11.$tmp12.$tmp13.$tmp14.$tmp15.$tmp16.$tmp17." ORDER BY $strtmp LIMIT $start, $pnumber";
$prt = mysql_query($search);
|
Если ищу с помощью одно слово, поиск ведется правильно. А если два и более сервер зависает
В чем здесь проблема.
Структуры таблиц
CREATE TABLE 'car' (
'id_product' int(11) NOT NULL auto_increment,
'marka' tinytext NOT NULL,
'model' tinytext NOT NULL,
'year' int(4) NOT NULL default '0',
'volume' tinytext NOT NULL,
'engine' enum('dis','ben') NOT NULL default 'dis',
'trans' enum('av','me','va') NOT NULL default 'av',
'privod' enum('no','per','zad','pol') NOT NULL default 'per',
'probeg' tinytext NOT NULL,
'rul' enum('p','l') NOT NULL default 'p',
'sost' tinytext NOT NULL,
'gt' int(1) NOT NULL default '0',
'price' int(5) NOT NULL default '0',
'foto' int(1) NOT NULL default '0',
'gorod' int(3) NOT NULL default '0',
'date' date NOT NULL default '0000-00-00',
'id_catalog' int(2) NOT NULL default '0',
'hide' int(1) NOT NULL default '0',
'id_name' int(11) NOT NULL default '0',
'id_model' int(11) NOT NULL default '0',
PRIMARY KEY ('id_product'),
KEY 'id_catalog' ('id_catalog'),
KEY 'id_name' ('id_name'),
KEY 'id_model' ('id_model')
) TYPE=MyISAM
|
CREATE TABLE 'opisanie_car' (
'id_opisanie' int(11) NOT NULL auto_increment,
'kontakt' tinytext NOT NULL,
'opisanie' text NOT NULL,
'sm' int(3) NOT NULL default '0',
'id_product' int(11) NOT NULL default '0',
PRIMARY KEY ('id_opisanie'),
KEY 'id_product' ('id_product'),
FULLTEXT KEY 'opisanie' ('opisanie')
) TYPE=MyISAM
|
| |
|
|
|
|
|
|
|
для: technic611
(08.07.2006 в 15:37)
| | Это на сервере или локальной машине? | |
|
|
|
|
|
|
|
для: cheops
(09.07.2006 в 10:37)
| | И на сервере и на локальной машине. Выдается ошибка что-то связано с лимитом в 30 секунд | |
|
|
|
|
|
|
|
для: technic611
(09.07.2006 в 11:03)
| | Хм... времени не хватает... а какой объём таблиц, сколько мегабайт они занимают и сколько в них записей? | |
|
|
|
|
|
|
|
для: cheops
(09.07.2006 в 13:43)
| | В той и другой таблице по 500 записей. Размер ппримерно по 100кб. В третьей таблице gorod 900 записей. Размер 40кб. | |
|
|
|
|
|
|
|
для: technic611
(09.07.2006 в 15:15)
| | Хм... не должно бы при таких мелких таблицах проблем возникать... Распечатайте запрос SELECT - как он выглядит, когда в него всё подставляется?
PS А зацикливание у вас нигде происходить не может? | |
|
|
|
|
|
|
|
для: cheops
(09.07.2006 в 16:58)
| | Зацикливания нет это точно. Так я пробовал вводить запрос напрямую в Phpmyadmin
А распечатка запроса показывает, что все значения подставляются куда надо.
SELECT car.id_product, car.marka, car.model, car.year, car.volume, car.engine, car.trans, car.privod, car.probeg, car.price, car.foto, car.date, car.id_catalog, car.id_name, car.gorod FROM car, opisanie_car WHERE car.hide='1' and MATCH (opisanie_car.opisanie) AGAINST ('сигнализация') OR MATCH (opisanie_car.opisanie) AGAINST ('литые диски') and car.id_product=opisanie_car.id_product and car.marka ='Acura' and car.model ='CL ' and car.year>=2004 and car.year<=2005 ORDER BY date DESC LIMIT 0, 30
Если искать только один параметр (н-р торлько сигнализация) все отлично исполняется.
Если два то сервер долго думает и выводит совсем не то что нужно. У меня на localhost вообще зависает | |
|
|
|
|
|
|
|
для: technic611
(23.07.2006 в 15:23)
| | А phpMyAdmin нормально выполняет запрос не зависает? Или тоже виснет? | |
|
|
|
|
|
|
|
для: cheops
(23.07.2006 в 16:13)
| | Тоже долго думает потом выводит ошибку
#1114 - The table '#sql_c0_0' is full | |
|
|
|
|
|
|
|
для: technic611
(23.07.2006 в 16:44)
| | Хм... достаточно странная ошибка... У вас какая версия MySQL? | |
|
|
|
|
|
|
|
для: cheops
(23.07.2006 в 18:10)
| | MySQL 4.0.21-nt | |
|
|
|