按查询对SOLR结果进行排名

时间:2018-10-22 08:07:23

标签: solr

我有一个带有多个查询的SOLR DIH-conig.xml(数据导入器),可以在Oracle 11中查询不同的表(或视图)。

我只是希望SOLR首先从一个特定查询返回结果,然后再从其他查询返回结果。

我应该如何在DIH-config.xml中进行配置?

谢谢。

致谢, 埃里克

1 个答案:

答案 0 :(得分:1)

您无法以任何方式在data-config.xml中进行配置-Solr返回的内容基于索引中的内容。数据导入处理程序仅将数据导入Solr,除了将数据导入Solr之外,SQL查询不用于其他任何用途。

但是,您可以通过在每个查询中返回一个带有静态值的特殊字段来解决此问题,从而有效地标识从哪个查询中导入了文档。

在您的SQL查询中,添加一个别名字段名称作为文档的优先级:

SELECT ..., 1000 AS priority FROM ...

在第二个查询中,执行相同的操作,但优先级值更高:

SELECT ..., 2000 AS priority FROM ...

如果您不是在无模式模式下运行,则需要首先定义一个长{integer)整数字段,名为priority

查询Solr时,将此值用作第一排序标准(sort=priority, score)。这将首先给出第一个查询的所有文档,然后按分数在内部进行排序,然后根据最后一个查询对分数进行内部排序。