[MySQL] mysql 中文之全文檢索 與中文斷字斷詞

[MySQL] mysql 全文檢索 與中文斷字斷詞
起因: mysql的全文檢索對中文不相容,因為中文文字間無空格,不像英文單字間本有空格斷字
故mysql全文檢索引擎對英文搜尋沒甚麼問題,但對中文預設是無法搜尋
 e.g "今天中華民國生日"   用"中華民國" 無法查詢
但 若內容是  "今天 是 中華民國 生日" 則可搜尋到

1.設定mysql 全文檢索欄位 
2.設定my.cnf 
   ft_min_work_len

3.中文斷字
   使用結巴斷字jieba-php
4.mysql fulltext 查詢語法

1.設定mysql 全文檢索欄位 
   alter table advertisement add fulltext index (title,content)
2.設定查詢文字長度=2
  查詢目前設定   

show variables like 'ft_min%';

  a.修改:my.cnf 

[mysqld]
max_allowed_packet = 1073741824
ft_min_word_len = 2


  [synology]
  my.cnf 位置
  /var/packages/MariaDB/etc​/my.cnf

  b.重啟服務
  service mysql resstart
  [synology]
   sudo synoservicecfg --list   #服務清單
   sudo synoservicecfg -restart pkgctl-MariaDB  #重啟MariaDB服務

3.中文斷字
   使用結巴斷字jieba-php http://jieba-php.fukuball.com/
   在資料異動時,除了原本欄位content,另外儲存拆字後的欄位content_fulltext for 檢索專用
   範例程式碼
   1.這的資料異動的後續動作使用laravel的Queue機制(建立job,使用job::dispatch 存入) 參考Laravel-Queue
   2.並於linux開機啟動時執行監聽queue :  php56 artisan queue:listen 參考:官方Synology 啟動script
      或 另一篇synology 開機啟動程式筆記
4.mysql fulltext 查詢語法
   e.g select * from advertisement where match(content_fulltext) against ('中華民國' in boolean mode)
   [boolean mode 語法]
    +中華民國 :內含
    -中國大陸 :不含
     中華民國* :  萬用字元(中華開頭) e.g 中華民國  中華民國在台灣