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个类型的值 . 然后我通过并标记用户选择的值;西方在这种情况下 . 这很有效,除非西方被推出前50名 . 所以我手动将它添加到列表中以使总共51.这样用户可以看到它确实被选中 . 问题是我不得不留下西方空白,因为我不知道 .
在这种情况下,有没有办法获得特定方面值的计数,例如西方?还是另一种解决这个问题的方法?
我使用的是Solr 4.7.0 .
1 回答
Solr允许您使用
facet.query
参数创建基于查询的构面计数 . 在创建基于构面字段值的过滤器查询(fq
)时,我现在创建相应的构面查询:并将其添加到我的其余参数:
现在将在solr响应中填充facet_queries对象:
无论
facet_fields
对象返回什么,我现在都保证genre:western
具有一个方面 . 通过一些解析,可以从构面查询中提取构面字段计数 .