我正在尝试利用http://svn.apache.org/repos/asf/lucene/dev/trunk/lucene/queries/src/java/org/apache/lucene/queries/mlt/MoreLikeThis 中的 retrieveTerms 方法。 java,我在下一行遇到了 NullPointerException
final Fields vectors = ir.getTermVectors(docNum);
我不完全知道为什么会这样,所以任何解释都会很棒。为了清楚起见,我将在下面发布整个方法,以及 ir 的早期声明。
private static IndexReader ir;
public static PriorityQueue<Object[]> retrieveTerms(int docNum) throws IOException {
Map<String, Int> termFreqMap = new HashMap<>();
for (String fieldName : fieldNames) {
final Fields vectors = ir.getTermVectors(docNum);
final Terms vector;
if (vectors != null) {
vector = vectors.terms(fieldName);
} else {
vector = null;
}
// field does not store term vector info
if (vector == null) {
Document d = ir.document(docNum);
StorableField[] fields = (StorableField[]) d.getFields(fieldName);
for (StorableField field : fields) {
final String stringValue = field.stringValue();
if (stringValue != null) {
addTermFrequencies(new StringReader(stringValue), termFreqMap, fieldName);
}
}
} else {
addTermFrequencies(termFreqMap, vector);
}
}
return createQueue(termFreqMap);
}