首页 > 解决方案 > Solr 搜索 - 价格范围根据每个产品的一组产品的 min_price 计数

问题描述

我需要针对每个产品的一组产品的最低价格创建价格范围的 solr 查询。

我们可以像这样使用价格字段轻松地进行构面范围:

"facet":{
        "price":{
            "type":"range",
            "field":"price",
            "start":0,
            "end":"2000",
            "gap":"500",
            "other":"after"
      }
}

但是这里的要求是我们需要将价格与一组匹配产品的最低价格进行比较。意味着,对于 ID 为 1000 的产品,将有 n 个匹配的产品(例如产品 ID 1001、1002、1003 等)。对于每个产品,我们需要将其与这些匹配产品的最低价格进行比较。

例如,以下查询返回匹配产品的最低价格:

    "query":"_text_:*",
    "offset":0,
    "limit":0,
    "filter":["tagmacthedid:585200 || tagmacthedid:585226 || tagmacthedid:1197970"],
    "facet":{
         prices585226: {
                type: query,
                q: "tagmacthedid:585226",
                facet: {
                    price_min:"min(price)",
                    price_max:"max(price)"
                },
                
        },
         prices585200: {
                type: query,
                q: "tagmacthedid:585200",
                facet: {
                    price_min:"min(price)",
                    price_max:"max(price)"
                },
                
        }
    }
}

这将返回结果集:

"facets": {
        "count": 18,
        "prices585226": {
            "count": 14,
            "price_min": 49.0,
            "price_max": 2999.0
        },
        "prices585200": {
            "count": 4,
            "price_min": 175.0,
            "price_max": 1075.0
        }
    }

但问题是我们需要根据最低价格(产品的匹配产品(tagmacthedid))获取价格计数范围

如果您有解决此问题的想法,请告诉我。

标签: solrrangefacet

解决方案


推荐阅读