【问题标题】:Innodb: Can't find FULLTEXT index matching the column list when queried more than 1 columnsInnodb:查询超过 1 列时找不到与列列表匹配的 FULLTEXT 索引
【发布时间】:2015-11-18 22:43:51
【问题描述】:

我正在尝试对我的 MySQL INNODB 表运行一个非常简单的查询:

SELECT * 
FROM items 
WHERE MATCH (item_title,item_description) AGAINST ('dog')

item_titleitem_description 列都有一个 FULLTEXT 索引。

我不断收到此错误:

找不到与列列表匹配的 FULLTEXT 索引

我的问题:当我查询 just item_titlejust item_description 时,它工作正常。但是,当我在 1 个查询中同时执行这两项操作时,如上所示,我收到了该错误。

知道有什么问题吗?

【问题讨论】:

  • 可能重复的问题,here
  • 那是关于多个表的。我只是查询一张表。只有2列。不幸的是,这对我没有帮助。

标签: mysql full-text-search innodb


【解决方案1】:

如果您为单个有效的 col 设置全文索引。说

ALTER TABLE `items` ADD FULLTEXT(`item_title`);
ALTER TABLE `items` ADD FULLTEXT(`item_description`);

【讨论】:

    【解决方案2】:
    ALTER TABLE `table_name` ADD FULLTEXT (`item_title` ,`item_description`);
        and then ( "SELECT table_name.*,
        MATCH (item_title, item_description) AGAINST ('" . $search . "') AS relevance
        FROM table_name
        WHERE MATCH (item_title, item_description) AGAINST ('" . $search . "')
        ORDER BY relevance DESC" );
    

    【讨论】:

      【解决方案3】:

      我可能会迟到,只是在这里发布以防有人混淆:)

      运行此查询:

      ALTER TABLE `items` ADD FULLTEXT(`item_title`,`item_description`);
      

      然后你就可以运行全文搜索了:

      SELECT * 
      FROM items 
      WHERE MATCH (item_title,item_description) AGAINST ('dog')
      

      【讨论】:

        【解决方案4】:

        你需要第三个索引:

        FULLTEXT(item_title, item_description)
        

        【讨论】:

        • 拜托,我也有同样的问题,你能举个例子改进一下吗?谢谢
        • @GabrieleCarbonai - 显然我们的问题有一些不同。所以,开始你自己的问题,一定要包括你的细节,加上任何差异。
        猜你喜欢
        • 2023-03-19
        • 2014-03-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-01-31
        • 1970-01-01
        • 2015-06-23
        • 1970-01-01
        相关资源
        最近更新 更多