我维护着一个包含列表的商店,其中一些是高级成员(member)。我试图让 25 公里范围内的高级成员(member)出现在搜索结果的顶部,其余列表按最近附近排序。
为了表明一个列表是高级的,我定义了 boolean 字段 listing_premium。
<field name="listing_premium" type="boolean" indexed="true" stored="true" />
如果我可以通过将距离映射到查询 (listing_location) 并将其与代表 boolean 值的整数相乘 (true = 1, false = 0),在排序子句中使用这个 boolean 值会很容易
以下内容无效,因为 listing_premium 是 boolean 值...
&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 的生成字段
非常感谢!
最佳答案
boolean 值可能不是 0 和 1。您可以使用 if() 函数基于此选择值。
这个表达式:
if(listing_premium,1,0)
如果 listing_premium 为真则返回 1,如果为假则返回 0。
关于java - 如何在 SOLR 中将 boolean 值转换为整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10789170/