Mysql停止单词和匹配

Mysql停止单词和匹配,mysql,Mysql,我希望有人能帮我查询MYSQL stopwords和match 如果我运行以下mysql查询: CREATE TABLE `tbladvertstest` (`id` int(11) unsigned NOT NULL AUTO_INCREMENT,`SearchCompany` varchar(250) DEFAULT NULL,PRIMARY KEY (`id`),FULLTEXT KEY `SearchCompany` (`SearchCompany`)) ENGINE=MyISAM DE

我希望有人能帮我查询MYSQL stopwords和match

如果我运行以下mysql查询:

CREATE TABLE `tbladvertstest` (`id` int(11) unsigned NOT NULL AUTO_INCREMENT,`SearchCompany` varchar(250) DEFAULT NULL,PRIMARY KEY (`id`),FULLTEXT KEY `SearchCompany` (`SearchCompany`)) ENGINE=MyISAM DEFAULT CHARSET=utf8;


INSERT INTO `tbladvertstest` (`id`, `SearchCompany`) VALUES (NULL, 'All Bar One');


SELECT * FROM `tbladvertstest` WHERE MATCH (`SearchCompany`) AGAINST ('"All Bar One"' IN BOOLEAN MODE) 

我认为查询将返回所有结果,其中“SearchCompany”为“all Bar One”,但返回的行数为零。我假设Mysql单独检查每个单词,而不是查看完整的字符串,而stopwords和minium单词长度是它不返回任何结果的原因?我说的对吗?如果是这样,是否可以让MySQL将其视为字符串?

您需要指定运算符。。。如果您需要整个短语,则需要在引号中:

SELECT * FROM table WHERE MATCH(SearchCompany) AGAINST ('+"All Bar One"' IN BOOLEAN MODE);

默认情况下,MySQL全文索引不会索引长度小于4个字符的单词(对于MyISAM表)。如果要索引3个字母的单词,需要将系统变量(或InnoDB)设置为3或更低的值,然后重新启动mysqld并重建表

例如,将其添加到my.cnf文件的
[mysqld]
部分:

ft_min_word_len=3
然后重新启动mysqld

然后运行此命令重新生成表:

alter table `tbladvertstest` force;
现在您的查询应该可以工作了:

mysql > SELECT * 
    -> FROM `tbladvertstest` 
    -> WHERE MATCH (`SearchCompany`) AGAINST ('+"All Bar One"' IN BOOLEAN MODE) ;
+----+---------------+
| id | SearchCompany |
+----+---------------+
|  1 | All Bar One   |
+----+---------------+
1 row in set (0.00 sec)

提供有关表的更多详细信息。如果要查看
SearchCompany
是否等于'All Bar One'“`,你为什么需要匹配?请先读一下这篇文章,你确定零行返回时没有任何错误吗?我已经用完整的代码更新了我的问题。”。我想Jan Zeiseweis linked已经证实了stop words和ft_min_words_len适用的事实。您好,根据我修改过的问题,我尝试了以下方法:选择*从tbladvertstest,其中匹配(
SearchCompany
)与(“+”布尔模式下的“所有条1”);但是没有运气?