2017-08-07 88 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'嗎? –