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


Dropping search results by score in Solr

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

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

删除ad_score < mean_score的广告

是否有可能通过 Solr 来做到这一点,按分数降低结果?

我不

相信 Solr 支持函数查询中的聚合,因此这必须作为结果集的后处理来完成。

但是,这真的不是一个好主意。 Lucene 评分不打算以这种方式工作。

首先,分数的差异往往很大。 最佳结果和接近结果之间的差异可能是整整一个数量级,而不是说,下降10%。 试图分配一个在所有情况下都有效的任意截止点并不可行。 运行一些解释查询可能会让您了解此类内容。

此外,您的截止点可能会有移动的趋势。 如果添加新文档、更改文档内容等,即使搜索找到的文档保持不变,文档的分数也会发生变化。 这可能导致搜索在某一天找到所需的文档,而第二天无法找到无缘无故的文档,这可能非常令人沮丧。

请参阅文章:分数百分比

以获取更多信息。

更好的方法是以在其中嵌入截止值的方式构建查询。 edixmax有许多工具可用于此目的。 其中,mm(最小匹配)参数可能会有所帮助。