如何在SOLR中将布尔值转换为整数?

时间:2012-05-28 18:48:18

标签: java sorting solr lucene schema

我维护一个包含商品详情的商店,其中一些是高级会员。我试图在搜索结果的顶部25公里范围内获得高级会员,其余的列表按最近的顺序排序。

为了表明列表是优质的,我已经定义了布尔字段listing_premium。

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

如果我可以通过将距离映射到查询(listing_location)并将其与表示布尔值的整数相乘(true = 1,false = 0)来在sort子句中使用此布尔值,这很容易

以下内容不起作用,因为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

非常有责任!

1 个答案:

答案 0 :(得分:0)

布尔值的值可能不是0和1。您可以使用if()函数根据该值选择值。

这个表达式:

if(listing_premium,1,0) 
如果listing_premium为真,则

返回1;如果为false,则返回0。