首页 > 解决方案 > 如何在 MySQL 中使用 FULLTEXT 查询来返回与字符串匹配的所有结果?

问题描述

这是表格videos在此处输入图像描述

我目前有这个查询:

SELECT *, COUNT(history.v_id) AS videoCheck, MATCH (v_title, v_desc, v_tags) AGAINST ("%not%") AS relevance FROM videos LEFT JOIN history ON history.v_id = videos.v_id WHERE MATCH (v_title, v_desc, v_tags) AGAINST ("%not%") GROUP BY relevance DESC

我希望该查询返回包含字符串not的所有结果,但它只返回 1 个结果而不是 2 个。

让它返回所有匹配查询而不是只返回 1 的最佳方法是什么?


编辑1:

如果我使用WITH QUERY EXPANSION修饰符,它确实返回 2 个结果,但这仍然不是我想要的,因为如果字符串更改为例如asd,它也只返回 2 个结果,而不是存储的更多结果。

编辑2:

查询LIKE

SELECT *, COUNT(history.v_id) AS videoCheck FROM videos LEFT JOIN history ON history.v_id = videos.v_id WHERE CONCAT_WS(v_tags, v_title, v_desc) LIKE :input GROUP BY history.v_id ORDER BY videoCheck DESC

标签: mysqlsql

解决方案


这个查询似乎正在做我想要的:

SELECT *, MATCH (v_title, v_desc, v_tags) AGAINST (:input) AS relevance  FROM videos WHERE MATCH (v_title, v_desc, v_tags) AGAINST (:inputWhere) ORDER BY relevance DESC

我不再需要了LEFT JOIN,因为我不再订购了videoCheck


推荐阅读