天天看點

MySQL啟用中文全文檢索功能

MySQL支援對文本進行全文檢索,全文檢索可以類似搜尋引擎的功能,相比較模糊比對更加靈活高效且更快。MySQL5.7之後也支援對中文的全文檢索,這裡描述如何啟用MySQL的中文全文檢索。

首先,MySQL啟用全文檢索要對字段加全文檢索的索引,注意,一個表隻能建立一個全文檢索字段,如需要檢索多個字段,需要将多個字段一起建立索引,單獨建立多個索引是無效的。是以建立方法如下:

ALTER TABLE

localgo

.

entity

ADD FULLTEXT INDEX

entity_info

(

entity_name

,

entity_introduction

) WITH PARSER ngram;

MySQL5.7支援對中文進行全文檢索,其自帶了内部的切詞系統,預設切詞系統的字段是4,但中文一般是兩個字組成一個單詞,是以需要改變。首先看一下内部切詞的長度

SHOW VARIABLES LIKE ‘ft_min_word_len’;

SHOW VARIABLES LIKE ‘ft%’;

發現結果都是4,下面更改資料庫配置,在[client]下加上ft_min_word_len = 2,在[mysqld]下加上另兩行。如下所示,注意,一般情況下這兩個配置下都含有其他設定,這裡省去了,隻需要在這兩個配置的末尾加上如下内容即可,不要删除之前的配置。

[mysqld]

ft_min_word_len = 2

ngram_token_size=2

[client]

ft_min_word_len = 2

最後,用如下語句即可支援MySQL對中文進行全文檢索了(注意檢索詞需要放在星号之間,支援空格或者分号作為關鍵詞分隔符)。

SELECT * FROM localgo.entity WHERE MATCH(

entity_name

,

entity_introduction

) AGAINST(‘程式’ IN BOOLEAN MODE);

繼續閱讀