2

我正在使用 MySQL 5.5.31 我想使用 MATCH() 和 AGAINST() 函数。为此,我在 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);

它从包含单词“数据库”的表中返回所有三行。但是当我搜索像“the”这样的其他字符串时,它并没有返回任何东西。它返回空值。我不明白为什么会这样?此外,如果要搜索的字符串出现在标题列中,则返回 null。请问有人能解开我的这两个疑惑吗?提前致谢。

4

1 回答 1

1

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”之类的词,它非常常见,以至于被认为具有零语义值。有一个内置的停用词列表,但它可以被用户定义的列表覆盖。

于 2013-12-12T11:11:48.413 回答