在同一个表上有3个FULLTEXT索引..如何合并它们?

时间:2010-07-15 14:49:20

标签: mysql full-text-search

在我的桌面上我有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 个答案:

答案 0 :(得分:1)

您似乎只想拥有1个FULLTEXT索引,其中包含所有这些列。是对的吗?您还可以在此表上拥有多个FULLTEXT索引,一个包含所有列,另一个包含子集。这一切都取决于你的用法。

请记住manual中的这一警告,并确保您的全文索引列列表与您正在查询的列完全匹配:

  • MATCH()列列表必须与表的某些FULLTEXT索引定义中的列列表完全匹配,除非此MATCH()是IN BOOLEAN MODE。布尔模式搜索可以在非索引列上完成,尽管它们可能很慢。

这两个问题的答案是您需要删除现有索引并使用更新的列列表重新创建它:

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`
);