我有一个Solr实例,我想使用Solr函数查询为每个文档计算自己的分数。举个例子,假设我有以下查询:
q={!func}termfreq('text', 'foo')
当我这样做时,我的结果有一个numfound,它是索引中所有文档的数量。我希望能够过滤掉那些得分低于给定数字的文档,所以理想情况下我想使用这样的范围查询进行过滤:
fq={!frange l=1}score
因为我的查询参数决定了结果分数。但如果我这样做,我会收到错误消息:
"error": {
"msg": "undefined field: \"score\"",
"code": 400
}
我尝试过添加像这样的过滤器:
fq={!frange l=1}termfreq('text', 'foo')
这给了我正确的结果,但是我的计算可能很慢,所以我想知道是否可以在过滤查询中使用得分伪字段,或者以某种其他方式使得Solr缓存结果查询参数中的functionquery?或者是否有替代rangequery过滤器方法,可以实现这一目标吗?