当前位置: 首页 > 知识库问答 >
问题:

如何在使用solrj将solr搜索响应转换为POJO时添加文档的搜索分数

松安民
2023-03-14

我正在使用SolrJ与Solr实例交互。我只想获得Solr为特定搜索查询返回的每个文档的搜索分数。如果我用@field注释在POJO中添加一个score字段,它在检索文档时完全可以工作。当我试图通过同一个POJO索引某些内容时,Solr返回一个错误,说明未知字段“score”,因为我在Solr模式中没有任何名为“score”的字段。但是,如果我在Solr模式中添加一个名为“score”的字段,它将开始返回默认值score而不是搜索score。请建议我如何解决这个问题。我不想一个接一个地遍历所有文档并将分数添加到POJO中。我正在执行以下步骤:

public void getSolrResult(String query) {
 SolrQuery query = new SolrQuery();
 query.set("q", query);
 query.set("fl", "*, score");
 QueryResponse queryResponse = solrjClient.query(query);
 solrResult = queryResponse.getBeans(PojoSolr.class);
}
Class PojoSolr {

 //Other fields
 @Field("score")
 private float searchScore;

 public float getSearchScore(){
  return searchScore;
 }
 public void setSearchScore(float score) {
  this.searchScore = score;
 }
}

共有1个答案

孔鸿哲
2023-03-14

我对这个主题进行了30分钟的搜索,只找到了这个SO帖子和:

  1. http://lucene.472066.n3.nabble.com/how-to-get-the-score-in-the-result-td493812.html
  2. http://lucene.472066.n3.nabble.com/tcorning-using-pojo-solrj-td3235016.html

在第二个中,建议从score中删除@field注释,但这不起作用。在这两个地方都没有提出有效的解决办法。

SolrDocumentList sdl = response.getResults();
List<T> documents = new LinkedList<>();
for (SolrDocument sd : sdl) {
    @SuppressWarnings("unchecked")
    T sb = (T) getClient().getBinder().getBean(<T class>, sd);
    sb.setScore((Float) sd.get("score"));
    documents.add(sb);
}
 类似资料:
  • 我有一个使用spring数据elasticsearch库的项目。我的系统返回了结果,但我想知道如何以域POJO类的形式获得结果。 我没有看到太多关于如何实现这一点的文档,但我不知道应该在谷歌上搜索什么正确的问题。 目前,我的代码是这样的,在我的测试中,它检索正确的结果,但不是作为POJO。 非常感谢您的帮助。

  • 需要一个解决方案来转换PDF文件,其中每个页面都是图像,页面可以包含文本,表格或两者的组合到可搜索的pdf。 我使用了ABBY FineReader Online,这项工作做得非常好,但我正在寻找一个可以通过Windows Python实现的解决方案 我已经做了详细的分析,下面的链接接近我想要的,但并不准确: 扫描图像/PDF到可搜索图像/PDF 它告诉我们首先要使用Ghost脚本将其转换为图像,

  • Beautiful Soup定义了很多搜索方法,这里着重介绍2个: find() 和 find_all() .其它方法的参数和用法类似,请读者举一反三. 再以“爱丽丝”文档作为例子: html_doc = """ <html><head><title>The Dormouse's story</title></head> <body> <p><b>The Dormouse's story</b><

  • Beautiful Soup定义了很多搜索方法,这里着重介绍2个: find() 和 find_all() .其它方法的参数和用法类似,请读者举一反三. 再以“爱丽丝”文档作为例子: html_doc = """ <html><head><title>The Dormouse's story</title></head> <body> <p class="title"><b>The Dormous

  • 本文向大家介绍solr范围搜索,包括了solr范围搜索的使用技巧和注意事项,需要的朋友参考一下 示例 age:[50 TO 60] 匹配年龄在50和60之间(包括50和60)的文档 age:{50 TO 60} 匹配年龄在50到60之间(不包括50到60)的文档 age:[* TO 60] 匹配年龄小于或等于60的文档 age:[50 TO *] 匹配年龄大于或等于50的文档 age:{50 to

  • 本文向大家介绍solr 布尔搜索,包括了solr 布尔搜索的使用技巧和注意事项,需要的朋友参考一下 示例 +firstname:john +surname:doe 匹配名字为john且姓氏为doe的文档。+前缀表示搜索词必须出现(AND)。 +firstname:john -surname:doe 匹配名字为john而名字不是doe的文档。-前缀表示不得出现搜索词(否)。 +firstname:j