2012-10-04 50 views
1

对于一个电子商务网站,我们已经存储产品与下列字段和重量SOLR文件: 标题:5 说明:4如何让SOLR操纵结果?

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

QueryElevationComponent让我们指定关键字的docID,但不让我们对结果进行随机化,结果只发送完整的赞助docID中的2个。

任何建议,以实施这将不胜感激。

感谢, 佳日

回答

0

这听起来像是在那里你将需要发出两个单独的查询到Solr,一个是合法产品,另一个用于赞助的产品的情况下。然后,您将需要基于返回的两个Solr结果手动操作/构造结果,以便它们符合预期的行为。我不知道有什么方法可以直接在Solr中实现。

0

只是一个想法,可能导致你在正确的方向:

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

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