1

使用 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 中,以保持外部分页工具正常工作的能力。

4

0 回答 0