【问题标题】:Solr: Query Facet and count missingSolr:查询 Facet 和计数缺失
【发布时间】:2019-06-18 05:51:06
【问题描述】:

在我的 Solr 索引中,我有一个可选的日期字段。我们就叫它Property_3_1044吧。

我想找出Property_3_1044 的最大值最小值,以及所有没有该日期的项目的数量。

我相信刻面是最好的方法。如果有更好的方法请指正!


使用Query Facets我可以使用聚合函数minmax分别获得最小值和最大值

http://localhost:8983/solr/Shard/query?q=:&json.facet={Date1:{type:query,facet:{"min":"min(Property_3_1044)","max":"max(Property_3_1044)"}}}&rows=0

结果:

"facets":{
  "count":249,
  "Date1":{
    "count":249,
    "min":"2019-01-09T00:00:00Z",
    "max":"2019-01-22T00:00:00Z"}}}

(抛开问题:如何摆脱 2 counts?)


使用Terms Facets我可以使用missing参数查找所有没有日期的项目

http://localhost:8983/solr/Shard/query?q=:&rows=0&json.facet={Date2:{terms:{field:Property_3_1044,missing:true,limit:0}}}

结果:

"facets":{
  "count":249,
  "Date2":{
    "buckets":[],
    "missing":{
      "count":240}}}}

我如何结合这两个查询?我知道我可以同时执行两者(只需连接两个查询字符串),但我想知道是否有更有效的方法。我假设同时执行查询方面和术语方面比仅具有单个方面更昂贵。例如,聚合函数 missing 将允许我只使用查询方面做所有事情(但没有这样的方法,是吗?)。

【问题讨论】:

    标签: solr facet


    【解决方案1】:

    我自己找到了解决方案;我只需要添加一个构面查询q 过滤非空值 -> [* TO *]:

    http://localhost:8983/solr/Shard/query?q=:&json.facet={Date1:{type:query,q:"Property_3_1044:[* TO *]",facet:{"min":"min(Property_3_1044)","max":"max(Property_3_1044)"}}}&rows=0

    在结果中,外部计数是所有项目的数量(这里:225),内部方面计数将给出设置日期的项目数量,即。在应用q 之后(这里:9):

    "facets":{
      "count":225,
      "Date1":{
        "count":9,
        "min":"2019-01-09T00:00:00Z",
        "max":"2019-01-22T00:00:00Z"}}}
    

    没有日期的项目数就是差值(225-9=216)。

    【讨论】:

      猜你喜欢
      • 2011-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多