Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以设置Solr分数阈值';合理地;,独立于返回的结果?(即Solr评分是否以任何方式标准化)_Solr - Fatal编程技术网

是否可以设置Solr分数阈值';合理地;,独立于返回的结果?(即Solr评分是否以任何方式标准化)

是否可以设置Solr分数阈值';合理地;,独立于返回的结果?(即Solr评分是否以任何方式标准化),solr,Solr,我有一个包含许多条目的Solr索引,查询时返回一些子集——每个条目都有一些分数(很明显)。一旦结果与分数一起返回,我希望只能“保留”高于某个分数的结果(即,仅具有特定质量的结果)。当返回的子集可以是任何内容时,是否可以这样做 我这样问是因为在某些查询中,分数为0.008的查询结果是一场像样的比赛,而在其他查询中,分数越高的查询结果是一场糟糕的比赛 理想情况下,我只是在寻找一种方法来获取顶部x条目,只要它们至少具有一定的质量。我认为您不应该这样做。在TF-IDF评分模型中,无法计算所有结果都相关的

我有一个包含许多条目的Solr索引,查询时返回一些子集——每个条目都有一些分数(很明显)。一旦结果与分数一起返回,我希望只能“保留”高于某个分数的结果(即,仅具有特定质量的结果)。当返回的子集可以是任何内容时,是否可以这样做

我这样问是因为在某些查询中,分数为0.008的查询结果是一场像样的比赛,而在其他查询中,分数越高的查询结果是一场糟糕的比赛


理想情况下,我只是在寻找一种方法来获取顶部
x
条目,只要它们至少具有一定的质量。

我认为您不应该这样做。在TF-IDF评分模型中,无法计算所有结果都相关的评分,反之亦然。如果您能够做到这一点,那么在对索引进行几次更新之后,这个阈值很可能不再有效(因为文档频率会发生变化)


如果您仍然想这样做,我认为使用函数查询是可以实现的:在主干中有一个
If
,在Solr中有一个
query
函数。只需过滤您的结果,以便只保留分数高于给定阈值的条目。

也希望先通过

Solr不会将分数标准化,因为它可以在客户端轻松完成。
您可以使用结果中提供的maxScore,将所有分数除以 maxScore.

第一条记录的分数为1,后面是其他记录。

+1表示“…计算一个所有结果都相关的分数”谢谢!,你有推荐的“筛选”最佳结果的方法吗?类似于@Jayendra除以maxScore的解决方案。我没有,因为没有好的方法。即使把分数改写成百分比,你也会得到欺骗性的结果。但是,如果您使用的是纯分离查询,您可能会对(E)disaxqueryparser的“minimum should match”参数感兴趣,该参数允许您确保,例如,至少75%的条款必须匹配文档才能包含在结果中。我以前读过文档,它们强烈建议不要做这样的事情。你觉得除以maxScore“有效”怎么样?也就是说,它是否提供了一个有意义的结果比较,还是不是很好。谢谢你的回答。除以maxscore,你应该能够过滤出结果并对其进行范围划分。但是,它仍然不能保证带有maxscore的文档是相关的。另请参见: