首页 > 解决方案 > 为什么我收到 Lucene TopDocs totalHits 类型的错误

问题描述

我在运行 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、common analyzers、demo、queryparser)。

任何想法如何解决它?

标签: javavariablestypeslucene

解决方案


在 8.3 版totalHits中不再是 a long,它现在是一个TotalHits对象。实际数字存储在该value字段中,因此只需使用results.totalHits.value它就可以了。


推荐阅读