/** * Add a complete document specified by all its term vectors. If document has no term vectors, add * value for tvx. * * @param vectors * @throws IOException */ public final void addAllDocVectors(TermFreqVector[] vectors) throws IOException { openDocument(); if (vectors != null) { for (int i = 0; i < vectors.length; i++) { boolean storePositionWithTermVector = false; boolean storeOffsetWithTermVector = false; try { TermPositionVector tpVector = (TermPositionVector) vectors[i]; if (tpVector.size() > 0 && tpVector.getTermPositions(0) != null) storePositionWithTermVector = true; if (tpVector.size() > 0 && tpVector.getOffsets(0) != null) storeOffsetWithTermVector = true; FieldInfo fieldInfo = fieldInfos.fieldInfo(tpVector.getField()); openField(fieldInfo.number, storePositionWithTermVector, storeOffsetWithTermVector); for (int j = 0; j < tpVector.size(); j++) addTermInternal( tpVector.getTerms()[j], tpVector.getTermFrequencies()[j], tpVector.getTermPositions(j), tpVector.getOffsets(j)); closeField(); } catch (ClassCastException ignore) { TermFreqVector tfVector = vectors[i]; FieldInfo fieldInfo = fieldInfos.fieldInfo(tfVector.getField()); openField(fieldInfo.number, storePositionWithTermVector, storeOffsetWithTermVector); for (int j = 0; j < tfVector.size(); j++) addTermInternal(tfVector.getTerms()[j], tfVector.getTermFrequencies()[j], null, null); closeField(); } } } closeDocument(); }