如何在Solr客户端中创建interval facet

uemypmqf  于 6个月前  发布在  Solr
关注(0)|答案(1)|浏览(79)

我想使用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":{}}}


添加facet字段后

$query->addFacetField('Score');


如何设置facet interval?如何删除facet_interval中计数为0的结果?

v6ylcynt

v6ylcynt1#

要在Solr Client中创建间隔facet并设置所需的facet间隔,可以使用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]');

字符串
要删除facet_intervals中计数为0的结果,可以使用facet.mincount参数并将其设置为1。
这将从面结果中排除计数为0的任何区间。

$query->add('facet.mincount', '1');


通过使用此代码,您可以启用facet,将Score字段添加为facet字段,并使用f.Score.facet.interval.set参数设置所需的间隔范围。

相关问题