не удается найти соответствие ПОЛНОТЕКСТОВОМУ индексу

#php #mysql #full-text-search

#php #mysql #полнотекстовый поиск

Вопрос:

Я пытаюсь заставить полнотекст работать с моей базой данных. Это была уже существующая база данных MyISAM:

 id BIGINT PRIMARY KEY NOT NULL AUTO_INCREMENT UNIQUE,
disabled TINYINT(1) UNSIGNED NOT NULL DEFAULT '0',
owner BIGINT NOT NULL,
category VARCHAR(12) NOT NULL,
title VARCHAR(64) NOT NULL DEFAULT 'My Product',
`condition` VARCHAR(4) NOT NULL DEFAULT 'new',
summary VARCHAR(96) NOT NULL DEFAULT 'Product Details',
quantity TINYINT(1) UNSIGNED,
price DECIMAL(7,2),
status TINYINT(1) UNSIGNED,
released DATE,
freight DECIMAL(5,2),
freightX DECIMAL(5,2),
overview TEXT,
warranty TEXT,
notes TEXT,
specList TEXT,
suspended TINYINT(1) UNSIGNED NOT NULL DEFAULT '0',
created DATETIME NOT NULL,
updated DATETIME NOT NULL,
  

Итак, я выполнил команду:

 "ALTER TABLE ".PREFIX."Shop ADD FULLTEXT(title,summary,overview,specList)"
  

Я не получил ошибок. Затем я попытался выполнить поиск в базе данных:

 "SELECT
    tblShop.id,tblShop.title,tblShop.summary,tblShop.overview,tblShop.specList,tblFilters.PID,tblFilters.filter
FROM
    ".PREFIX."Shop tblShop
INNER JOIN
    ".PREFIX."ShopFilters tblFilters ON tblShop.id = tblFilters.PID
WHERE
    tblShop.disabled='0' AND tblFilters.disabled='0' AND tblFilters.filter IN ('".$filters."') AND MATCH(tblShop.title,tblShop.summary,tblShop.overview,tblShop.specList) AGAINST("".$_POST['query']."")
GROUP BY
    id
HAVING
    COUNT(tblFilters.filter)=".$count."
ORDER BY
    MATCH(tblShop.title) AGAINST("".$_POST['query'].""),title ASC"
  

Все, что я, кажется, получаю, это ошибки с указанием:

 "Can't find FULLTEXT index matching the column list"
  

Я подтвердил, что индекс действительно существует через myPHPAdmin. Я дополнительно пытался:

 tblShop.disabled='0' AND tblFilters.disabled='0' AND tblFilters.filter IN ('".$filters."') AND MATCH(tblShop.title,tblShop.summary,tblShop.overview,tblShop.specList) AGAINST("".$_POST['query']."")
tblShop.disabled='0' AND tblFilters.disabled='0' AND tblFilters.filter IN ('".$filters."') AND MATCH(title) AGAINST("".$_POST['query']."")
  

Понятия не имею, что происходит. Буду признателен за любую помощь!

Комментарии:

1. В вашем списке столбцов должны быть перечислены все столбцы, которые вы определили, или вам нужен другой индекс. Вы также открыты для SQL-инъекций. Параметризуйте. например match (title,summary,overview,specList) against ...

2. Вы имеете в виду первую дополнительную попытку «СОПОСТАВИТЬ (tblShop.title,tblShop.summary, tblShop.overview, tblShop.specList) С(«».$_POST[‘query’].»»)»?

3. Все еще ищу помощь, если кто-нибудь осведомлен о том, в чем может быть проблема.

4. С каким запросом у вас возникли проблемы?

5. Многострочный запрос, спасибо