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

标签 mysql full-text-search

在我的 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/

相关文章:

django - 使用 postgresql-8.4 和 django 进行全文搜索

MySQL 多个 Id 查找

javascript - 如何每 5 分钟重复一次 mysql 查询?

C# 捕获 "Main-Thread"上的异常

mysql - 尝试给MYSQL添加主键

mysql - MySQL中的两个select错误 “Every derived table must have its own alias”?

Mysql 搜索 LIKE 并可选法语字符

search - 当您输入新问题时,Stack Overflow 如何显示类似问题?

PHP MYSQL 多个表搜索相同关键字

mysql - 外键力独特