【问题标题】:mysql fulltext search sort best results then sort again by other itemmysql全文搜索排序最佳结果然后按其他项目再次排序
【发布时间】:2013-10-02 11:21:35
【问题描述】:
"SELECT *, 
    MATCH(md.keywords) AGAINST('$meta[keywords]') AS score
    FROM 
        meta_data AS md 
    INNER JOIN
        sites AS si ON md.domain = si.domain
    WHERE
        MATCH(md.keywords) AGAINST('$meta[keywords]')
    ORDER BY score DESC
    LIMIT 25"

我生成此查询是为了通过全文关键字搜索找到最佳匹配结果。现在我想按查看次数最多的条目再次对这些结果进行排序。视图也存储在站点 (si.views) 中的 mysql 数据库中。

如何先按最佳匹配分数对结果进行排序,然后再按观看次数对这 25 个最佳结果进行排序?我认为这将通过 Grouping 以某种方式完成,但我不知道如何使其工作。帮助将不胜感激。谢谢,

【问题讨论】:

    标签: php mysql sorting search full-text-search


    【解决方案1】:
    select * from 
    (
        SELECT *, 
        MATCH(md.keywords) AGAINST('$meta[keywords]') AS score
        FROM 
            meta_data AS md 
        INNER JOIN
            sites AS si ON md.domain = si.domain
        WHERE
            MATCH(md.keywords) AGAINST('$meta[keywords]')
        ORDER BY score DESC
        LIMIT 25
    ) x
    order by x.views
    

    【讨论】:

    • 嗯,我收到了他的错误信息:警告:PDO::query() [pdo.query]: SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'id' in...
    • 你应该用名字来命名你想要选择的列,而不是SELECT *, MATCH...
    • 好点,谢谢。但现在我得到这个错误: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'x.views' in 'order Clause'
    • 您还必须将views 列放在内部选择中:select si.views, ...
    猜你喜欢
    • 2017-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-18
    • 2015-10-06
    • 2012-11-09
    相关资源
    最近更新 更多