狮身人面像显示每个类别中的一个或x个

时间:2014-06-25 06:34:25

标签: php sphinx

我有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]);
        }

无论如何要做到这一点?

1 个答案:

答案 0 :(得分:1)

狮身人面像论坛上有一个关于此的话题: http://sphinxsearch.com/forum/view.html?id=10546

虽然很可能使用sphinxAPI(通过未记录的setOuterSelect),但建议迁移到SphinxQL,因为它最容易使用。