我添加了一個新的字段到我的索引(weight
),這是一個基於整數的值我想排序。獅身人面像似乎強制ID的訂單?
我把它添加到選擇和調用它作爲sql_attr_uint
當我把它在我的查詢它顯示了。但是,當我試圖排序它時,我會得到奇怪的行爲。它總是按照記錄ID排序。所以Order on ID
與Order on Weight
相同。
我已經檢查了索引非常徹底,無法找到一個原因,爲什麼,不知怎的,獅身人面像自動排序記錄ID?
我知道細節相當稀疏,但我希望有一些基本的解釋,我要求任何人深入鑽研之前,我失蹤了。
作爲更新:我不相信ID字段排序已被無意中「索引」在索引上,因爲我可以通過其他字段排序,無論是整數還是文本,結果都會獨立返回ID值(例如,排序上的姓名記錄#100 Adams
會前記錄#1 Wyatt
)
上Weight
然而訂貨總是返回相同的順序由ID
訂貨無論是ASC或DESC。沒有關於字段或索引不存在或可排序的錯誤,不忽略訂單請求(desc
和asc
工作),它只是忽略該特定字段值並使用該ID代替。
進一步更新:重量值通過索引的加入到由斯芬克斯以下面的方式編制索引的主表:
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是無關的。
我不知道它是否只是名稱「重量」的問題。這就是斯芬克斯在全文匹配時用於動態計算權重的情況。 – barryhunter
哦,剛剛看到第二次編輯。所以,你的「權重」屬性就是一個MVA(多值屬性) - 即使你只輸入一個值。不知道你可以直接按MVA排序,因爲通常它會是一個列表,所以按列表排序有點棘手。你必須在主sql_query中加入'JOIN'才能使其成爲一個普通的單一屬性 – barryhunter
@barryhunter即使我使用完全不同的名稱,也會遇到同樣的問題 – user3649739