2017-08-07 97 views
0

我有一个查询,应返回1个结果MySQL全文搜索1个字符只适用于MyISAM?

SELECT * FROM 
    `catalogsearch_fulltext_scope1` AS `search_index` 
WHERE 
    (MATCH (data_index) AGAINST ('+Product +Set +b' IN BOOLEAN MODE)); 

如果表引擎是MyISAM的,它的工作原理。
但是,如果我将表更改回innodb,它什么也不返回。
问题是通过搜索+b

我以前show variables like 'ft_min%'检查值造成的是1

由于系统Magento的2.1,我不知道是否有任何问题,如果我更改默认引擎。如果搜索条件在innodb中包含1个字符,我怎么才能得到结果?

回答

1

ft_min_word_len用于MyISAM;
innodb_ft_min_token_size适用于InnoDB。

更改设置时,请确保重建任何FULLTEXT索引。使用OPTIMIZE TABLEALTER TABLE

+0

谢谢。我将'innodb_ft_min_token_size'更新为1并重新启动数据库。然后'ALTER TABLE abc ENGINE ='InnoDB';',但仍然无法在InnoDB中使用 – user631607

+0

我使用'show variables'来检查'innodb_ft_min_token_size' = 1 – user631607

+0

有超过一半的行在其中有单词'b'吗? –