Solr为我创建多选小平面计数,如下所述:
https://wiki.apache.org/solr/SimpleFacetParameters#Multi-Select_Faceting_and_LocalParams
我还有各种预定义搜索,允许用户浏览目录。这是一个这样的例子及其查询参数:
q=*:*
fq={!tag=g}genre:western
facet=on
facet.field={!ex=g}genre
facet.mincount=1
facet.limit=50
通过此搜索,我可以在方面列表中获得最多50个类型的值。然后我通过并标记用户选择的值;在这种情况下,西方。这很有效,除非 western 被推出前50名。所以我手动将它添加到列表中以使总共51.这样用户可以看到它确实被选中。问题是我必须将 western 的计数留空,因为我不知道。
在这种情况下,有没有办法获得特定方面值的计数,例如 western ?还是另一种解决这个问题的方法?
我正在使用Solr 4.7.0。
答案 0 :(得分:1)
Solr允许您使用facet.query
参数创建基于查询的构面计数。在创建基于构面字段值的过滤器查询(fq
)时,我现在创建相应的构面查询:
facet.query={!ex=g}genre:western
并将其添加到我的其余参数中:
q=*:*
fq={!tag=g}genre:western
facet=on
facet.field={!ex=g}genre
facet.query={!ex=g}genre:western
facet.mincount=1
facet.limit=50
现在将在solr响应中填充facet_queries对象:
{
...
"facet_counts": {
"facet_queries": {
"{!ex=g}genre:western": 7
},
...
},
...
}
无论facet_fields
对象返回什么内容,我现在都保证genre:western
有一个方面计数。通过一些解析,可以从构面查询中提取构面字段计数。