3

リストを含むストアを管理していますが、その一部はプレミアム メンバーです。検索結果の上に 25 km の範囲内のプレミアム メンバーを取得しようとしています。残りのリストは最寄りの順に並べられています。

リスティングがプレミアムであることを示すために、ブール型のフィールド、listing_premium を定義しました。

<field name="listing_premium" type="boolean" indexed="true" stored="true" />

距離をクエリ (listing_location) にマッピングし、ブール値を表す整数 (true = 1、false = 0) で乗算することにより、このブール値を並べ替え句で使用できれば簡単です。

以下は、listing_premium がブール値であるため機能しません...

&sort=mul(map(geodist(listing_location),0.0001,25,1,0),listing_premium)+desc,geodist(listing_location) asc

ここでの私の質問は次のとおりです。

  • どういうわけか、listing_premium を 0 または 1 にマップできますか
  • または、並べ替えに if ステートメントを含めることはできますか
  • または、スキーマでcopyFieldを使用して、listing_premiumをlisting_premium_intに変換する生成フィールドを作成できますか

とても感謝しております!

4

1 に答える 1

0

boolean の値は、0 と 1 ではない場合があります。if() 関数を使用して、それに基づいて値を選択できます。

この式:

if(listing_premium,1,0) 

listing_premium が true の場合は 1 を返し、false の場合は 0 を返します。

于 2012-05-29T05:47:49.807 に答える