如何让SOLR操纵结果?

时间:2012-10-04 06:02:36

标签: solr lucene search-engine

对于电子商务网站,我们将产品存储为SOLR文档,其中包含以下字段和权重: 标题:5 说明:4

对于某些产品,我们需要确保它们出现在前十个结果中,即使它们在上述两个字段中的相关性不符合它们排在前10位。例如: P1,P2,.... P10是给定搜索关键字“iPhone”的合法产品。我有S1 ... S100作为赞助产品,想要出现在前10名。我的政策是这100个赞助产品中只有2个将被随机选择并显示在前10名中,结果将是:S5,S31 ,P1,P2,...... P8。在下一个请求中,获奖的产品可能是S4,S99。

QueryElevationComponent允许我们指定关键字的docID,但不允许我们将结果随机化,以便在结果中只发送2个完整的赞助docID集。

任何有关实施此建议的建议都将受到赞赏。

谢谢, 佳日

3 个答案:

答案 0 :(得分:0)

这听起来像是您需要向Solr发出两个单独的查询,一个用于合法产品,另一个用于赞助产品。然后,您需要根据返回的两个Solr结果手动操作/构造结果,以便它们满足预期的行为。我不知道有什么方法可以直接在Solr中完成。

答案 1 :(得分:0)

这个想法可能会引导您朝着正确的方向前进:

您可以使用FunctionQuery进行排序。在此FunctionQuery中,您可以检查结果是否是赞助结果。如果是,取决于转移结果的索引(0-99)和ms()得到的实际时间的两个两位数部分,您可以通过返回得分来决定是否提高结果。初始查询或修改后的查询。

如果结果与两个两位数部分中的一个相同,则结果会被提升。

答案 2 :(得分:0)