mysql显示得分1到10

时间:2012-05-30 21:29:50

标签: php mysql mysql5

如何在查询中显示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个关键字(这只是一个示例),那么我想显示10个中的9个作为分数。

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

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

等等。

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

好的,我想我明白了。

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

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