首页 > 解决方案 > 按查询对 SOLR 结果进行排名

问题描述

我有一个 SOLR DIH-conig.xml (dataimporter) 有多个查询,在 Oracle 11 中查询不同的表(或视图)。

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

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

谢谢。

问候,埃里克

标签: solr

解决方案


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

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

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

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

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

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

priority如果您没有在无模式模式下运行,这需要定义一个名为 first 的长整型字段。

查询 Solr 时,将此值用作第一个排序条件 ( sort=priority, score)。这将首先给出第一个查询中的所有文档,内部按分数排序,然后是最后一个查询,内部也按分数排序。


推荐阅读