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

しかし、どうすれば降順でソートできますか? 要求された価格範囲内で最大の ticket.price 要素を引き出す必要がありますが、SphinxQL でそれを行う方法がわかりません。ticket[LENGTH(tickets)-1].price を指定すると、イベントで最大のチケット価格が得られますが、価格帯フィルターは考慮されません。

外部のページネーション ツールが適切に機能する機能を維持するために、ソリューションは純粋な SphinxQL である必要があります。

4

0 に答える 0