zoz*_*ozo 8 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);
Run Code Online (Sandbox Code Playgroud)
我不明白的是自然语言模式究竟是什么?我找不到确切的定义.
any1可以提供定义吗?它是如何工作的?
Sam*_*vic 16
MySQL的自然语言全文搜索旨在将搜索查询与语料库匹配,以找到最相关的匹配.所以假设我们有一篇文章包含"我爱馅饼",我们有文件d1,d2,d3(你的情况下是数据库).文件1和2分别涉及体育和宗教,文件3涉及食品.您的查询,
SELECT*FROM articles WHERE MATCH(title,body)AGAINST('database'IN NATURAL LANGUAGE MODE);
将返回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个字母的单词.您可以在您提供的链接中看到.
在全文搜索中会忽略某些单词:
Run Code Online (Sandbox Code Playgroud)Any word that is too short is ignored. The default minimum length of words that are found by full-text searches is three characters forInnoDB搜索索引,或MyISAM的四个字符.您可以通过在创建索引之前设置配置选项来控制截止:InnoDB搜索索引的innodb_ft_min_token_size配置选项或MyISAM的ft_min_word_len.
Run Code Online (Sandbox Code Playgroud)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搜索索引的配置选项innodb_ft_enable_stopword,innodb_ft_server_stopword_table和innodb_ft_user_stopword_table以及MyISAM搜索索引的ft_stopword_file控制.
| 归档时间: |
|
| 查看次数: |
6969 次 |
| 最近记录: |