我维护一个包含列表的商店,其中一些是高级会员。我试图在搜索结果顶部 25 公里范围内获得高级会员,其余列表按最近附近排序。
为了表明列表是优质的,我定义了布尔字段 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
非常感谢!