2017MySQL中文索引解決辦法 自然語言處理(N-gram parser)


  問題:長期以來MYSQL搜索對於中文來說不太理想,InnoDB引擎對FULLTEXT索引的支持是MySQL5.6新引入的特性,但是用“初級”一詞在“我是一名初級開發者”搜索時是無法出現結果的,原因在於搜索是以空格來分詞。因此僅能由第三方插件來完成搜索任務。在MySQL 5.7.6中我們能使用一個新的全文索引插件來處理它們:n-gram parser.

  1 安裝環境,推薦使用最新的MYSQL https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.18-winx64.zip

  2 ngram_token_size=2 #用中文檢索分詞插件ngram之前,先得在MySQL配置文件里面設置他的分詞大小. 

    例詞  '信息系統' 在設置為不同值時的分詞情況

    ngram_token_size=1 : '信', '息', '系', '統' 
    ngram_token_size=2 : '信息', '息系', '系統';
    ngram_token_size=3 : '信息系', '息系統';
    ngram_token_size=4 : '信息系統'

    

    查看指定全文檢索表源(僅查看分詞情況,可不做,不影響索引)
    

    set global innodb_ft_aux_table='db/table'; 
    SELECT * FROM information_schema.`INNODB_FT_INDEX_TABLE`;

  

 

  3 全文索引建立

    a 新建

CREATE TABLE table(
   `id` int(11) DEFAULT NULL,
   `name` varchar(512) DEFAULT NULL,
   `content` text,
   FULLTEXT KEY idx_name(name),
   FULLTEXT KEY idx_content(content) WITH PARSER ngram
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

 

    b 修改

 ALTER TABLE `table` ADD FULLTEXT (`content`) WITH PARSER ngram; 

  

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM