内置的MySQL全文语法分析器使用单词之间的空白作为定界符来确定单词的开始和结束位置,这在使用不使用单词定界符的表意语言时是一个限制。为了解决此限制,MySQL提供了一个支持中文,日语和朝鲜语(CJK)的ngram全文语法分析器。支持将ngram全文分析器与InnoDB和 一起使用MyISAM。
注意
MySQL还为日语提供了MeCab全文解析器插件,该插件将文档标记化为有意义的单词。有关更多信息,请参见第12.9.9节“ MeCab全文分析器插件”。
ngram是n来自给定文本序列的连续 字符序列。ngram解析器将文本序列标记为连续的n字符序列。例如,您可以使用ngram全文分析器将“ abcd ”标记为不同的值n。
n=1: 'a', 'b', 'c', 'd'
n=2: 'ab', 'bc', 'cd'
n=3: 'abc', 'bcd'
n=4: 'abcd'
ngram全文语法分析器是内置的服务器插件。与其他内置服务器插件一样,启动服务器时会自动加载该插件。
第12.9节“全文搜索功能”中 描述的全文搜索语法 适用于ngram解析器插件。本节介绍了解析行为的差异。全文相关的配置选项,除了最小和最大字长选项(innodb_ft_min_token_size, innodb_ft_max_token_size, ft_min_word_len, ft_max_word_len)也适用。
配置ngram令牌大小
ngram解析器的默认ngram令牌大小为2(bigram)。例如,令牌大小为2时,ngram解析器将字符串“ abc