在Solr中按分数删除搜索结果

时间:2014-04-04 09:29:22

标签: php apache search solr lucene

我发现您可以通过将“fl”参数设置为“fl = score”来获得与Solr中的搜索相关的分数。假设我需要通过获取具有平均分数的广告来进一步过滤。

mean_score = ( score_1 + score_2 + score_3 ... + score_n )

删除ad_score < mean_score

的广告

是否可以通过Solr进行,按分数删除结果?

1 个答案:

答案 0 :(得分:0)

我不相信Solr支持函数查询中的聚合,因此必须在结果集上进行后处理。

然而,这确实不是一个好主意。 Lucene得分并不打算以这种方式运作。

首先,得分差异往往有很大的趋势。最佳结果与近似结果之间的差异可能是整个数量级,而不是例如10%的下降。试图分配一个适用于所有情况的任意截止点并不可行。运行一些explain queries可能会让你看到这种事情。

此外,您的截止点可能会有移动趋势。如果添加新文档,更改文档内容等,即使搜索发现的文档保持不变,文档的分数也可以更改。这可能导致搜索有一天找到所需的文档,并且由于没有容易辨别的原因而无法找到下一个文档,这可能会非常令人沮丧。

有关详情,请参阅文章:Scores As Percentages

更好的方法是以一种在其中嵌入截止值的方式构造查询。 edixmax有许多工具可用于此目的。其中,mm (Min Should Match)参数可能会有所帮助。