Solr动态价格范围和组

Bob*_*ait 5 solr

跟进问题

如果我理解正确,那么要在Solr中获取每个价格区间的匹配数,可以使用以下几种不同的方式:

  • 每个静态价格间隔:
    • 方面范围
    • 方面查询
  • 每个动态价格区间

要仅获取最小价格和最大价格:

  • 整个索引上的“价格”字段:StatsComponent

现在我的问题是:我可以使结果分组正常,但是如何获取每个组的最小和最大价格(&group = true)。是否有与之相关的Solr JIRA?

Lucene JIRA 3097:组后分面确实以全局分面而不是“每组”结果呈现结果。

小智 0

Solr版本:5.4及以上。

我有一个解决方案,并且已经在我的项目中实现了。

您必须使用 json 分面来根据分面结果获得最大值和最小值。

    json.facet={
   tags_group:{
      type:terms,
      field:tags,
      limit:-1,
      facet:{
         pricemin:{
            type:terms,
            field:price,
            limit:1,
            sort:{
               x:asc
            },
            facet:{
               x:"min(price)"
            }
         },
         pricemax:{
            type:terms,
            field:price,
            limit:1,
            sort:{
               y:desc
            },
            facet:{
               y:"max(price)"
            }
         }
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

在上面的 Json 方面,我使用标签作为归档(多值),这将创建一个像这样的存储桶

<str name="val">Letter Holder</str>
<int name="count">2</int>
<lst name="pricemin">
    <arr name="buckets">
        <lst>
            <double name="val">899.0</double>
            <int name="count">1</int>
            <double name="x">899.0</double>
        </lst>
    </arr>
</lst>
<lst name="pricemax">
    <arr name="buckets">
        <lst>
            <double name="val">1299.0</double>
            <int name="count">1</int>
            <double name="y">1299.0</double>
        </lst>
    </arr>
</lst>
Run Code Online (Sandbox Code Playgroud)