1

对于电子商务网站,我们将产品存储为具有以下字段和权重的 SOLR 文档:标题:5 描述:4

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

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

任何实现这一点的建议将不胜感激。

谢谢, 亚什

4

3 回答 3

0

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

于 2012-10-04T11:48:58.060 回答
0

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

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

如果结果的索引与两个两位数部分之一相同,则结果将被提升。

于 2012-10-04T13:48:40.863 回答
0

这已解决,请使用海拔组件。

https://cwiki.apache.org/confluence/display/solr/The+Query+Elevation+Component

于 2015-08-14T12:27:53.403 回答