2012-02-27 153 views
1

在我的查询中,我想根据一系列值(例如$ 500 - $ 1000)搜索价格并返回一个模糊结果集。Solr - 基于范围的相关度+范围之外

我可以通过做价格来增加这些价值:[500到1000]^10,但是它不会得到499美元,因为任何相关价值超过200美元。

我可以创建这样一个升压功能:RECIP(ABS(子(价格,750)),1,1000,1000)^ 10,但这个比分501比500

更相关的是有没有方式有一个提升功能为$ 500- $ 1000和另一个提升功能超出该范围的值?

感谢, 德鲁

编辑的错字在功能

回答

2

recip(abs(sub(price,750)),1,1000,1000)^10

使用你的范围,而不是下界的中点。


编辑:要回答这个问题,更新:

看看在map功能在这里 - 你可以500和1000之间的映射所有的价格750,然后利用它来进行提升。喜欢的东西: recip(abs(sub(map(price,500,1000,750),750)),1,1000,1000)^10

这应该得分600和700相同,但它会得分400高于300

+0

这实际上就是我的意思输入。虽然同样的问题也适用于这个功能。我怎样才能使500-1000的所有相同的相关性,但超出该范围的任何相关性都基于该功能? – dhysong 2012-02-28 13:22:29

+0

已编辑答案 - 我认为它应该可以解决您的问题。 – nikhil500 2012-02-28 14:45:35