/** Called from processDocument to index one field's point */ private void indexPoint(PerField fp, IndexableField field) throws IOException { int pointDataDimensionCount = field.fieldType().pointDataDimensionCount(); int pointIndexDimensionCount = field.fieldType().pointIndexDimensionCount(); int dimensionNumBytes = field.fieldType().pointNumBytes(); // Record dimensions for this field; this setter will throw IllegalArgExc if // the dimensions were already set to something different: if (fp.fieldInfo.getPointDataDimensionCount() == 0) { fieldInfos.globalFieldNumbers.setDimensions(fp.fieldInfo.number, fp.fieldInfo.name, pointDataDimensionCount, pointIndexDimensionCount, dimensionNumBytes); } fp.fieldInfo.setPointDimensions(pointDataDimensionCount, pointIndexDimensionCount, dimensionNumBytes); if (fp.pointValuesWriter == null) { fp.pointValuesWriter = new PointValuesWriter(docWriter, fp.fieldInfo); } fp.pointValuesWriter.addPackedValue(docState.docID, field.binaryValue()); }
private Info getInfo(String fieldName, IndexableFieldType fieldType) { if (frozen) { throw new IllegalArgumentException("Cannot call addField() when MemoryIndex is frozen"); } if (fieldName == null) { throw new IllegalArgumentException("fieldName must not be null"); } Info info = fields.get(fieldName); if (info == null) { fields.put(fieldName, info = new Info(createFieldInfo(fieldName, fields.size(), fieldType), byteBlockPool)); } if (fieldType.pointDataDimensionCount() != info.fieldInfo.getPointDataDimensionCount()) { if (fieldType.pointDataDimensionCount() > 0) info.fieldInfo.setPointDimensions(fieldType.pointDataDimensionCount(), fieldType.pointIndexDimensionCount(), fieldType.pointNumBytes()); } if (fieldType.docValuesType() != info.fieldInfo.getDocValuesType()) { if (fieldType.docValuesType() != DocValuesType.NONE) info.fieldInfo.setDocValuesType(fieldType.docValuesType()); } return info; }
/** Called from processDocument to index one field's point */ private void indexPoint(PerField fp, IndexableField field) throws IOException { int pointDataDimensionCount = field.fieldType().pointDataDimensionCount(); int pointIndexDimensionCount = field.fieldType().pointIndexDimensionCount(); int dimensionNumBytes = field.fieldType().pointNumBytes(); // Record dimensions for this field; this setter will throw IllegalArgExc if // the dimensions were already set to something different: if (fp.fieldInfo.getPointDataDimensionCount() == 0) { fieldInfos.globalFieldNumbers.setDimensions(fp.fieldInfo.number, fp.fieldInfo.name, pointDataDimensionCount, pointIndexDimensionCount, dimensionNumBytes); } fp.fieldInfo.setPointDimensions(pointDataDimensionCount, pointIndexDimensionCount, dimensionNumBytes); if (fp.pointValuesWriter == null) { fp.pointValuesWriter = new PointValuesWriter(docWriter, fp.fieldInfo); } fp.pointValuesWriter.addPackedValue(docState.docID, field.binaryValue()); }