在我的 table 上,我有 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 个 FULLTEXT 索引,其中包含所有这些列。是对的吗?您还可以在此表上拥有多个 FULLTEXT 索引,其中一个索引包含所有列,其他索引包含子集。这完全取决于您的使用情况。
请记住 manual 中的这个警告并确保您的全文索引列列表与您正在查询的列完全匹配:
- MATCH() 列列表必须与表的某些 FULLTEXT 索引定义中的列列表完全匹配,除非此 MATCH() 处于 bool 模式。 bool 模式搜索可以在非索引列上完成,尽管它们可能很慢。
这两个问题的答案是您需要删除现有索引并使用更新的列列表重新创建它:
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`
);
关于mysql - 同一个表上有 3 个 FULLTEXT 索引..如何合并它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3256746/