MySQL 显示得分 1 到 10



如何在查询上显示 1 到 10 的分数。

例如,我得到 10 条记录,我想与

10 条记录匹配最高记录,依此类推。

SELECT DISTINCT c.id, c.title, cv.title2 , match ( c.title, c.title2, c.title3, c.title4 ) against ('Support' IN BOOLEAN MODE) AS score
FROM table1 AS c 
WHERE match ( c.title, c.title2, c.title3, c.title4 ) against ('Support' IN BOOLEAN MODE)

当我进行搜索时,我的数据库会返回一组结果。

如果关键字匹配 c.title、c.title2、

c.title3、c.title4 中的 50 个关键字(这只是一个例子),那么我想显示 10 个中的 10 个作为分数,并说这是一个完美的匹配。

如果关键字匹配 c.title、c.title2、c.title3、c.title4 中的 45 个关键字(这只是一个例子),那么我想显示 9 个(满分 10 个)作为分数。

如果关键字匹配 c.title、c.title2、c.title3、c.title4 中的 30 个关键字(这只是一个例子),那么我想显示 7 个(满分 10 个)作为分数,有些是完美的。

如果关键字与 c.title、c.title2、c.title3、c.title4 中的 2 个关键字匹配(这只是一个例子),那么我想显示 1 个中的 10 个作为某些关键字匹配的分数。

等等。

我认为你只是错过了明显的解决方案。只需按分数排序...

SELECT DISTINCT c.id, c.title, cv.title2 , match ( c.title, c.title2, c.title3, c.title4 ) against ('Support' IN BOOLEAN MODE) AS score
FROM table1 AS c 
WHERE match ( c.title, c.title2, c.title3, c.title4 ) against ('Support' IN BOOLEAN MODE)
ORDER BY score DESC
好的,

我想我明白了。

SELECT DISTINCT c.id, c.title, cv.title2 , (match ( c.title, c.title2, c.title3, c.title4 ) AGAINST('desktop') * 4.5 )  AS score
FROM job
WHERE
match ( c.title, c.title2, c.title3, c.title4 ) AGAINST('desktop')
ORDER BY score DESC

如果我能写得更好,请告诉我。

相关内容

  • 没有找到相关文章

最新更新