Solr:如果不按相关性排序,如何管理不相关的结果?

时间:2017-09-15 06:26:57

标签: search solr

一个例子:说我们有一个搜索查询,返回2000个结果,从非常相关到几乎不相关。当按相关性对其进行排序时,这很好,因为最相关的结果列在第一页上。

然而,当按另一个字段(例如用户评级)排序时,第一页上的结果充满了几乎不相关的结果,这对我们的客户来说是个问题。不知何故,我们只需要展示相关的'评分最高的结果。

我只能想到一些解决方案,所有解决方案都存在问题:

1 - 如果相关性得分低于阈值,则在Solr端过滤掉列表。我不知道该怎么做,而且根据我所知,这不是一个好主意。例如如果一个结果只返回10个列表我想要全部显示它们而不是过滤任何一个。似乎无法确定一个可以全面运作的门槛。如果有人能告诉我,请告诉我如何!

2 - 根据分数筛选出应用程序方面的列表。我可以毫无问题地做到这一点,但现在我无法实现分页,因为我没有办法确定过滤结果的总数而不返回整个集合,这会影响性能/带宽等...第一点有同样的问题。

3 - 创建一种“组合”的组合。排序,聚合相关性和用户评级之间的分数,然后对结果进行排序。首先,我不确定这是否可行,其次如果结果没有按照评级顺序列出,对用户来说会很奇怪。

之前如何解决这个问题?我对任何想法持开放态度!

由于

2 个答案:

答案 0 :(得分:0)

如果它们不相关,则应将它们排除在结果集之外。由于您希望通过专用字段(即用户评级)进行订购,因此您必须调整如何决定在结果中包含哪些文档。

在任何情况下,您都必须定义"足够相关的内容",因为在查询之间得分并不真实可比,并且没有任何关于"这是xyz相关的!"。

您必须决定为什么所包含的文档不相关并根据该标准排除它们,然后使用评论分数作为进一步提升它们的方法(如果您需要搜索显示为有机/相关)。否则,您可以排除它们并按用户分数排序。但请记住,作为用户体验的用户评分通常为harder problem to make relevant than just order by the average of the votes

答案 1 :(得分:0)

通常,客户可以根据相关性或评级选择不同的订购选项。但你是对的,按等级排序可能不够用。您可以做的是考虑相关性评分中的评分。例如,通过乘以"有机"评分转换为小幅提升。在Solr中,您可以使用Function Queries执行此操作。这不是一门硬科学,而是涉及到一些魔法。很多是常识。它需要一些非常好的评估和测试才能看出哪种方法效果最好。

或者,如果您不希望将其视为检索问题,则可以应用分面,并允许用户通过评级过滤结果。让用户自助。但我可以想象这并不适用于所有领域。

工程师可以定义相关性。内容相似性评分不仅仅是构成相关性的内容。许多信息检索研究人员和工程师都同意,除了内容相似性之外,还应该使用上下文信息。这为定义检索模型提供了大量可能性。例如,流行的是学习排名(LTR)方法,其中从搜索日志中学习不同的特征,以根据用户简档和先前的搜索行为向用户提供更多相关文档。 Solr将此提供为module