首页 文章

Solr facet计算特定字段值

提问于
浏览
2

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 回答

  • 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 具有一个方面 . 通过一些解析,可以从构面查询中提取构面字段计数 .

相关问题