我在索引 ( weight
) 中添加了一个新字段,它是我想要排序的基于整数的值。
我将它添加到选择中并将其调用为sql_attr_uint
当我在查询中调用它时,它会显示出来。但是,当我尝试对其进行排序时,我会遇到奇怪的行为。它总是按记录 ID 排序。所以Order on ID
等同于Order on Weight
。
我已经非常彻底地检查了索引,但找不到原因,狮身人面像会以某种方式自动对记录 ID 进行排序吗?
我知道细节相当稀疏,但我希望在要求任何人进一步深入研究之前,我缺少一些基本的解释。
作为更新:我不相信 ID 字段排序已被“强加”在索引上,因为我可以按 # 其他字段排序,包括整数和文本,并且结果的返回与 ID 值无关(例如,按姓氏排序 Record #100Adams
将在 Record #1 之前Wyatt
)
然而,无论是 asc 还是 desc ,orderingWeight
总是返回与 ordering 相同的 order 。ID
关于字段或索引不存在或不可排序的错误,不忽略订单请求(desc
和asc
工作)它只是忽略该特定字段值并使用 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
一旦对两者进行索引排序id
并value_Weight
返回相同的排序,而权重和 ID 是不相关的。