全文搜索没有找到任何东西

时间:2012-06-11 18:25:30

标签: sql full-text-search phpmyadmin myisam

**编辑* *

好吧所以我找到了problam,这是搜索的最小字长是4,我把它改为3但是现在它只找到第1行数据而不是第2行数据...

-----原创问题:----

我的phpmyadmin上有一个MyISAM表,如下所示:

table name: `users`
coulmn name: `name`
row 1 data: 'dan'
row 2 data: 'dan252'

(这只是它的重要部分)

现在名称是全文索引字段,即时通讯使用此查询:

SELECT * FROM `users` WHERE MATCH(`name`) AGAINST('dan')

但phpmyadmin返回:

MySQL returned an empty result set (i.e. zero rows). ( Query took 0.0004 sec )

为什么它找不到任何东西?

*的 修改 *

好吧所以我找到了problam,这是搜索的最小字长是4,我把它改为3但是现在它只找到第1行数据而不是第2行数据...

3 个答案:

答案 0 :(得分:1)

MATCH仅适用于FULLTEXT指示的列。并且FULLTEXT指示仅适用于MyISAM表。

其次,'dan'可能MATCH上使用too short

第三,如果您的搜索字词与行的50%以上匹配,则该字词过于常见且搜索失败。

阅读here

答案 1 :(得分:0)

试试这个。

SELECT * FROM users WHERE MATCH(name)AGAINST('dan');

我猜你在tablename和MATCH中使用了撇号。这是错的。尝试一下,让我知道这是否有效。

答案 2 :(得分:0)

我猜你试图用'dan'来回归所有人 你可以试试LIKE命令。

SELECT * FROM users WHERE name LIKE '%dan%'

那将返回'dan'和'dan252'和(如果他在表中)'123dan456'。

您也可以尝试

SELECT * FROM users Match(name) AGAINST('+dan*')

这应该返回相同的东西,可能更有效率。 如果您只是尝试使用'dan',那么请使用@Kirishna说。

SELECT * FROM users WHERE MATCH (name) AGAINST ('dan')