mysql全文索引 插件_MySQL 全文检索 ngram插件

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

什么是N-gram?

在全文索引中,n-gram就是一段文字里面连续的n个字的序列。例如,用n-gram来对”信息系统”来进行分词,得到的结果如下:

如何在InnoDB中使用N-gram Parser?

N-gram parser是默认加载到MySQL中并可以直接使用的。我们只需要在DDL中创建全文索引时使用WITH PARSER ngram。

我们引入了一个新的全局变量叫ngram_token_size。由它来决定n-gram中n的大小,也就是词的大小。它的默认值是2,这个时候,我们使用的是bigram。它的合法的取值范围是1到10。现在,我们很自然会想到一个问题:实际应用中应该如何设置ngram_token_size值的大小呢?当然,我们推荐使用2。但是你也可以通过如下这个简单的规则来可以选择任何合法的值:设置到你希望能查询到的最小的词的大小。如果你想查询到单个字,那么我们需要设置为1。 ngram_token_size的值设置的越小,全文索引占用的空间也越小。一般来说,查询正好等于ngram_token_size的词,速度会更快,但是查询比它更长的词或短语,则会变慢。

N-gram分词处理

N-gram parser和系统默认的全文索引parser有如下不同点:

无用词(stopword)处理:通常,对于一个新的词,我们会查找stopwords表,看是否有匹配的词。如果有,这个词就不会加入到全文索引中。但是在n-gram中,我们会查找stopwords表,看是否包含里面的词。这样处理的原因是,在中日韩的文本中,有很多没有意义的字符,词语和标点符号。比如,如果我们把‘的’加入到stopwords表中,那么对于句子‘信息的系统’,在默认情况下我们分词结果为‘信息’,‘系统’。其中‘息的’和‘的系’被过滤掉了。

我们可以通过查询INFORMATION_SCHEMA.INNODB_FT_INDEX_CACHE和INFORMATION_SCHEMA.INNODB_FT_TABLE_TABLE来查询哪些词在全文索引里面。这是一个非常有用的调试工具。如果我们发现一个包含某个词的文档,没有如我们所期望的那样出现在查询结果中,那么这个词可能是因为某些原因不在全文索引里面。比如,它含有stopword,或者它的大小小于ngram_token_size等等。这个时候我们就可以通过查询这两个表来确认。

在过去几个世纪的话流行的变化 版本1.1中的新增功能:*现在您可以通过用逗号分隔短语来比较短语*可以将开始年份设置为1500或1800 *删除了不必要的权限*更好的代码隐藏在我的眼里,我不敢相信类似的东西已经被制造出来了。 甚至不是Google(数据的所有者)。 因此,我将其作为个人用途使用; 认为其他人可能会觉得有用,所以我分享了它。 我们非常欢迎您通过建议代码,发送反馈等方式做出贡献。此工具不需要任何特殊权限或类似的权限。 该扩展程序不会从您那里收集任何数据。 自由使用。 该代码不可能比这更简单。 该工具的作用只是将您连接到“ Google Ngram Viewer”,该工具可查看给定单词的使用在过去如何增加或减少。 作为以英语为第二语言的人,我使用Ngrams的个人目的一直是检查我正在学习的新单词。 有时,单词很快就会过时; 在这种情况下,为了更好地选择单词,最好使用同义词。 该工具的快捷键是Alt + N。 打开它时,键入单词(您也可以键入单词组合和名称),然后按Enter。 ****************************************************** *********引用Google Ngram Viewer的常见问题解答:“我正在根据您的结果撰写论文。我如何引用您的工作?如果您要将这些数据用于学术出版物,请引用原始论文:Jean-Baptiste Michel *,Yuan Kui Shen,Aviva Presser Aiden,Adrian Veres,Matthew K.Gray,William Brockman,Google图书团队,Joseph P.Pickett,Dale Hoiberg,Dan Clancy,Peter Norvig,Jon Orwant,Steven Pinker,Martin A. Nowak和Erez Lieberman Aiden *。使用数百万本数字化图书对文化进行的定量分析。科学(在线印刷,出版时间:2010年12月16日) -语音标记:Yuri Lin,Jean-Baptiste Michel,Erez Lieberman Aiden,Jon Orwant,William Brockman,Slav Petrov。Google图书Ngram语料库的句法注释。计算语言学协会第50届年会论文集第2卷:演示我要发表的论文(ACL '12)(2012) 我的书/杂志/博客/演示文稿中的Ngram图。 您的许可条款是什么? Ngram Viewer图形和数据可以自由地用于任何目的,尽管感谢Google Books Ngram Viewer作为源,并包含指向http://books.google.com/ngrams的链接。” ****************************************************** ********* Copyleft 2014-15。所有错误均保留给开发人员:) 支持语言:English
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值