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 回答