mysql全文索引(支持中文)

MYSQL中文索引解决办法 自然语言处理(N-GRAM PARSER)

InnoDB默认的全文索引parser非常合适于Latin,因为Latin是通过空格来分词的。但对于像中文,日文和韩文来说,没有这样的分隔符。一个词可以由多个字来组成,所以我们需要用不同的方式来处理。在MySQL 5.7.6中我们能使用一个新的全文索引插件来处理它们:n-gram parser.

mysql > CREATE TABLE articles
(
        FTS_DOC_ID BIGINT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
        title VARCHAR(100),
        FULLTEXT INDEX ngram_idx(title) WITH PARSER ngram
) Engine=InnoDB CHARACTER SET utf8mb4;
Query OK, 0 rows affected (0.06 sec)
mysql> # ALTER TABLE articles ADD FULLTEXT INDEX ngram_idx(title) WITH PARSER ngram;
mysql> # CREATE FULLTEXT INDEX ngram_idx ON articles(title) WITH PARSER ngram;

查看指定全文检索表源(仅查看分词情况,可不做,不影响索引)

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

全文索引建立

// 创建
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;
// 修改
ALTER TABLE `table` ADD FULLTEXT (`content`) WITH PARSER ngram;

标签: none