返回mySQL FULLTEXT搜索结果的子集

时间:2013-07-24 14:20:00

标签: mysql sql full-text-search

我正在尝试将FULLTEXT搜索与简单的WHERE结合起来,而且我得到的结果太多了。

我正在通过在phpmyadmin中运行SQL进行测试,然后再将其转换为存储过程。

当我跑步时:

SELECT * 
FROM mytable 
WHERE MATCH(title,designer_manufacturer,countryoforigin_materials,additional_info)
AGAINST ('+glass +vase' IN BOOLEAN MODE)

(为了获得目录中的所有玻璃花瓶)它工作正常,给我14个我期望的结果。

mytable中有另一个字段“groupID”,其值为A / B / C.我希望按组过滤这些结果 - 或者相反,只在一个组上运行匹配。

当我跑步时

SELECT *, 
MATCH (title,designer_manufacturer,countryoforigin_materials,additional_info) 
AGAINST ('+glass +vase' IN BOOLEAN MODE)
FROM mytable WHERE groupID = 'B'

它返回B组中的所有!所以我试过

SELECT *, 
MATCH (title,designer_manufacturer,countryoforigin_materials,additional_info) 
AGAINST ('+glass +vase' IN BOOLEAN MODE)
AS SCORE
FROM mytable WHERE groupID = 'B'
ORDER BY SCORE DESC

它仍会返回所有内容,它只是将我想要的结果放在首位。

如何将结果限制为我想要的结果?这很重要,因为我真的需要把它们放在与“BY SCORE”不同的顺序中。

谢谢。

Red Owl

ETA:已回答

根据@Vatev的建议,我使用了:

SELECT * 
FROM mytable
WHERE MATCH (title, designer_manufacturer,   countryoforigin_materials, additional_info)
AGAINST ('+glass +vase' IN BOOLEAN MODE)
AND groupID =  'B'

得到了我想要的东西!非常感谢你。

0 个答案:

没有答案