我维护一个包含列表的商店,其中一些是高级会员。 我正在尝试在搜索结果顶部获取范围内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?
非常感谢!
listing_premium ? 1 : 0
这样的代码吗? - AardvarkSoup