【问题标题】:mysql display score 1 to 10mysql显示分数1到10
【发布时间】:2012-06-05 04:13:07
【问题描述】:

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

等等。

【问题讨论】:

  • 你不能在输出循环中添加 1 到 10 吗?
  • 我需要显示关键字匹配的分数
  • 你真的需要弄清楚你想做什么,因为这一定是我见过的最模糊的问题之一。例如。给出一个具有所需输出的示例数据集。这个分数应该是什么意思?只是出现的顺序?你总是得到正好 10 条记录吗?解释一下。

标签: php mysql mysql5


【解决方案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

【讨论】:

  • 我在网站上提交了 4 个文件,一个名为 score,其他文件是 c.id、c.title、cv.title2。但分数总是 1 或 0
  • 在这个查询中score是全文得分。
【解决方案2】:

好的,我想我明白了。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-15
    • 2013-01-06
    相关资源
    最近更新 更多