【发布时间】:2020-02-26 00:50:03
【问题描述】:
我正在尝试基于动态值执行分面。基本上我想要与def 函数相同的行为,但这似乎不适用于分面。
考虑这两种“产品”:
{
"id":"product1",
"defaultPrice":19.99,
"overridePrice":14.99
},
{
"id":"product2",
"defaultPrice":49.99
}
我想补充一点,overridePrice 只是一个例子。实际字段是一个动态值,取决于执行搜索的上下文,并且可能有许多被覆盖的价格,所以我不能只在索引时派生price。
对于回复,我正在为fl 做这样的事情:
fl=price:def(overridePrice, defaultPrice) 并使用相同的def 函数对price 执行排序。这很好用。
所以现在我想将相同的逻辑应用于构面。我尝试过使用json.facet,它似乎可以工作:
json.facet={
price: "def(overridePrice, defaultPrice)"
}
我也尝试过其他变体,例如使用field:def(overridePrice, defaultPrice) 和field:price,但def 似乎不是用于分面的可用函数,而price 派生字段不是刻面时可用。
所以问题是:如何像我为fl 所做的那样基于默认字段执行分面和排序?这是否需要自定义聚合函数,或者有没有一种聪明的方法可以在没有自定义函数的情况下做到这一点?如果能够使用内置的 Solr 功能来做到这一点,那就更可取了。
【问题讨论】:
标签: solr