mysql全文搜索中不相关的结果



我设置了一个Mysql表,用于跨标题和内容(正文)列进行全文搜索。

我试图把最相关的结果放在最上面,但我得到了很多垃圾。

我有3个全文索引,一个用于标题,一个用于正文,一个用于标题和正文,因此我可以执行以下查询:

SELECT id, url, title, body, earliestCapture, responseYear, urlScore,
MATCH (title) AGAINST ("jurassic park" IN BOOLEAN MODE) AS titleScore,
MATCH (body) AGAINST ("jurassic park" IN BOOLEAN MODE) AS bodyScore,
(SELECT (titleScore * 100 + bodyScore)) AS finalscore
FROM Entries
WHERE MATCH (title,body) AGAINST ("jurassic park" IN BOOLEAN MODE) 
ORDER BY finalScore DESC LIMIT 0,1000;

我正在尝试将标题的分数乘以100,以将标题中包含该术语的实例放在顶部。

这确实有帮助,但如果正文中有park这个词重复了很多次,即使没有Jurassic这个词出现一次,那么这一行将被推到搜索结果的顶部。

一个很好的例子是当我搜索"英特尔奔腾"时。有几行正文在情报/信息上下文中使用intel这个词,而不是公司名称,这个词重复了数百次,即使没有pentium这个词的实例,这些页面总是在顶部。

我真的被这个惹恼了。有人知道如何改进搜索结果吗?

谢谢!

您必须在两个搜索条件后面加上+,以便只显示两个都见manual

的结果。
SELECT id, url, title, body, earliestCapture, responseYear, urlScore,
MATCH (title) AGAINST ("+jurassic +park" IN BOOLEAN MODE) AS titleScore,
MATCH (body) AGAINST ("+jurassic +park" IN BOOLEAN MODE) AS bodyScore,
(SELECT (titleScore * 100 + bodyScore)) AS finalscore
FROM Entries
WHERE MATCH (title,body) AGAINST ("+jurassic +park" IN BOOLEAN MODE) 
ORDER BY finalScore DESC LIMIT 0,1000;

最新更新