使用Solr / Lucene时如何将命中率低于一定分数?

时间:2012-02-10 06:48:33

标签: solr lucene full-text-search

我的问题是,搜索是我的应用程序的一个小补充,我真的不想投入那么多时间来挖掘整个想法。看看我的搜索结果 - 这是一个非常常见的模式,我得到一些非常好的比赛(7+)和一些非常非常糟糕的比赛,女巫得分像0.10。如果我想使用除得分之外的任何其他标准对结果进行排序,那么它将毫无意义,因为0.10几乎与查询无关,并且可能最终在列表中排在第一位。

说真的,看起来切割低于3分的所有内容会使我的结果更加一致,排序会更有意义。

现在,在做了一些基础研究后,看起来很多人都认为,按分数过滤Solr结果真是个坏主意。关于如何做到这一点有一些点击,但我找不到一个有效的解决方案。

使用frange(在正确的q查询或qf上)的建议想法并不真正起作用。放弃低分导致App本身也显得相当沉闷,因为它会破坏分页,减慢速度并且在很多不必要的工作中总体屈服。

在谷歌上大约一小时后我发现很多人真的想要这个解决方案,虽然我找不到任何对我有用的东西。

那么,有没有办法在solr方面抛弃低分结果?有没有自定义过滤器可以做到这一点?

编辑:

由于某种原因,结果中的大部分在底部存在显着的分数差距。例如,最后一个相关的结果得到4.5分,并且总是会有更多的结果,下一个最高的一个在0.12 ...也许我在索引级别上做错了什么?有没有简单的方法可以将这些不相关的结果从结果哈希中删除?在进行了一些更多的研究之后,我会在放弃< 1分......

1 个答案:

答案 0 :(得分:0)

在应用程序级别纾困似乎是大多数人所做的事情。

一个想法是选择一个你喜欢的百分比,然后查看第一个文档并将其用作分母,然后将每个后续doc作为分子,然后停止在你的比率之下。但是我同意在这个级别做这个会搞乱分页等等。

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