未来的证明FULLTEXT搜索

时间:2010-07-19 14:47:41

标签: mysql indexing full-text-search

我在表格上有一个名为cart_product_fti的FULLTEXT索引

每当我使用它时,我必须准确列出索引中的所有字段:

MATCH (foo,bar,etc)

我的想法是,如果以后我决定在索引中添加/删除字段,则所有脚本都必须更新或者它们将被破坏。

所以我想知道是否有办法获取索引中所有字段的列表,然后将列表插入到我的MATCH()中,以便在进行更改时不必更新FULLTEXT指数?

2 个答案:

答案 0 :(得分:1)

可能的解决方案:

  • 做好工作。一个结构合理的项目可能只有1或2个类或具有特定查询/数据的文件,所以它不应该那么多工作。

  • 继续对每个查询一次又一次地查询information_schema.statistics以动态构建查询(几乎没有效率)。

  • 定义一个在表中搜索的存储过程,在这种情况下,更改表/全文索引布局只需要您更改一次过程。

编辑:由于某种原因,key_column_usage似乎不包含FULLTEXT引用,我们必须求助于information_schema.statistics表?

答案 1 :(得分:1)

要列出索引中的所有字段,可以使用SQL命令SHOW INDEXES FROM <table>

它将列出表中的每个索引,对于具有多个列的索引,每列将有一个条目。 您应该只使用该解决方案,并对索引的列列表进行适当的缓存。

您的案例中的另一个解决方案是将列表存储在配置文件中,并确保在数据库结构发生更改时更新配置。