1. 程式人生 > >Mysql的全文索引遇到的坑

Mysql的全文索引遇到的坑

Mysql的FULLTEXT索引總結:
1、一張表只能建立一個FULLTEXT索引,建立語句為:

ALTER TABLE tablename ADD FULLTEXT INDEX idx_full_text_all(field1,field2..) with parser ngram;
with parser ngram :是指定中文分詞器外掛

2、搜尋語句
    select * from tablename where match(field1,field2...)against('words' IN BOOLEAN MODE)
3、mysql預設是的分詞長度
    在沒有使用ngram外掛時通過SHOW VARIABLES LIKE 'ft%'; 來顯式檢視
    ft_min_word_len=4, 最短索引字串,修改後需要重新建立索引
        重新建立索引命令:repair table tablename quick 
    ft_max_word_len=84,最長索引字串,修改後需要重新建立索引
    
4、在使用過程中遇到的問題:
    使用了中文分詞器外掛ngram,表的引擎是InnoDB的,單詞java搜不到,其他單詞都沒問題,
    (1)、如果改表引擎為MyISAM,表示沒有問題,但是該引擎不支援事物,故不行
    (2)、最後查出來原因是:分詞的長度設定不對,當使用ngram中文分詞時,ft_max_word_len就不管用了,得使用其他引數
    ngram_token_size這個引數是支援中文分詞的,長度設定成1就可以了。
    (3)、Linux上修改mysql配置檔案my.cnf,路徑:/etc/my.cnf 。新增ngram_token_size=1 並重啟mysql,