在排序时解释lucene中的得分

 zeng-abee 发布于 2023-02-11 12:21

在lucene索引中搜索时,我在topDocs.scoreDocs中为某些文档获取null值.请解释一下 topDocs.scoreDocs 中[]的值

SortField sortFieldObj = new SortField(sortField, SortField.STRING, sortOrder);
Sort sort = new Sort(sortFieldObj);
TopDocs topDocs = searcher.search(query, null, sizeNeeded, sort);
Document docNew = searcher.doc(topDocs.scoreDocs[i].doc);
System.out.println(topDocs.scoreDocs[i]);

输出:

doc = 2得分= NaN [ null ]

doc = 44得分= NaN [ testString ]

Arun.. 5

好吧,这种共鸣是间接的,你告诉Lucene忽略其文档分数并使用你自己的排序顺序.评分用于引入topdocs,但您选择以您指定的排序顺序引入文档,因此NAN.

如果您想在指定自己的排序顺序时强制Lucene为您提供分数,请使用另一个重载方法进行搜索:

search(Query query, Filter filter, int n,
                             Sort sort, boolean doDocScores, boolean doMaxScore)

如果doDocScores为true,则将计算并返回每个命中的分数.如果doMaxScore为true,则将计算所有收集的匹配的最大分数.

所以你会做类似的事情:searcher.search(query,null,sizeNeeded,sort,true,true);

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有