use*_*342 2 java sorting search solr solrj
我需要根据两个因素对从apache solr返回的结果进行排序:
我们的系统中有三个实体由solr(组,项目和数据集)索引,在结果中我希望首先显示数据集,然后是项目,然后是组; 但我仍然希望它尊重每种类型的得分值.
因此,例如:结果将是
我在java中这样做并使用solrj来构造solr查询.问题是,当我尝试向SolrQuery对象添加2个排序字段时,它似乎只使用其中一个.同样在solr文档中,没有任何内容可以说明实体类型,但是文档的ID以实体名称为前缀,所以我打算使用它.
如果有人对如何实现这一点有任何想法,我将非常感激,因为我已经坚持了一段时间了!
提前谢谢,-Jake.
如果看起来solrj只使用其中一个排序字段,那么你可能正在使用这个SolrQuery#setSortField方法,而不是addSortField像这样:
solrQuery.addSortField("field1", ORDER.desc);
solrQuery.addSortField("field2", ORDER.desc);
Run Code Online (Sandbox Code Playgroud)
为了按照您的描述对结果进行排序,更简洁的解决方案是在索引中添加一个字段,其中包含一种基于实体类型的权重.然后你可以直接使用该字段排序:weight desc, score desc.在此之前,只需确保权重总是胜过solr得分,否则你应该努力影响solr得分.
| 归档时间: |
|
| 查看次数: |
11311 次 |
| 最近记录: |