如何在sphinx / php中对结果进行排序?

时间:2018-01-11 08:30:39

标签: php sphinx

我的索引中有优先级列。我希望通过优先级DESC获得自动建议,但它不起作用

      $cl->SetMatchMode(SPH_MATCH_EXTENDED2);
      $cl->SetSortMode(SPH_SORT_EXTENDED, 'priority DESC');
      $cl->SetLimits(0, 10);
      $cl->SetGroupBy('alias_seq', SPH_GROUPBY_ATTR);
      $partialQueryStr = " @keyword ^$query*";
      $cl->AddQuery($partialQueryStr, 'autosuggest');
      $result = $cl->RunQueries();

狮身人面像指数

source autosuggest {
//..other fields/attrs
sql_attr_uint = priority
}

1 个答案:

答案 0 :(得分:1)

请注意,您还拥有GROUP BY。在GROUP BY查询中,SetSortMode设置GROUP顺序(即返回组中的哪一行) - 而不是最终结果集。

...你需要第三个参数($groupsort)到SetGroupBy http://sphinxsearch.com/docs/current.html#api-func-setgroupby

  

请注意,$ groupsort会影响最终结果集中的匹配顺序。排序模式(参见第9.3.3节“SetSortMode”)会影响组内匹配的排序,即。什么匹配将被选为该组中最好的一个。因此,您可以按匹配计数对组进行排序,并同时在每个组中选择最相关的匹配。

例如:

$cl->SetGroupBy('alias_seq', SPH_GROUPBY_ATTR, 'priority DESC');  

(请注意,它只接受扩展排序参数,因此您的现有排序可以重复)