文件首頁
MySQL 9.0 參考手冊
相關文件 下載本手冊
PDF (美式信紙) - 40.0Mb
PDF (A4) - 40.1Mb
Man 頁面 (TGZ) - 258.2Kb
Man 頁面 (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 9.0 參考手冊  /  ...  /  MeCab 全文解析器外掛程式

14.9.9 MeCab 全文解析器外掛程式

內建的 MySQL 全文解析器使用單字之間的空白作為分隔符號,以判斷單字的開始和結束位置,這在處理不使用單字分隔符號的表意語言時是一種限制。為了處理日文的此限制,MySQL 提供了 MeCab 全文解析器外掛程式。MeCab 全文解析器外掛程式支援與 InnoDBMyISAM 一起使用。

注意

MySQL 還提供了支援日文的 ngram 全文解析器外掛程式。如需更多資訊,請參閱第 14.9.8 節,「ngram 全文解析器」

MeCab 全文解析器外掛程式是一種用於日文的全文解析器外掛程式,可將一系列文字符號化為有意義的單字。例如,MeCab 會將 データベース管理 (「資料庫管理」) 符號化為 データベース (「資料庫」) 和 管理 (「管理」)。相比之下,ngram 全文解析器會將文字符號化為 n 個字元的連續序列,其中 n 代表 1 到 10 之間的數字。

除了將文字符號化為有意義的單字之外,MeCab 索引通常小於 ngram 索引,而且 MeCab 全文搜尋通常更快。一個缺點是,與 ngram 全文解析器相比,MeCab 全文解析器可能需要更長的時間才能將文件符號化。

第 14.9 節,「全文搜尋函式」中描述的全文搜尋語法適用於 MeCab 解析器外掛程式。此節中描述了剖析行為的差異。與全文相關的設定選項也適用。

如需有關 MeCab 解析器的其他資訊,請參閱 Github 上的MeCab:另一個詞性及詞態分析器專案。

安裝 MeCab 解析器外掛程式

MeCab 解析器外掛程式需要 mecabmecab-ipadic

在支援的 Fedora、Debian 和 Ubuntu 平台(Ubuntu 12.04 除外,因為系統 mecab 版本太舊)上,如果 MySQL 安裝在預設位置,則 MySQL 會動態連結到系統 mecab 安裝。在其他支援的類 Unix 平台上,libmecab.so 會靜態連結到 libpluginmecab.so,後者位於 MySQL 外掛程式目錄中。mecab-ipadic 包含在 MySQL 二進位檔中,且位於 MYSQL_HOME\lib\mecab 中。

您可以使用原生套件管理公用程式 (在 Fedora、Debian 和 Ubuntu 上) 安裝 mecabmecab-ipadic,也可以從原始碼建置 mecabmecab-ipadic。如需有關使用原生套件管理公用程式安裝 mecabmecab-ipadic 的資訊,請參閱從二進位散發安裝 MeCab (選用)。如果您想從原始碼建置 mecabmecab-ipadic,請參閱從原始碼建置 MeCab (選用)

在 Windows 上,libmecab.dll 位於 MySQL bin 目錄中。mecab-ipadic 位於 MYSQL_HOME/lib/mecab 中。

若要安裝和設定 MeCab 解析器外掛程式,請執行下列步驟

  1. 在 MySQL 的設定檔中,將 mecab_rc_file 設定選項設定為 mecabrc 設定檔的位置,該檔案是 MeCab 的設定檔。如果您使用的是 MySQL 發行的 MeCab 套件,則 mecabrc 檔案位於 MYSQL_HOME/lib/mecab/etc/ 中。

    [mysqld]
    loose-mecab-rc-file=MYSQL_HOME/lib/mecab/etc/mecabrc

    loose 前綴是一個選項修飾符mecab_rc_file 選項在安裝 MeCab 解析器外掛程式之前,MySQL 不會識別它,但必須在嘗試安裝 MeCab 解析器外掛程式之前進行設定。 loose 前綴允許您重新啟動 MySQL,而不會因無法識別的變數而遇到錯誤。

    如果您使用自己的 MeCab 安裝,或從原始碼建置 MeCab,則 mecabrc 設定檔的位置可能會有所不同。

    有關 MySQL 設定檔及其位置的資訊,請參閱章節 6.2.2.2,「使用選項檔案」

  2. 同樣在 MySQL 設定檔中,將最小詞語長度設定為 1 或 2,這些是建議與 MeCab 解析器一起使用的值。對於 InnoDB 表格,最小詞語長度由 innodb_ft_min_token_size 設定選項定義,其預設值為 3。對於 MyISAM 表格,最小詞語長度由 ft_min_word_len 定義,其預設值為 4。

    [mysqld]
    innodb_ft_min_token_size=1
  3. 修改 mecabrc 設定檔以指定您要使用的字典。與 MySQL 二進位檔案一起發行的 mecab-ipadic 套件包含三個字典(ipadic_euc-jpipadic_sjisipadic_utf-8)。與 MySQL 打包的 mecabrc 設定檔包含類似以下的條目

    dicdir =  /path/to/mysql/lib/mecab/lib/mecab/dic/ipadic_euc-jp

    例如,要使用 ipadic_utf-8 字典,請修改條目如下

    dicdir=MYSQL_HOME/lib/mecab/dic/ipadic_utf-8

    如果您使用的是自己的 MeCab 安裝,或從原始碼建置了 MeCab,則 mecabrc 檔案中的預設 dicdir 條目,以及字典及其位置可能會有所不同。

    注意

    安裝 MeCab 解析器外掛程式後,您可以使用 mecab_charset 狀態變數來檢視 MeCab 使用的字元集。MySQL 二進位檔案提供的三個 MeCab 字典支援以下字元集。

    • ipadic_euc-jp 字典支援 ujiseucjpms 字元集。

    • ipadic_sjis 字典支援 sjiscp932 字元集。

    • ipadic_utf-8 字典支援 utf8mb3utf8mb4 字元集。

    mecab_charset 僅報告第一個支援的字元集。例如,ipadic_utf-8 字典同時支援 utf8mb3utf8mb4。當使用此字典時,mecab_charset 始終報告 utf8

  4. 重新啟動 MySQL。

  5. 安裝 MeCab 解析器外掛程式

    使用 INSTALL PLUGIN 安裝 MeCab 解析器外掛程式。外掛程式名稱為 mecab,共用程式庫名稱為 libpluginmecab.so。有關安裝外掛程式的其他資訊,請參閱章節 7.6.1,「安裝和解除安裝外掛程式」

    INSTALL PLUGIN mecab SONAME 'libpluginmecab.so';

    安裝後,MeCab 解析器外掛程式會在每次 MySQL 正常重新啟動時載入。

  6. 使用 SHOW PLUGINS 陳述式驗證是否已載入 MeCab 解析器外掛程式。

    mysql> SHOW PLUGINS;

    清單中應該會出現 mecab 外掛程式。

建立使用 MeCab 解析器的 FULLTEXT 索引

要建立使用 mecab 解析器的 FULLTEXT 索引,請使用 CREATE TABLEALTER TABLECREATE INDEX 指定 WITH PARSER ngram

此範例示範建立具有 mecab FULLTEXT 索引的表格、插入範例資料,以及檢視資訊綱要 INNODB_FT_INDEX_CACHE 表格中的 Tokenized 資料

mysql> USE test;

mysql> CREATE TABLE articles (
    id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
    title VARCHAR(200),
    body TEXT,
    FULLTEXT (title,body) WITH PARSER mecab
    ) ENGINE=InnoDB CHARACTER SET utf8mb4;

mysql> SET NAMES utf8mb4;

mysql> INSERT INTO articles (title,body) VALUES
    ('データベース管理','このチュートリアルでは、私はどのようにデータベースを管理する方法を紹介します'),
    ('データベースアプリケーション開発','データベースアプリケーションを開発することを学ぶ');

mysql> SET GLOBAL innodb_ft_aux_table="test/articles";

mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_INDEX_CACHE ORDER BY doc_id, position;

要將 FULLTEXT 索引新增至現有表格,您可以使用 ALTER TABLECREATE INDEX。例如

CREATE TABLE articles (
    id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
    title VARCHAR(200),
    body TEXT
    ) ENGINE=InnoDB CHARACTER SET utf8mb4;

ALTER TABLE articles ADD FULLTEXT INDEX ft_index (title,body) WITH PARSER mecab;

# Or:

CREATE FULLTEXT INDEX ft_index ON articles (title,body) WITH PARSER mecab;

MeCab 解析器的空白處理

MeCab 解析器在查詢字串中使用空格作為分隔符號。例如,MeCab 解析器將 データベース管理 Tokenized 為 データベース管理

MeCab 解析器的停用詞處理

預設情況下,MeCab 解析器使用預設的停用詞清單,其中包含簡短的英文停用詞清單。對於適用於日語的停用詞清單,您必須建立自己的清單。有關建立停用詞清單的資訊,請參閱章節 14.9.4,「全文停用詞」

MeCab 解析器的詞語搜尋

對於自然語言模式搜尋,搜尋詞語會轉換為 Token 的聯集。例如,データベース管理 會轉換為 データベース 管理

SELECT COUNT(*) FROM articles 
    WHERE MATCH(title,body) AGAINST('データベース管理' IN NATURAL LANGUAGE MODE);

對於布林模式搜尋,搜尋詞語會轉換為搜尋片語。例如,データベース管理 會轉換為 データベース 管理

SELECT COUNT(*) FROM articles 
    WHERE MATCH(title,body) AGAINST('データベース管理' IN BOOLEAN MODE);

MeCab 解析器的萬用字元搜尋

萬用字元搜尋詞語不會被 Tokenized。對 データベース管理* 的搜尋會對前綴 データベース管理 執行。

SELECT COUNT(*) FROM articles 
    WHERE MATCH(title,body) AGAINST('データベース*' IN BOOLEAN MODE);

MeCab 解析器的片語搜尋

片語會被 Tokenized。例如,データベース管理 會被 Tokenized 為 データベース 管理

SELECT COUNT(*) FROM articles 
    WHERE MATCH(title,body) AGAINST('"データベース管理"' IN BOOLEAN MODE);

從二進位發行版本安裝 MeCab (選用)

本節說明如何使用原生套件管理公用程式,從二進位發行版本安裝 mecabmecab-ipadic。例如,在 Fedora 上,您可以使用 Yum 執行安裝

$> yum mecab-devel

在 Debian 或 Ubuntu 上,您可以執行 APT 安裝

$> apt-get install mecab
$> apt-get install mecab-ipadic

從原始碼安裝 MeCab (選用)

如果您想要從原始碼建置 mecabmecab-ipadic,下面提供基本的安裝步驟。如需其他資訊,請參閱 MeCab 文件。

  1. http://taku910.github.io/mecab/#download 下載 mecabmecab-ipadic 的 tar.gz 套件。截至 2016 年 2 月,最新的可用套件為 mecab-0.996.tar.gzmecab-ipadic-2.7.0-20070801.tar.gz

  2. 安裝 mecab

    $> tar zxfv mecab-0.996.tar
    $> cd mecab-0.996
    $> ./configure
    $> make
    $> make check
    $> su
    $> make install
  3. 安裝 mecab-ipadic

    $> tar zxfv mecab-ipadic-2.7.0-20070801.tar
    $> cd mecab-ipadic-2.7.0-20070801
    $> ./configure
    $> make
    $> su
    $> make install
  4. 使用 WITH_MECAB CMake 選項編譯 MySQL。如果您已將 mecabmecab-ipadic 安裝到預設位置,請將 WITH_MECAB 選項設定為 system

    -DWITH_MECAB=system

    如果您定義了自訂的安裝目錄,請將 WITH_MECAB 設定為自訂目錄。例如

    -DWITH_MECAB=/path/to/mecab