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);
}