Sorting 解释lucene在排序时的得分
在lucene索引中搜索时,某些文档的topDocs.scoreDocs中的值为空。 请向我解释topDocs.scoreDocs[]中的价值Sorting 解释lucene在排序时的得分,sorting,search,lucene,full-text-search,scoring,Sorting,Search,Lucene,Full Text Search,Scoring,在lucene索引中搜索时,某些文档的topDocs.scoreDocs中的值为空。 请向我解释topDocs.scoreDocs[]中的价值 SortField sortFieldObj = new SortField(sortField, SortField.STRING, sortOrder); Sort sort = new Sort(sortFieldObj); TopDocs topDocs = searcher.search(query, null, sizeNeeded, sor
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]
好吧,原因是你间接告诉Lucene忽略它的文档分数,使用你自己的排序顺序。评分用于带来topdocs,但您选择按照指定的排序顺序带来文档,因此NAN 如果您想在指定自己的排序顺序时强制Lucene给您评分,请使用另一种重载方法进行搜索:
search(Query query, Filter filter, int n,
Sort sort, boolean doDocScores, boolean doMaxScore)
如果doDocScores为真,则将计算并返回每次命中的分数。
如果doMaxScore为true,则将计算所有收集的点击的最大分数
所以您可以执行如下操作:searcher.search(query,null,sizeneded,sort,true,true) 好吧,原因是你间接告诉Lucene忽略它的文档分数,使用你自己的排序顺序。评分用于带来topdocs,但您选择按照指定的排序顺序带来文档,因此NAN 如果您想在指定自己的排序顺序时强制Lucene给您评分,请使用另一种重载方法进行搜索:
search(Query query, Filter filter, int n,
Sort sort, boolean doDocScores, boolean doMaxScore)
如果doDocScores为真,则将计算并返回每次命中的分数。
如果doMaxScore为true,则将计算所有收集的点击的最大分数
所以您可以执行如下操作:searcher.search(query,null,sizeneded,sort,true,true) 谢谢你的评论,阿伦..但我的问题是关于[]内的null和在[]内获取字段的值。我现在已经强调了问题中的scoreDocs是什么意思,当自己的排序顺序涉及到你的注释Arun时。但我的问题是关于[]内的null和[]内的字段值。我现在已经强调了,当涉及到自己的排序顺序时,scoreDocs的含义是什么