我什至不确定用正确的方式来表达这个问题。我有一个包含数千个图像 ID 的 SQLite 数据库。每张图片都标有一堆单词。这个想法是你在 UI 中选择一些单词,然后它会向你显示相应的图像。很简单。
我的图像标签表看起来像这样......
imageId | tags
____________________
1 red
1 green
2 blue
2 yellow
3 red
3 yellow
etc...
目前,我正在使用一个简单的 WHERE IN 来获取所有图像 ID,就像这样......
SELECT imageId FROM tagsTable WHERE tags IN ('red','green','blue')
...但现在我需要根据相关性对我获得的图像 ID 进行排名。因此,例如,如果我要求“红色”和“黄色”,我希望在结果中首先显示图像 ID 3,然后是 ID 的 1 和 2。
这似乎是一件很简单的事情,但我想不通?
最佳答案
SELECT imageId
FROM tagsTable
WHERE tags IN ('red','yellow')
GROUP BY imageId
ORDER BY COUNT(*) DESC
首先返回匹配最多的imageID。
关于mysql - 如何在 SQLite 中按相关性排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49070938/