我有一个包含许多条目的Solr索引,并且在查询时会返回一些子集 - 每个条目都有一些分数,(明显)。一旦结果以分数返回,我希望能够“保持”高于某个分数的结果(即仅具有特定质量的结果)。当返回的子集可能是什么时,是否可以这样做?
我问,因为在某些问题上似乎有一个得分为0.008的结果导致了一个不错的匹配,而其他查询得分较高会导致匹配不佳。
理想情况下,我只是在寻找一种方法来获取最高x
条目,只要它们至少具有一定的质量。
提前致谢!
答案 0 :(得分:4)
我认为你不应该这样做。使用TF-IDF评分模型,无法计算所有结果相关的分数,反之亦然。如果你设法做到这一点,那么在对索引进行一些更新之后,这个阈值很可能不再有效(因为文档频率会发生变化)。
如果你仍然想这样做,我认为使用函数查询是可以实现的:在Solr中有一个if
(在trunk中)和一个query
函数。只需过滤结果,以便只保留分数高于给定阈值的条目。
答案 1 :(得分:3)
您可以实施称为规范化分数(Scores As Percentages)的内容。
有关详细信息,请参阅:
How to normalize Lucene scores?
how do I normalise a solr/lucene score?
Remove results below a certain score threshold in Solr/Lucene?
答案 2 :(得分:2)
首先要通过ScoresAsPercentages。
Solr不会对分数进行标准化,因为它可以在客户端轻松完成
您可以使用结果中提供的maxScore,将所有分数除以
maxScore。
第一张唱片的得分为1,其余为其余。