主博客:
【MySQL精通之路】全文搜索功能-CSDN博客
目錄
1.介紹
2.安裝MeCab Parser插件
3.創建使用MeCab分析器的FULLTEXT索引
4.MeCab Parser空間處理
5.MeCab分析程序停止字處理
6.MeCab Parser術語搜索
7.MeCab分析程序通配符搜索
8.MeCab語法分析器短語搜索
9.從二進制分布安裝MeCab(可選)
10.從源安裝MeCab(可選)
1.介紹
內置的MySQL全文解析器使用單詞之間的空白作為分隔符來確定單詞的開始和結束位置,這在使用不使用單詞分隔符的表意語言時是一個限制。為了解決這一限制,MySQL提供了一個MeCab全文解析器插件。支持MeCab全文解析器插件與InnoDB和MyISAM一起使用。
MySQL還提供了一個支持中文、日語和朝鮮語(CJK)的ngram全文解析器插件。有關更多信息,請參閱“ngram全文分析器”。
【MySQL精通之路】全文解析器-ngram-CSDN博客
MeCab全文解析器插件是一個用于日語的全文解析器插件,它將文本序列標記為有意義的單詞。例如,MeCab標記化“データベース管理” (“數據庫管理”)到“データベース” (“數據庫”)和“管理” 經營相比之下,ngram全文解析器將文本標記為n個字符的連續序列,其中n表示1到10之間的數字。
除了將文本標記為有意義的單詞外,MeCab索引通常小于ngram索引,并且MeCab全文搜索通常更快。一個缺點是,與ngram全文解析器相比,MeCab全文解析器可能需要更長的時間來標記文檔。
第14.9節“全文搜索函數”中描述的全文搜索語法適用于MeCab解析器插件。本節將介紹解析行為的差異。與全文相關的配置選項也適用。
有關MeCab解析器的更多信息,請參閱Github上的MeCab:另一個詞性和形態分析器項目。
2.安裝MeCab Parser插件
MeCab解析器插件需要MeCab和MeCab ipadic。
在受支持的Fedora、Debian和Ubuntu平臺上(除了Ubuntu 12.04,其中系統mecab版本太舊),如果安裝到默認位置,MySQL會動態鏈接到系統mecab安裝。
在其他支持的類Unix平臺上,libmecab.so靜態鏈接在libpluginmecab.so中,后者位于MySQL插件目錄中。
mecab ipadic包含在MySQL二進制文件中,位于MySQL_HOME\lib\mecab中。
您可以使用本地包管理實用程序(在Fedora、Debian和Ubuntu上)安裝mecab和mecab ipadic,也可以從源代碼構建mecab或mecab ipadic。
有關使用本機軟件包管理實用程序安裝mecab和mecab ipadic的信息,請參閱9節二進制分發安裝mecab(可選)。
如果要從源代碼構建mecab和mecab ipadic,請參閱10節源代碼創建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
松散前綴是一個選項修飾符。在安裝mecab解析器插件之前,MySQL不會識別mecab_rc_file選項,但在嘗試安裝mecab解析器插件之前必須設置該選項。松散前綴允許您重新啟動MySQL,而不會遇到由于無法識別的變量而導致的錯誤。
如果您使用自己的MeCab安裝,或從源代碼構建MeCab,則mecabrc配置文件的位置可能會有所不同。
有關MySQL配置文件及其位置的信息,請參閱“使用配置文件”。
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-jp、ipadic_sjis和ipadic_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字典支持uji和eucjpms字符集。
ipadic_sjis字典支持sjis和cp932字符集。
ipadic_utf-8字典支持utf8mb3和utf8mb4字符集。
mecab_charset只報告第一個支持的字符集。例如,ipadic_utf-8字典同時支持utf8mb3和utf8mb4。當使用此詞典時,mecab_charset總是報告utf8。
4. 重啟MySQL.
5.安裝MeCab解析器插件:
MeCab解析器插件是使用INSTALL plugin安裝的。插件名稱為mecab,共享庫名稱為libpluginmecb.so。有關安裝插件的更多信息,請參閱“安裝和卸載插件”。
INSTALL PLUGIN mecab SONAME 'libpluginmecab.so';
?一旦安裝,MeCab解析器插件會在每次正常的MySQL重啟時加載。
驗證是否使用SHOW PLUGINS語句加載了MeCab解析器插件。
mysql> SHOW PLUGINS;
mecab插件應該出現在插件列表中。
3.創建使用MeCab分析器的FULLTEXT索引
要創建使用mecab語法分析器的FULLTEXT索引,請使用create TABLE、ALTER TABLE或create index指定WITH parser ngram。
此示例演示如何創建具有mecab FULLTEXT索引的表,插入示例數據,以及查看Information Schema INNODB_FT_INDEX_CACHE表中的標記化數據:
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 TABLE或CREATE 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;
4.MeCab Parser空間處理
MeCab解析器在查詢字符串中使用空格作為分隔符。例如,MeCab解析器標記化
データベース管理 as データベース and 管理.
5.MeCab分析程序停止字處理
默認情況下,MeCab解析器使用默認的停止語列表,其中包含英文停止語的短列表。對于適用于日語的停止語列表,您必須創建自己的列表。有關創建停止語列表的信息,請參閱“全文停止語”。
6.MeCab Parser術語搜索
對于自然語言模式的搜索,搜索詞被轉換為標記的并集。例如データベース管理 轉換為データベース 管理.
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);
7.MeCab分析程序通配符搜索
通配符搜索項未標記化。上的搜索データベース管理* 對前綴執行,データベース管理.
SELECT COUNT(*) FROM articles WHERE MATCH(title,body) AGAINST('データベース*' IN BOOLEAN MODE);
8.MeCab語法分析器短語搜索
短語被標記。例如データベース管理 標記為データベース 管理.
SELECT COUNT(*) FROM articles WHERE MATCH(title,body) AGAINST('"データベース管理"' IN BOOLEAN MODE);
9.從二進制分布安裝MeCab(可選)
本節介紹如何使用本機包管理實用程序從二進制發行版安裝mecab和mecab ipadic。例如,在Fedora上,您可以使用Yum執行安裝:
yum mecab-devel
在Debian或Ubuntu上,您可以執行APT安裝:
apt-get install mecab
apt-get install mecab-ipadic
10.從源安裝MeCab(可選)
如果你想從源代碼構建mecab和mecab ipadic,下面提供了基本的安裝步驟。有關更多信息,請參閱MeCab文檔。
1.從下載適用于mecab和mecab ipadic的tar.gz軟件包http://taku910.github.io/mecab/#download.截至2016年2月,最新的可用軟件包為mecab-0.996.tar.gz和mecab-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。如果您已將MECAB和MECAB ipadic安裝到默認位置,請將WITH_MECAB選項設置為system。
-DWITH_MECAB=system
?如果定義了自定義安裝目錄,請將WITH_MECAB設置為自定義目錄。例如
-DWITH_MECAB=/path/to/mecab