gpt4 book ai didi

java - 使用多个字段对 solr 搜索结果进行排序 (solrj)

转载 作者:行者123 更新时间:2023-11-30 05:54:42 26 4
gpt4 key购买 nike

我需要根据两个因素对从 apache solr 返回的结果进行排序:

我们的系统中有三个实体由 solr 索引(组、项目和数据集),在结果中我希望首先显示数据集,然后是项目,然后是组;但我仍然希望它尊重每种类型的分数值。

因此,例如:结果将是

  1. 得分为 0.325 的数据集
  2. 得分为 0.282 的数据集
  3. 得分为 0.200 的数据集
  4. 得分为 0.298 的项目
  5. 得分为 0.186 的项目
  6. 得分为 0.360 的组
  7. 得分为 0.270 的组

我在 java 中执行此操作并使用 solrj 构建 solr 查询。问题是,当我尝试向 SolrQuery 对象添加 2 个排序字段时,它似乎只使用了其中一个。同样在 solr 文档中,没有任何内容可以说明实体类型,但是文档的 ID 以实体名称为前缀,所以我打算使用它。

如果有人对我如何实现这一目标有任何想法,我将不胜感激,因为我已经坚持了一段时间!

提前致谢,- jack 。

最佳答案

如果看起来 solrj 只使用其中一个排序字段,则可能您正在使用 SolrQuery#setSortField方法而不是 addSortField像这样:

solrQuery.addSortField("field1", ORDER.desc);
solrQuery.addSortField("field2", ORDER.desc);

为了按照您的描述对结果进行排序,更简洁的解决方案是向您的索引添加一个字段,其中包含一种基于实体类型的权重。然后您可以直接使用该字段进行排序:weight desc, score desc。在这样做之前,只需确保权重始终胜过 solr 分数,否则你应该努力影响 solr 分数。

关于java - 使用多个字段对 solr 搜索结果进行排序 (solrj),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9059620/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com