java - 如何在 SOLR 中将 boolean 值转换为整数?

标签 java sorting solr lucene schema

我维护着一个包含列表的商店,其中一些是高级成员(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/

相关文章:

database - 我可以使用 Solr 来分析 1000 万行的数据吗

java - 如何使用 Java 在 Solr 中获取索引大小

java - Jackson @JsonIgnoreProperties 无法在父类(super class)中工作

java - 如何在java中对嵌套列表进行排序

c++ - 如何将 std::sort 与结构 vector 和比较函数一起使用?

algorithm - Quicksort 是 "adaptive"和 "online"吗?

java - RMI:如何将服务器端和客户端类放置到网络可访问的位置?

java - 从 byte[] 到 String 的转换的时间令人惊讶

java - 您如何使用 Java 1.5 BlockingQueue 为多个消费者设计停止条件?

solr - Apache Cassandra 与 Apache Solr 的集成