2012-06-01 73 views
1

我使用MATCH AGAINST来针对数据库中的多个字段进行搜索,但遇到了结果问题。MySQL MATCH AGAINST的问题

查询是:

MATCH(productname, stockcode, productdescription, additional_1, additional_2, additional_3, additional_4, additional_5, additional_6, additional_7, additional_8) AGAINST ('red* tile*' IN BOOLEAN mode) 

从查询,我想这两个“红色%”或“瓦%”的结果,但此函数返回这里所说的“必要”的记录被包括在内,这是我不想要。

可以这样做吗?

+0

不要返回的记录包含'瓦*'? – Quassnoi

回答

2

最有可能的是,您将ft_min_word_len设置为默认值4

red在此设置中未获得索引或匹配,只是在查询中被忽略。

ft_min_word_len更改为更低的值,如果您想匹配red(需要重建索引,如果有的话)。

请参阅this fiddle

更新:

如果你想匹配的两个单词,用这个:

AGAINST ('+red* +tile*' IN BOOLEAN mode) 
+0

我将此值更改为2,但获得了相同的结果... – JezB

+0

@JezB:如果您在字段上具有全文索引,则需要重建它。 – Quassnoi

+0

这是修复它 - 谢谢你!现在只需把数据排序:) – JezB