我正在尝试将 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
它仍然返回所有内容,它只是将我想要的结果放在首位。
如何将结果限制为我想要的结果?这很重要,因为我真的需要按照与“按分数”不同的顺序排列它们。
谢谢你。
红猫头鹰
预计到达时间:已回答
在@Vatev 的建议下,我使用了:
SELECT *
FROM mytable
WHERE MATCH (title, designer_manufacturer, countryoforigin_materials, additional_info)
AGAINST ('+glass +vase' IN BOOLEAN MODE)
AND groupID = 'B'
并且得到了(而且只有)我想要的东西!非常感谢。