1

我刚刚在 sphinx 中的索引中添加了 price 和 sale_price 属性,使用 , 似乎排序很好$s->SetSortMode(SPH_SORT_EXTENDED,'price desc');,但是在几页之后价格又回升了。

例如,第一页显示价格为 1,000 至 800 美元,第二页显示价格为 800 至 500 美元,第三页显示价格为 500 至 200 美元,然后第四页不知何故显示 300 至 100 美元或一些随机的价格组合。

我想知道狮身人面像是否可能仍在按重量事件排序,尽管我没有明确告诉它......这听起来像问题吗?

我也愿意放纵任何其他想法。此外,我肯定重新索引并旋转了所有索引,并且 sphinx 没有返回任何错误。

在此先感谢您的帮助。

以下是我目前正在使用的所有选项:(@barryhunter 的更新)

$s->SetMatchMode(SPH_MATCH_BOOLEAN);
$s->SetSortMode(SPH_SORT_EXTENDED,'price desc');
$s->SetFilter("is_private", array(0));
$s->SetFilter("is_deleted", array(0));
$s->SetFilter("site_type", array(1));
$s->SetLimits($start, $count);
4

2 回答 2

1

@barryhunter 在评论中提出了答案!

我在 mysql 中添加了一个新的整数 col,sort_price并用(price * 100). 然后我在狮身人面像中添加了那个col,sql_attr_uint并且排序工作完美!

$s->SetSortMode(SPH_SORT_EXTENDED,'sort_price desc');

谢谢巴里:)

于 2013-10-31T16:26:10.473 回答
0

猜测一下,您使用的是 Group-By 吗?

如果是这样,SetSortMode则不设置最终结果的顺序。代替setGroupBy的第三个参数。

阅读有关 Group by 的文档,了解这两种排序顺序是如何工作的。

否则您存储价格的列类型是什么?也许它没有正确地转换为狮身人面像浮点类型。

于 2013-10-29T18:52:35.783 回答