在SphinxQL中从JSON MVA字段中获取最大匹配值

时间:2016-12-17 01:32:09

标签: sphinx sphinxql

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

0 个答案:

没有答案