首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Sphinxsearch维护sql排序

Sphinxsearch维护sql排序
EN

Stack Overflow用户
提问于 2013-08-28 19:00:50
回答 1查看 395关注 0票数 0

所以我有一个类似于这个https://stackoverflow.com/a/18462040/1768337的查询,正如您所看到的,行已经根据喜好进行了排序。假设我使用上面链接中的sql语句创建了一个索引。有没有一种方法可以精确地输出这条sql语句提供的内容?也就是说,维护sql语句中的排序集?我还尝试像下面这样对行进行排序,

代码语言:javascript
复制
source popular
{
    type            = mysql

    sql_host        = --------
    sql_user        = --------
    sql_pass        = --------
    sql_db          = --------
    sql_port        = 3306  # optional, default is 3306

    sql_query       = \
        SET @rank=0; \
        SELECT *, @rank := @rank + 1 AS rank \
        FROM \
         ( \
           SELECT p.id AS id, p.search AS search, COUNT(CASE WHEN li.date > DATE_SUB(CURDATE(), INTERVAL 1 DAY) THEN li.id END) AS daily_likes, COUNT(CASE WHEN li.date > DATE_SUB(CURDATE(), INTERVAL 7 DAY) THEN li.id END) AS weekly_likes, COUNT(li.id) AS total_likes \
           FROM `photo` p \
           JOIN `like` li \
               ON p.id = li.photo_id \
           WHERE \
             li.date > DATE_SUB(CURDATE(), INTERVAL 30 DAY) \
           GROUP BY \
             p.id \
          ) AS dt \
        ORDER BY \
           case when daily_likes > 3 then daily_likes else 0 end desc, \
           case when weekly_likes > 5 then weekly_likes else 0 end desc, \
           total_likes DESC \
        LIMIT 30

    sql_attr_uint       = daily_likes
    sql_attr_uint       = weekly_likes
    sql_attr_uint       = total_likes
    sql_attr_uint       = rank

    sql_query_info      = SELECT * FROM photo WHERE id=$id
}

我尝试了一下,这样以后就可以使用像$s->SetSortMode(SPH_SORT_EXTENDED, '@relevance DESC, rank ASC');这样的东西了。然而,似乎自定义变量在sphinx中不起作用。

所以我的问题是用sphinx (php api)来索引一条sql语句,并准确地输出它--甚至要保持sql的顺序。

EN

回答 1

Stack Overflow用户

发布于 2013-08-29 00:19:25

好的,感谢barryhunter (救世主)帮助解决了这个问题。正如他在评论中提到的那样,SET应该在sql_query_pre中。所以我的conf文件看起来像这样:

代码语言:javascript
复制
sql_query_pre   = SET @rank=0
sql_query       = \
    SELECT *, @rank := @rank + 1 AS rank \
    FROM \
     ( \
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18486054

复制
相关文章

相似问题

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