есть 3 индекса FULLTEXT в одной таблице .. как их объединить? - PullRequest
0 голосов
/ 15 июля 2010

на моей таблице у меня есть 3 различных индекса FULLTEXT, например, так:

FULLTEXT KEY `product_name` (`product_name`,`product_description`),
FULLTEXT KEY `product_brand` (`product_brand`,`metal_type`,`primary_stone`,`product_type`,`product_type_sub`,`product_series`),
FULLTEXT KEY `primary_stone_sub` (`primary_stone_sub`)

Это потому, что я добавил их после факта, вот так:

ALTER TABLE cart_product ADD FULLTEXT(columnA, columnB);

Q1 Как можноЯ объединяю эти 3 в 1 индекс FULLTEXT?

Q2 Кроме того, чтобы это больше не повторилось, как бы я добавил столбец FULLTEXT в уже существующий индекс FULLTEXT?

Спасибо!!!

1 Ответ

1 голос
/ 15 июля 2010

Похоже, вы хотите иметь только 1 индекс FULLTEXT, содержащий все эти столбцы. Это правильно? В этой таблице также может быть несколько индексов FULLTEXT, один из которых содержит все столбцы, а другие содержат подмножество. Все зависит от вашего использования.

Просто запомните это предупреждение из руководства и убедитесь, что ваши списки столбцов полнотекстового индекса точно соответствуют столбцам, к которым вы обращаетесь:

  • Список столбцов MATCH () должен точно соответствовать списку столбцов в некотором определении индекса FULLTEXT для таблицы, если только этот MATCH () не находится в режиме BOOLEAN. Поиск в логическом режиме может выполняться по неиндексированным столбцам, хотя они могут быть медленными.

Ответ на оба вопроса заключается в том, что вам нужно удалить существующий индекс и воссоздать его с обновленным списком столбцов:

ALTER TABLE cart_product 
  DROP INDEX `product_name`,
  DROP INDEX `product_brand`,
  DROP INDEX `primary_stone_sub`,
  ADD FULLTEXT INDEX `cart_product_fti` (
`product_name`,
`product_description`,
`product_brand`,
`metal_type`,
`primary_stone`,
`product_type`,
`product_type_sub`,
`product_series`,
`primary_stone_sub`
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...