使用 SphinxQL,我想通过 JSON MVA 属性对结果进行排序,该属性具有与之关联的过滤条件。
例如,我有一个索引,其中包含:
event_id,
tickets
其中门票是一个 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(tickets)-1].price 将为我提供活动中最高的门票价格,但它不会尊重价格范围过滤器。
该解决方案需要在纯 SphinxQL 中,以保持外部分页工具正常工作的能力。