mysql - 全文索引 - 什么是自然语言模式

时间:2013-05-16 14:53:59

标签: mysql full-text-search

我对这篇文章有疑问:http://dev.mysql.com/doc/refman/5.6/en/fulltext-natural-language.html

我在这里找到了像

这样的查询
SELECT * FROM articles
WHERE MATCH (title,body)
AGAINST ('database' IN NATURAL LANGUAGE MODE);

我不明白的是什么是自然语言模式?我找不到确切的定义。

any1可以提供定义吗?它是如何工作的?

1 个答案:

答案 0 :(得分:15)

MySQL的自然语言全文搜索旨在将搜索查询与语料库匹配,以找到最相关的匹配项。所以假设我们有一篇文章包含“我喜欢馅饼”,我们有文件d1,d2,d3(你的情况下是数据库)。文件1和2分别涉及体育和宗教,文件3涉及食品。您的查询,

  

SELECT * FROM articles WHERE MATCH(title,body)AGAINST('database'IN   自然语言模式);

将返回d3,然后是d2,d1(d2的随机顺序,d1取决于哪个更接近于文章)因为d3与文章最匹配。

MYSQL使用的基础算法可能是tf-idf算法,其中tf代表术语频率,而idf代表逆文档频率。正如它所说的那样,只是文章中文字w出现的次数。 idf基于单词出现的文档数量。因此,许多文档中出现的词语无助于决定最具代表性的文档。 tf * idf的乘积产生分数越高,单词代表文档越好。所以'pie'只会出现在文档d3中,因此会有很高的tf和高的idf(因为它是反向的)。然而'''会有很高的tf但是低的idf会使tf失效并得分较低。

MYSQL自然语言模式还带有一组停用词(a,a,some等),并删除少于4个字母的单词。这可以在您提供的链接中看到。

  

全文搜索中会忽略某些字词:

Any word that is too short is ignored. The default minimum length of words that are found by full-text searches is three characters for
     

InnoDB搜索索引,或MyISAM的四个字符。你可以控制   通过在创建配置选项之前设置配置选项来实现截止   index:InnoDB搜索的innodb_ft_min_token_size配置选项   索引,或my_AM的ft_min_word_len。

Words in the stopword list are ignored. A stopword is a word such as “the” or “some” that is so common that it is considered to have
     

零语义值。有一个内置的禁用词列表,但它可以   被用户定义的列表覆盖。禁用词列表和相关   InnoDB搜索索引的配置选项不同   MyISAM的。停用词处理由配置控制   选项innodb_ft_enable_stopword,innodb_ft_server_stopword_table,   InnoDB搜索索引的innodb_ft_user_stopword_table和   用于MyISAM的ft_stopword_file。

相关问题