我有sphinx的产品索引。我按类别搜索和过滤。我通过“id desc”排序并使用该设置我看到最后的产品。多数民众赞成。但真正的问题是:
我想表明没有列出一个类别和另一个类别(因为我的产品添加了一个,而不是另一个)。我想列出id desc(最后一个产品)和洗牌类别。
通过设计:
id category_id name
-- ----------- ----
1 1 a
2 1 b
3 1 c
4 2 d
5 2 e
6 2 f
现在(订单):
f-e-d-c-b-a
但我想要
f-c-e-b-d-a
我的狮身人面像代码:
$sphinx = new SphinxClient();
$sphinx->SetServer("127.0.0.1", 9312);
$sphinx->SetMatchMode(SPH_MATCH_EXTENDED2);
$sphinx->SetRankingMode(SPH_RANK_WORDCOUNT);
$sphinx->SetSortMode(SPH_SORT_EXTENDED, 'id DESC');
$sphinx->SetArrayResult(true);
$filtersArr = $this->getSphinxFilterParams($params);
foreach ($filtersArr['filter'] as $attr => $val)
{
$sphinx->SetFilter($attr, $val[0], $val[1]);
}
无论如何要做到这一点?
答案 0 :(得分:1)
狮身人面像论坛上有一个关于此的话题: http://sphinxsearch.com/forum/view.html?id=10546
虽然很可能使用sphinxAPI(通过未记录的setOuterSelect),但建议迁移到SphinxQL,因为它最容易使用。