我的应用程序有两个主要概念,发展和情节。发展是地块的集合。就上下文而言,开发是住房开发,地块是开发中的房屋/公寓。
我们正在使用 Solr 4.0 版。
我们正在使用组查询(按开发 ID 分组)将地块聚合到开发中以进行搜索,并且将使用以下逻辑:按每个开发中的最低价格地块对开发进行排序。如果开发项目的地块价格为零,而没有价格更高的地块,则优先级最高;但如果开发项目的地块价格为零且价格大于零,则应使用最低的非零价格进行排序。
价格定义为:
<field name="price" type="int" indexed="true" stored="true" required="false" />
我试图在不修改架构并将开发中的最低价格图与开发中的每个地块索引的情况下实现这一点。
我试过 sort=map(price,0,0,999999999),它将 0 定价的地块视为更昂贵,这解决了使用最低非 0 价格的问题,但这并不能解决问题只有一个 0 定价的地块。
我也尝试过 group.sort=map(price,0,0,99999999) ,因为理解组排序是基于组中的第一项,但这个假设似乎不正确。
示例数据:
Development 1:
Plot 1: Price 1000
Plot 2: Price 10000
Development 2:
Plot 3: Price 5000
Plot 4: Price 8000
Development 3:
Plot 5: Price 0
Plot 6: Price 15000
Development 4:
Plot 7: Price 0
在这种情况下,正确的排序是:
Developments: 4, 1, 2, 3
请让我知道是否有办法解决这个问题。
*需要注意的是,用户可以按价格范围进行过滤,上述逻辑仍然需要在过滤后的结果集中起作用。