为什么MATCH()函数没有给出结果



我使用的是MySQL 5.5.31我想使用MATCH()和AGINST()函数。为此,我在phpMyAdmin中运行以下查询:

CREATE TABLE articles (
       id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
       title VARCHAR(200),
       body TEXT,
       FULLTEXT (title,body)
     ) ENGINE=MyISAM;

INSERT INTO articles (title,body) VALUES
     ('MySQL Tutorial','DBMS stands for DataBase ...'),
     ('How To Use MySQL Well','After you went through a ...'),
     ('Optimizing MySQL','In this tutorial we will show ...'),
     ('1001 MySQL Tricks','1. Never run mysqld as root. 2. ...'),
     ('MySQL vs. YourSQL','In the following database comparison ...'),
     ('MySQL Security','When configured properly, MySQL ...');
     ('MySQL table','The database is very large');

为了搜索字符串"数据库",我运行以下查询:

SELECT * FROM articles
     WHERE MATCH (title,body)
     AGAINST ('database' IN NATURAL LANGUAGE MODE);

它返回了包含单词"database"的表中的所有三行。但当我搜索其他字符串(如"the")时,它不会返回任何内容。它返回null。我不明白为什么会发生这种事?此外,如果要搜索的字符串出现在title列中,则返回null。有人能澄清我的这两个疑虑吗?提前谢谢。

MySQL在全文模式下的搜索限制为最少4个字符。

http://dev.mysql.com/doc/refman/5.1/en/fulltext-fine-tuning.html

ft_min_word_length变量可以更改。

这是完整的停止语列表,供将来参考。

http://dev.mysql.com/doc/refman/5.5/en/fulltext-stopwords.html

什么是权宜之计?http://dev.mysql.com/doc/refman/5.1/en/fulltext-natural-language.html

一些单词在全文搜索中被忽略:

停止语列表中的单词将被忽略。"停止语"是指"the"或"some"是如此常见,以至于它被认为为零语义价值。有一个内置的停止语列表,但它可以被用户定义的列表覆盖。

相关内容

  • 没有找到相关文章

最新更新