使用SphinxQL,我想通过JSON MVA属性对结果进行排序,该属性具有与之关联的过滤条件。
例如,我有一个包含以下内容的索引:
event_id,
tickets
其中ticket是一个JSON数组,如:
[{"type":"Child","price":10.00},
{"type":"Adult","price":20.00},
...
{"type":"VIP" ,"price":50.00}
]
JSON数组中的条目按价格排序,允许按升序对过滤后的数据进行排序,如下所示:
SELECT event_id,
tickets,
tickets[INDEXOF(any(t.price >= 20.00 and
t.price <= 30.00
for t in tickets)
)
].price * 1.0 as from_price,
any(t.price >= 20.00 and
t.price <= 30.00
for t in tickets) as found_price_range
FROM <index_name>
WHERE found_price_range = 1
ORDER BY from_price ASC
但是,我如何按DESCENDING顺序排序?我需要在要求的价格范围内提取最大的tickets.price元素,我不知道如何用SphinxQL做到这一点。门票[LENGTH(门票)-1]。价格会得到我在活动中最大的门票价格,但它不会尊重价格范围过滤器。
解决方案需要采用纯SphinxQL,以保持外部分页工具正常工作的能力。