首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mySQL搜索/匹配()与()帮助

mySQL搜索/匹配()与()帮助
EN

Stack Overflow用户
提问于 2010-07-31 23:31:07
回答 1查看 909关注 0票数 0

我有一个关于歌曲标题的数据库。每个歌曲标题都有一个指定的整数分数。分数越高,它在我的网站上排名就越高。

因此,如果"Lady扑克脸“的得分为23039,而"Eminem - Not”的得分为13400,Lady将高于Eminem。

当然,这是通过一个简单的顺序来完成的。

然而,我的网站也有一个搜索功能,人们可以输入关键字短语来返回歌曲标题列表。我对()查询执行了一个MATCH(),如下所示:

方法#1

代码语言:javascript
复制
SELECT * FROM links MATCH(songtitle) AGAINST({the keyword}) LIMIT 5';

这是可行的,但我想显示这5个结果的顺序,他们的分数。但是,如果我执行此查询,则:

方法#2

代码语言:javascript
复制
SELECT * FROM links MATCH(songtitle) AGAINST({the keyword}) ORDER BY score DESC LIMIT 5';

那么关联的顺序就完全失去了。我想按分数和相关性来排序返回的结果。

以此示例数据集和场景为例:

数据集:

代码语言:javascript
复制
song title                  |       score
pink - sober                |        2002
pink - funhouse             |        2001
pink floyd - high hopes     |        2000
pink floyd - on the run     |        1999
pink floyd - brain damage   |        1998
pink floyd - money          |        1997
pink floyd - time           |        1996

场景:

  • 当您使用上面的first方法搜索"Pink Floyd“时,您会收到5首看似随机的Pink Floyd歌曲。这很好,但是,我希望返回的歌曲按它们的分数降序排序。因此,在第一个方法中添加“”,这将给出上面的第二个方法.
  • 当您使用上面的第二方法搜索"Pink Floyd“时,您会按适当的顺序收到粉红Floyd歌曲(按score DESC排序),但现在您也会收到流行歌手" Pink”的两首歌曲,因为Pink数据库中有2首歌曲的得分高于任何一首Pink Floyd歌曲。

期望的结果:

  • 搜索"Pink Floyd“返回所有5首粉色floyd歌曲,按它们指定的分数降序排列。
  • 搜索“粉红”按其指定乐谱的降序返回这两首歌曲。如果粉红弗洛伊德的歌曲在两首粉色歌曲之后出现,那也没问题。

懂得我的意思吗?如果你需要澄清,请告诉我!

戴夫

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-07-31 23:42:01

看起来你可能能从比赛中得到“相关性”--看看此链接。考虑到这一点,你可以先根据相关性排序,然后再按分数排序。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3380185

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档