Java 如何在SOLR中将布尔值转换为整数?
我维护一个包含物品的商店,其中一些是高级会员。我试图在搜索结果的顶部找到25公里范围内的高级成员,其余的列表按最近的距离排序 为了表明列表是高级的,我定义了布尔字段listing\u premiumJava 如何在SOLR中将布尔值转换为整数?,java,sorting,solr,lucene,schema,Java,Sorting,Solr,Lucene,Schema,我维护一个包含物品的商店,其中一些是高级会员。我试图在搜索结果的顶部找到25公里范围内的高级成员,其余的列表按最近的距离排序 为了表明列表是高级的,我定义了布尔字段listing\u premium <field name="listing_premium" type="boolean" indexed="true" stored="true" /> 我的问题是: 我是否可以将清单\u premium映射为0或1 或者我可以在排序中包含if语句吗 或者我可以在模式中使用copyF
<field name="listing_premium" type="boolean" indexed="true" stored="true" />
我的问题是:
- 我是否可以将清单\u premium映射为0或1
- 或者我可以在排序中包含if语句吗
- 或者我可以在模式中使用copyField创建一个生成的字段,将listing\u premium转换为listing\u premium\u int吗
非常感谢 布尔值可能不是0和1。可以使用if()函数根据该值选择值 这句话:
if(listing_premium,1,0)
如果listing\u premium为true,则返回1;如果为false,则返回0。我不熟悉此系统,但您不能简单地说一些类似于
listing\u premium的话吗?1:0
?布伦丹-你说得对。我已经纠正了这种情况:)我也尝试过了,但我无法使它在排序中工作:&sort=mul(map(geodist(listing_location),0.0001,25,1,0),if(listing_premium,1,0))异常:无法确定排序顺序:'mul(map(geodist(listing_location),1,25,1,0),if(listing_premium,1,0))desc你有一个排序中的if语句的例子吗?对不起,我在edismax的boost参数中做过这种事情,但没有排序。您可能想尝试boost,它将您的分数与相关性分数混合在一起。
if(listing_premium,1,0)