2016-03-20 29 views
1

我想按相关性排序match against,然后排列列。相关性搜索的效果很好,但是当我添加listing_time列时,搜索带来了看似随机结果的效果。MySql按照相关性排序,另一列

这是我sql

SELECT title, listing_time, match(description) against('+clip' in boolean mode) as rel 
FROM product order by rel desc 

这使86个结果在0.2秒内,所有的结果都relevance 1。大。

但是,当我尝试用另外cloumn

FROM product order by rel, listing_time desc 

相同的搜索,我得到1000个结果在27秒和他们的相关性是所有的地方。可怕。

那么我该如何正确地做到这一点?我想要相关的结果,我希望他们按listing_time排序。

回答

0

我猜测,你打算为order by为:

order by rel desc, listing_time desc 
-------------^ 

ascdesc适用于每个键。

在你的问题中没有什么表明这两个结果集会有所不同,例如我猜测查询不完全相同(比如说,由于joinwhere子句)。

+0

它也可以是“TOP X”或“FETCH FIRST X ROWS ONLY”或“LIMIT X”只会改变顺序而给出不同的结果。 – Hogan

+0

@霍根。 。 。 MySQL不支持这些结构。在MySQL中使用的版本是'limit',并且会在'order by'子句之后。 –

+0

建议不会改变结果。除了将rel desc更改为rel desc,listing_time desc之外,它是相同的查询。 – Eddy