0

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

}

4

1 に答える 1

0

愚かなことに、インデックス リーダーを正しく初期化していませんでした。そうすることでうまくいきました!

于 2014-07-09T21:57:55.547 に答える