2017-07-25 49 views
0

我正在使用Solr在其中一个核心上运行查询。假设我的文档有两个字段:ID和Name。我还有一个单独的ID列表,我从数据库中抓取并传递到查询中以提高某些结果。Solr按查询结果是否被另一个字段提升进行排序

如果文档在查询中返回并且ID在列表中,它将转到结果的顶部,如果它在查询中返回并且ID不在列表中,那么它将低于那些在列表中。前者来自“助推器”。我的查询是这样的 - http://mysolrserver:8983/solr/MyCore/MyQueryHandler?q=Smith&start=0&rows=25&bq=Id%3a(36+OR+76+OR+90+OR+224+OR+391)

我能够得到提升的查询工作,但我需要提升的结果按名称以字母顺序排列,那么非按名称提振也以字母顺序下的结果。我需要知道如何使用& sort =参数。 & sort = score%20desc,Name + asc不起作用。 我查了很多文档,但我仍然不知道这是否可能。任何帮助表示赞赏。谢谢!

Solr版本是6.0.1。我实际上使用SolrNet来与Solr进行交互,但是我认为如果我知道URL的& sort =参数值需要的话,我可以计算出SolrNet部分。

回答

0

与您的要求最接近的匹配是查询高程组件[1]。 在您的具体情况下,我会根据我的要求(按名称排序它们)对我的ID进行排序,然后将它们保存在elevate.xml中。

在查询时间,您可以使用“forceElevation”参数来强制提升,然后按名称对其余结果进行排序。

[1] https://cwiki.apache.org/confluence/display/solr/The+Query+Elevation+Component

+0

感谢您的回复,但创建文档不起作用,因为ID是动态的。 – zBomb

相关问题