Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sorting 解释lucene在排序时的得分_Sorting_Search_Lucene_Full Text Search_Scoring - Fatal编程技术网

Sorting 解释lucene在排序时的得分

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

在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, 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的含义是什么