【问题标题】:How to make SOLR manipulate the results?如何让 SOLR 操纵结果?
【发布时间】:2012-10-04 06:02:35
【问题描述】:

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

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

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

我们将不胜感激。

谢谢, 亚什

【问题讨论】:

    标签: solr lucene search-engine


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        【解决方案3】:

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-06-08
          • 1970-01-01
          • 2018-07-30
          • 2019-12-06
          相关资源
          最近更新 更多