如何在查询中显示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个作为一些关键字匹配的得分。
等等。
答案 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
如果我能写得更好,请告诉我。