我在运行Lucene官方网站上的搜索演示示例代码时遇到问题。其中包含这部分代码:
TopDocs results = searcher.search(query, 5);
ScoreDoc[] hits = results.scoreDocs;
int numTotalHits = Math.toIntExact(results.totalHits);
我得到一个错误,说:
TotalHits不能转换为long。
如果我说对了
int numTotalHits = results.totalHits ;
我得到同样的错误说:
TotalHits不能转换为整数。
我使用的进口是:
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.index.DirectoryReader;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.queryparser.classic.QueryParser;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.ScoreDoc;
import org.apache.lucene.search.TopDocs;
import org.apache.lucene.store.FSDirectory;
我已经加载了程序所需的四个Jar文件(lucene.core,通用分析器,演示,queryparser)。
任何想法如何解决?
最佳答案
在版本8.3中, totalHits
不再是long
,现在是 TotalHits
对象。实际数字存储在该字段的 value
字段中,因此只需使用results.totalHits.value
即可。