狮身人面像似乎迫使ID下令?

时间:2016-10-06 20:14:06

标签: sphinx ord

我在索引(weight)中添加了一个新字段,这是一个我想要排序的基于整数的值。

我将其添加到选择中并将其作为sql_attr_uint

调用

当我在查询中调用它时,它会显示出来。然而,当我尝试对它进行排序时,我会遇到奇怪的行为。它总是对记录ID进行排序。因此Order on IDOrder on Weight相同。

我已经彻底检查了索引并且无法找到原因,是否会以某种方式对记录ID进行sphinx自动排序?

我知道细节相当稀疏但我希望在要求任何人进一步深入研究之前,我有一些基本的解释。

作为更新:我不相信ID字段排序已经被强加了#34;无论如何,因为我可以通过其他字段(整数和文本)进行排序,并且结果将独立于ID值返回(例如,对姓氏记录#100 Adams的排序将在Record#之前出现,因此无论如何在索引上1 Wyatt

然而,Weight上的排序始终返回与ID排序相同的顺序,无论它是asc还是desc。没有关于字段或索引不存在或可排序的错误,没有忽略订单请求(descasc工作)它只是忽略该特定字段值并改为使用ID。

进一步更新:权重值通过连接索引到由sphinx索引的主表,方式如下:

sql_attr_multi = uint value_Weight from ranged-query; \
SELECT j.id AS ID, IF(s.Weight > 0, 1, 0) AS Weight \
FROM Customers j \
INNER JOIN CustomerSources s ON j.customer_id = s.customer_id \
AND j.id BETWEEN $start AND $end \
ORDER BY s.id; \
SELECT MIN(id), MAX(id) FROM Customers

idvalue_Weight上的索引排序返回相同的排序,而权重和ID不相关。

1 个答案:

答案 0 :(得分:0)

啊,是的,来自 http://sphinxsearch.com/docs/current/mva.html

  

支持对MVA属性进行过滤和分组(但不排序)

无法按MVA属性排序(正如评论中所指出的那样,因为MVA通常包含很多值,因此按很多值排序相当'非常棘手'。

当你尝试时,它就会失败。因此,排序会回落到索引的“自然”顺序,通常是ID。

请改用sql_attr_unit http://sphinxsearch.com/docs/current/conf-sql-attr-uint.html (但可能意味着重写sql_query以在CustomerSources上执行加入)