SOLR/Lucene能否报告额外命名文档的计算分数,即使它们';你不在前N名吗?

SOLR/Lucene能否报告额外命名文档的计算分数,即使它们';你不在前N名吗?,solr,lucene,full-text-search,Solr,Lucene,Full Text Search,我想向SOLR/Lucene提交一个查询,以及一个文档ID列表。从查询中,我希望得到通常的top-N评分结果,但我也希望得到命名文档的评分。。。不管它们有多低 任何人都能想到一种简单/受支持的方法在单个索引扫描中做到这一点,其中“添加”(非排名/固定以供包含)文档的分数与前N个结果的分数具有可比性/相同的比例?(用专门的类修补SOLR是可以的;我想如果没有现有的支持,我可能不得不这么做。) 或者如果做不到这一点,是否可以通过后续查询进行模拟,理想情况下,可以将命名文档的分数进行缩放,使其与参考查

我想向SOLR/Lucene提交一个查询,以及一个文档ID列表。从查询中,我希望得到通常的top-N评分结果,但我也希望得到命名文档的评分。。。不管它们有多低

任何人都能想到一种简单/受支持的方法在单个索引扫描中做到这一点,其中“添加”(非排名/固定以供包含)文档的分数与前N个结果的分数具有可比性/相同的比例?(用专门的类修补SOLR是可以的;我想如果没有现有的支持,我可能不得不这么做。)

或者如果做不到这一点,是否可以通过后续查询进行模拟,理想情况下,可以将命名文档的分数进行缩放,使其与参考查询的前N名大致相当

或者,对于我的预期用途,我是否可以对包含M个(M=2或更多)不同查询的SOLR/Lucene索引发出一个请求,并返回任意M个查询的前N名结果,以及每个结果对所有M个不同查询的分数

(即使在我上面的公式中,我希望与新查询一起评分的文档列表通常都是先前查询的结果。)


解决方案,甚至只是可能的方法的碎片

我不确定我是否正确理解您想要实现的目标,但我不会简单地告诉您

 q: (somequery) OR id: (1 OR 2 OR 4)
够了吗? 如果您希望两个部分都以相同的比例提升(我不确定这是否是Solr的默认行为),您可能希望使用Demax或eDisk,并且您的查询将更改为类似以下内容:

 q: (somequery)^10 OR id: (1 OR 2 OR 4)^10

然后,您将以相同的方式对ID定义的元素和查询结果进行评分。

要自我回答,请报告我在发布后发现的内容

一个笨拙的选项是参数,它接受另一个查询。(此查询可以是一个或一组感兴趣的文档ID。)然后,响应将包括与此其他查询匹配的文档的完整评分说明
explainOther
仅在与同样必需的
debugQuery
参数组合时有效

所有这些调试/解释信息对于需求来说都是多余的,但可能是有用的,或者实现它的代码路径可能会提供一个指南,使假设的新的更狭隘的“scoreOther”选项更具针对性

另一种选择是使用使用该函数计算的伪字段来报告任何结果集在某些其他查询上的得分。因此,例如,如果原始文档集是query_A的前N名,那么这些文档就是您也希望对query_B进行评分的文档,那么您将使用报告字段
…&fl=bscore:query({!dismax v=“query_B”})和…
再次执行query_A。然后文档对查询的得分将包含在输出中(如
bscore

最后,该功能可用于收集一个查询的top-N,以及一次性收集与其他查询相交的较小文档的分数。例如,如果查询query\u B并添加
…&group=true&group.query=query\u B&group.query=query\u A&…
,您将返回满足query\B(按query\B排序)以及同时满足query\B和query\A(但再次按query\B排序)的组。这也可以与上面的函数字段混合,通过另一个查询(如query_A)获得分数


但是,所有组都将共享相同的排序顺序(从主查询或由
group.sort
参数指定的内容),因此目前无法(SOLR-4.0.0-beta)根据不同的评分获得多个前N名结果,仅根据一个评分获得前N名,受某些组的限制。(这里有一个建议,每个组的替代排序可能被设想为未来的功能。)

感谢您的建议;我已经按照这些思路做了一些实验。为了澄清和说明这与我期望的结果有什么不同,像这样的复合查询将:(1)只给我“行”的总结果,而不是“somequery”的“行”结果,然后给其他ID打分;(2) 不一定包括前结果后或前结果中的所有单据;(3) 为ID文档给出与“somequery”的纯分数不同的分数。(也许这最后一件事可以通过正确的提升/重新缩放来抵消。)