2012-02-10 63 views
4

我的问题是,该搜索是我的应用程序的一个小的补充,我真的不想投入那么多时间来挖掘整个想法。看看我的搜索结果 - 这是一个非常常见的模式,我得到了一些非常好的比赛(7+)和一些非常非常糟糕的比赛,女巫得分为0.10。如果我想使用除分数之外的其他任何标准对结果进行排序,它将毫无意义,因为0.10与查询几乎没有任何关系,最终可能会列在首位。如何在使用Solr/Lucene时将命中率降至特定分数以下?

严重的是,它看起来像切割3分左右的分数将使我的结果方式更一致,排序将更有意义。

现在,在做了一些基础研究之后,看起来好多人认为,通过评分来过滤Solr结果是一个非常糟糕的主意。关于如何做到这一点有一些命中,但我还找不到工作解决方案。

使用frange(适当的q查询或qf)建议的想法并没有真正的工作。抛开低分导致应用程序本身似乎也很乏味,因为它会打破分页,减慢速度,并且通常会产生大量不必要的工作。

大致经过娜在谷歌我发现有很多人真的想这样的解决方案,但我无法找到任何这对我的作品小时。

那么,有没有什么办法可以让solr方得到低分结果?有没有任何自定义过滤器来做到这一点?

编辑:

结果具有广阔的底部由于某种原因,显著比分差距。例如,最后一个相关结果得到4.5分,并且总是有更多的结果,其次是0.12的最高结果......也许我在索引层面上做错了什么?有没有简单的方法来将这些不相关的结果从结果散列中推下来?经过一些更多的研究后,我似乎更愿意在放弃< 1得分之后确定...

+2

一方面,比分曾在一个比较意义上才有意义,而不是绝对的感。对于某些搜索,“好”结果甚至可能得分为0.2。所以,你需要凭经验确定阈值。并且设置临界值可能实际上阻止了工作结果,并且(IMO)在心理上等同于拒绝与您交谈的女朋友。所以如果你确实设置了一个阈值,那么将阈值以下的结果(和列出的页面)显示为灰色([参见示例](http://stackoverflow.com/questions/209170/how-much-does-it-cost-以开发一个iPhone应用程序)) – aitchnyu 2012-02-10 07:34:07

+0

我知道,在门槛上的决定是棘手的...你如何解决在这种情况下排序的问题一般?先做分数,后面做价格,因为分数是浮动的。即使将结果映射到分数范围也是很愚蠢的,因为对于用户来说,它看起来像排序是打破的。我非常好地杀死一些vaild结果。就我而言,这比在列表顶部显示完全不相关的项目要好得多,只是因为他们以A开头。任何一个有想法的人如何解决这个问题? – mdrozdziel 2012-02-10 09:24:49

+2

Boost函数和查询将根据字段的数值和术语的出现提升**搜索分数**。您可以设置价格以影响分数。 (顺便说一句,我从来没有使用过这些功能,所以我没有经验说) – aitchnyu 2012-02-10 09:49:11

回答

0

在应用程序级别进行应用似乎是大多数人的工作。

一个想法是挑你喜欢的百分比,然后看第一文档,并用它作为分母,然后每个后续文档作为分子,然后停止下方的比率。但我同意在这个级别做这个确实搞砸了分页等。

另一个想法是编写一个自定义的Solr插件,强制分数低于零点 - 这将修复分页和facet等。开始是默认的“相似性”得分王代码(这个名字有点奇怪,我已经通过了几次自己通过)

相关问题