我想使用 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的结果?
要在 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 的间隔。