日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql ngram 中文_MySQL 全文检索 ngram插件

發布時間:2024/3/24 数据库 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql ngram 中文_MySQL 全文检索 ngram插件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

InnoDB默認的全文索引parser非常合適于Latin,因為Latin是通過空格來分詞的。但對于像中文,日文和韓文來說,沒有這樣的分隔符。一個詞可以由多個字來組成,所以我們需要用不同的方式來處理。在MySQL 5.7.6中我們能使用一個新的全文索引插件來處理它們:n-gramparser.

什么是N-gram?

在全文索引中,n-gram就是一段文字里面連續的n個字的序列。例如,用n-gram來對”信息系統”來進行分詞,得到的結果如下:

如何在InnoDB中使用N-gram Parser?

N-gram parser是默認加載到MySQL中并可以直接使用的。我們只需要在DDL中創建全文索引時使用WITH PARSER ngram。

我們引入了一個新的全局變量叫ngram_token_size。由它來決定n-gram中n的大小,也就是詞的大小。它的默認值是2,這個時候,我們使用的是bigram。它的合法的取值范圍是1到10。現在,我們很自然會想到一個問題:實際應用中應該如何設置ngram_token_size值的大小呢?當然,我們推薦使用2。但是你也可以通過如下這個簡單的規則來可以選擇任何合法的值:設置到你希望能查詢到的最小的詞的大小。如果你想查詢到單個字,那么我們需要設置為1。?ngram_token_size的值設置的越小,全文索引占用的空間也越小。一般來說,查詢正好等于ngram_token_size的詞,速度會更快,但是查詢比它更長的詞或短語,則會變慢。

N-gram分詞處理

N-gram parser和系統默認的全文索引parser有如下不同點:

無用詞(stopword)處理:通常,對于一個新的詞,我們會查找stopwords表,看是否有匹配的詞。如果有,這個詞就不會加入到全文索引中。但是在n-gram中,我們會查找stopwords表,看是否包含里面的詞。這樣處理的原因是,在中日韓的文本中,有很多沒有意義的字符,詞語和標點符號。比如,如果我們把‘的’加入到stopwords表中,那么對于句子‘信息的系統’,在默認情況下我們分詞結果為‘信息’,‘系統’。其中‘息的’和‘的系’被過濾掉了。

我們可以通過查詢INFORMATION_SCHEMA.INNODB_FT_INDEX_CACHE和INFORMATION_SCHEMA.INNODB_FT_TABLE_TABLE來查詢哪些詞在全文索引里面。這是一個非常有用的調試工具。如果我們發現一個包含某個詞的文檔,沒有如我們所期望的那樣出現在查詢結果中,那么這個詞可能是因為某些原因不在全文索引里面。比如,它含有stopword,或者它的大小小于ngram_token_size等等。這個時候我們就可以通過查詢這兩個表來確認。

總結

以上是生活随笔為你收集整理的mysql ngram 中文_MySQL 全文检索 ngram插件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。