MySQL按相关性排序 [英] MySQL order by relevance

查看:112
本文介绍了MySQL按相关性排序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个搜索表单,用于搜索站点内容表以拉回适当的结果.

I have a search form which searches a site content table to pull back appropriate results.

我想搜索标题和内容字段,并按相关性顺序拉回结果.标题具有最高优先级.

I want to search the title and content fields and pull back results in order of relevance. Giving highest priority to the title.

假设我们的表(tblContent)为

Say we had a table (tblContent) of

intID | strTitle    | txtContent

1     | Smith John  | Lorem Ipsum
2     | Lorem Ipsum | Lorem John Smith Ipsum
3     | John Smith  | Lorem Ipsum Lorem Ipsum
4     | Lorem Ipsum | Lorem Ipsum Lorem Ipsum
5     | Lorem Ipsum | Lorem Ipsum Smith John

您正在搜索约翰·史密斯",结果应按3、2、1、5、5的顺序返回

And you were searching for "John Smith" the results should come back in the order of 3,2,1,5

这怎么可能?

推荐答案

我设法对此颇为关注:

SELECT *, 
( (1.3 * (MATCH(strTitle) AGAINST ('+john+smith' IN BOOLEAN MODE))) + (0.6 * (MATCH(txtContent) AGAINST ('+john+smith' IN BOOLEAN MODE)))) AS relevance 
FROM content 
WHERE (MATCH(strTitle,txtContent) AGAINST ('+john+smith' IN BOOLEAN MODE) ) 
ORDER BY relevance DESC

这篇关于MySQL按相关性排序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆