我有一个Solr索引,它有很多条目,在查询时会返回一些子集--每个条目都有一些分数,(显而易见)。一旦返回了带有分数的结果,我希望能够只“保留”高于某个分数的结果(即只保留具有特定质量的结果)。当返回的子集可以是任何东西时,是否可以这样做?我这样问是因为在某些查询中,分数为0.008的查询会得到一个不错的匹配,而其他查询的分数更高则会得到一个差的匹配。理想情况下,我只是在寻找一种方法,只要顶部的x条目至少具有一定的质量,就可以使用它。
x
2ul0zpep1#
我认为您不应该这样做。使用TF-IDF评分模型,没有办法计算出一个分数,如果高于该分数,所有结果都是相关的,反之亦然。如果您设法做到了这一点,很可能在对索引进行几次更新后,该阈值将不再有效(因为文档频率将发生变化)。如果您仍然想这样做,我认为使用函数查询是可以实现的:Solr中有一个if(在trunk中)和一个query函数。只需过滤结果,以便只保留分数高于给定阈值的条目。
if
query
vmpqdwk32#
还想先通过ScoresAsPercentages。Solr不对分数进行标准化,因为它可以在客户端轻松完成。您可以使用结果中提供的maxScore,方法是将所有分数除以maxScore。第一个记录的分数为1,然后是其他记录。
2条答案
按热度按时间2ul0zpep1#
我认为您不应该这样做。使用TF-IDF评分模型,没有办法计算出一个分数,如果高于该分数,所有结果都是相关的,反之亦然。如果您设法做到了这一点,很可能在对索引进行几次更新后,该阈值将不再有效(因为文档频率将发生变化)。
如果您仍然想这样做,我认为使用函数查询是可以实现的:Solr中有一个
if
(在trunk中)和一个query
函数。只需过滤结果,以便只保留分数高于给定阈值的条目。vmpqdwk32#
还想先通过ScoresAsPercentages。
Solr不对分数进行标准化,因为它可以在客户端轻松完成。
您可以使用结果中提供的maxScore,方法是将所有分数除以maxScore。
第一个记录的分数为1,然后是其他记录。