【发布时间】:2012-06-03 02:06:15
【问题描述】:
我拥有一个包含列表的商店,其中一些是高级会员。我正在尝试在搜索结果顶部 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之类的吗? -
布伦丹 - 你是对的。我已经纠正了这种情况:)
标签: java sorting solr lucene schema