MySQL全文搜索总是有0个结果?

时间:2010-11-08 23:39:34

标签: mysql sql full-text-search

我已经读过使用全文搜索比使用LIKE %%更快。我已经更新了我的脚本,但似乎总是有0个结果。

SELECT *,
MATCH(pages) AGAINST('doodle') AS score
FROM books
WHERE MATCH(pages) AGAINST('doodle')
ORDER BY score DESC 

$ keyword超过4个字符,我将pages列索引为全文。我在页面栏中以“yankee doodle”格式“涂鸦”。

我也试过这个

SELECT *,
MATCH(pages) AGAINST ('doodle' IN BOOLEAN MODE) AS score 
FROM books 
WHERE MATCH(pages) AGAINST ('doodle' IN BOOLEAN MODE)"; 

它们都不起作用:\

1 个答案:

答案 0 :(得分:13)

全文搜索有一些奇怪的怪癖。

例如,this page的最后几段中描述的行为可能是您遇到问题的原因:

  

....例如,虽然前面显示的文章表的每一行都有“MySQL”这个词,但搜索这个词不会产生任何结果:

mysql> SELECT * FROM articles
    -> WHERE MATCH (title,body) AGAINST ('MySQL');
 Empty set (0.00 sec)
     

搜索结果为空,因为“MySQL”一词至少存在于50%的行中。因此,它被有效地视为一个禁用词。对于大型数据集,这是最理想的行为:自然语言查询不应返回1GB表中的每隔一行。对于小型数据集,可能不太理想。

这里的答案是添加更多行,或使用布尔搜索。

如果您需要加权搜索结果,请查看链接页面上的评论Posted by John Craig on December 16 2009 7:01pm以获取变通方法建议。