如何在Solr客户端中创建区间facet

问题描述 投票:0回答:1

我想使用 Solr 客户端设置以下搜索

select?facet=on&facet.field=Score&facet.interval=Score&f.Score.facet.interval.set=[0,10]&f.Score.facet.interval.set=[21,25]&f.Score.facet.interval.set=[26,35]&f.Score.facet.interval.set=[36,40]&f.Score.facet.interval.set=[41,45]&f.Score.facet.interval.set=[46,50]&q=*

预期结果如下:

"facet_counts":{
    "facet_queries":{},
    "facet_fields":{
      "Score":[
        "27",2,
        "41",3,
        ......
        "31",2]},
    "facet_ranges":{},
    "facet_intervals":{
      "Score":{
        "[0,10]":0,
        "[11,25]":12,
        "[26,35]":18,
        "[36,40]":9,
        "[41,45]":7,
        "[46,50]":2,}},
    "facet_heatmaps":{}}}

添加构面字段后

$query->addFacetField('Score');

如何设置分面间隔?另外,如何删除facet_intervals中计数为0的结果?

php solr
1个回答
0
投票

要在 Solr 客户端中创建间隔构面并设置所需的构面间隔,您可以使用

facet.interval
参数和
f.Score.facet.interval.set
参数来指定间隔范围。

// Enable facet
$query->addParam('facet', 'true');

// Add the facet field
$query->addFacetField('Score');

// Set the facet interval ranges
$query->addParam('facet.interval', 'Score');
$query->addParam('f.Score.facet.interval.set', '[0,10]');
$query->addParam('f.Score.facet.interval.set', '[11,25]');
$query->addParam('f.Score.facet.interval.set', '[26,35]');
$query->addParam('f.Score.facet.interval.set', '[36,40]');
$query->addParam('f.Score.facet.interval.set', '[41,45]');
$query->addParam('f.Score.facet.interval.set', '[46,50]');

// Include only non-zero count intervals in the result
$query->addParam('facet.zeros', 'false');

通过使用此代码,您可以启用分面,将分数字段添加为分面字段,并使用

f.Score.facet.interval.set
参数设置所需的间隔范围。

最后,您可以通过将

facet.zeros
参数设置为 false 来排除计数为 0 的间隔。

© www.soinside.com 2019 - 2024. All rights reserved.