全文搜索MySQL未按预期工作
根据mysql文档,它说在布尔搜索中添加+运算符将要求搜索包含单词 我使用了这个查询,但结果是一行只包含1个单词。 它产生了一行,其中包含“bonne”,但单词“bella”不在其中。 我100%确定我在搜索的专栏中添加了UFLLTEXT 我做错什么了吗全文搜索MySQL未按预期工作,mysql,Mysql,根据mysql文档,它说在布尔搜索中添加+运算符将要求搜索包含单词 我使用了这个查询,但结果是一行只包含1个单词。 它产生了一行,其中包含“bonne”,但单词“bella”不在其中。 我100%确定我在搜索的专栏中添加了UFLLTEXT 我做错什么了吗 SELECT article_title,MATCH(article_title) AGAINST ("+bonne +bella" IN BOOLEAN MODE) as relevance FROM feed_list W
SELECT article_title,MATCH(article_title) AGAINST ("+bonne +bella" IN BOOLEAN MODE) as relevance
FROM feed_list WHERE MATCH(article_title) AGAINST ("+bonne +bella" IN BOOLEAN MODE)
这样创建的表
CREATE TABLE `feed_list` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`article_title` varchar(255) NOT NULL,
PRIMARY KEY (`id`),
FULLTEXT KEY `article_title` (`article_title`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
试着这样做:
SELECT article_title,
MATCH(article_title) AGAINST ("+bonne +bella" IN BOOLEAN MODE) as relevance
FROM feed_list
ORDER BY relevance DESC
如果你不想得到太多的记录,你可以添加
LIMIT
。你可能想查看你的停止词列表。语言似乎不是英语,也许“bella”根本没有被编入索引。我的列表包含默认的开箱即用列表。那么它不应该什么也不返回吗?@renevdkooi我已经用你的表创建了数据库并添加了一些原始数据。通过你的查询,我得到了你想要的结果。现在我们来谈谈数据。请向我们展示您表中的原始数据,以及您的查询选择的结果记录。奇怪的是,我已经重新创建了表,现在它可以工作了(仍然给我行中有bella(相关性为1),所以这只会让情况变得更糟,因为我已经得到了所有结果。你想得到两个词都出现的记录吗?并按照这个顺序出现吗?不在乎顺序,但两个词都必须在其中。现在我得到了其中的任何一个词(我的理解是没有+运算符)添加+符号并没有达到预期效果。我错了,+符号会将+1添加到相关性?这意味着它仍然会同时返回两者,但相关性会上升?